probleme sessions et objets php4.2.0 et 4.3.3

le paumé
Invité n'ayant pas de compte PHPfrance

15 mars 2005, 01:24

voila mon codage :
class.php
<?php
class bob
{
var $test=1024;
function show()
{
echo$this->test;
}
}
?>

page1.php
<?php
include "class.php";
session_start();
$essai=new bob();
session_register("essai");
?>
<html>
<head></head>
<body>
<a href ="page2.php">Suite</a>
</body></html>

page2.php
<?php
include "class.php";
session_start();
$essai->show();
?>

voila ne cherchez pas l'utilité de ce codage car il en a pas si ce n'est m'aider à comprendre comment on récupère un objet d'une page à l'autre par les sessions mais voila aussi simple soit il ce codage ne fonctionne que sous le serveur apache gerant le php 4.2.0 et pas du tout avec du 4.3.3 ou est le probleme ? serait ce du codage n'étant tout simplement plus valable avec le 4.3.3 ou est ce une histoire de configuration du serveur apache ? pour info j'utilise easyphp 1.7 avec php 4.3.3

le paumé
Invité n'ayant pas de compte PHPfrance

15 mars 2005, 01:29

je suis tellement paumé que j'en oublie les bonnes manieres

MERCI d'avance à toutes personne qui me donnera ne serait que la plus petite aide
MERCI

Mammouth du PHP | 859 Messages

15 mars 2005, 11:18

page1.php
<?php
include ("class.php");
session_start();
$essai=new bob();
$_SESSION['essai'] = $essai;
?>
Et comme ça c'est mieux?
Modifié en dernier par flitox le 09 avr. 2005, 00:09, modifié 1 fois.

Petit nouveau ! | 9 Messages

15 mars 2005, 23:17

je resumerai mon attitude par pourquoi faire simple alors quon peut faire compliquer oui en effet en lisant les tutos je me suis embeter avec les serialize puis plus tard avec session_register pour me rendre compte que now il suffit d'enregistrer un objet comme on enregistre nimporte quelle variable par les sessions néamoins une chose m'échappe encore now mon code est sur un serveur apache sur linux avec php 4.3.8 est mon coup de session_register marche à nouveau !?!?
je resume 4.2.0 ca marche 4.3.3 ca marche pas et 4.3.8 ca marche à nouveau :oops: ](*,) .Heuresement pour moi je vais rester sur php4.3.8. Merci flitox ton codage et beaucoup plus simple et logique de plus j'ai lu par ci par là que cétait pas conseillé d'utiliser session_register par contre je sais pas pourquoi si quelqun à la réponse ? et, euh, qu'est ce que dois encore rajouter à mon beau roman, ca y est j'ai trouver !!!!

MERCI FLITOX

Fabozor
Invité n'ayant pas de compte PHPfrance

08 avr. 2005, 23:41

Alors voilà j'ai à peu près le même problème mais je ne trouve pas la raison. Le script ci-dessous fonctionne sur mon PC mais ne fonctionne plus chez mon hébergeur (qui utilise pourtant PHP5 aussi).
Après différents test, en enlevant les serialize et unserialize, en ajoutant des addslashes et stripslashes j'avoue ne pas comprend, rien ne fonctionne !
Y a t'il un bogue quelque part dans PHP5 ?? Comment fonctionne vraiment ces deux fonctions serialize et unserialize.
J'ai pu effectuer plusieurs tests sur différentes config PHP5, windows ou Linux et des fois ça marche des fois ça marche pas !! C'est magique ?? :shock:
Enfin aidez moi à comprendre ;-)
Merci !

Sur ma bécane Windows, config PHP5 avec WAMP dernière version j'utilise à peu près ceci :

//PAGE 1
session_start();
$objet = new objet();
$_SESSION['objet'] = serialize($objet);


//PAGE 2
session_start();
if(isset($_SESSION['objet']))
$objet = unserialize($objet);

Fabozor bis
Invité n'ayant pas de compte PHPfrance

09 avr. 2005, 01:42

Bon après quelques problèmes avec la sérialisation et quelques prises de têtes je viens de trouver une solution. Voici un bout de code PHP que je vais commenter après :
<?php
//PAGE_1.PHP

require("function_autoload.php");
session_start();

$objet = new objet();
$objet->add_elements();
echo $objet->nb_elements;

$_SESSION['mon_objet'] = $objet;

unset($objet);
?>

<?php
//PAGE_2.PHP

require("function_autoload.php");
session_start();

$objet = $_SESSION['mon_objet'];

$_SESSION['mon_objet'] = $objet;
$objet->add_elements();
echo $objet->nb_elements;

unset($objet);
?>

Le but de tout ceci bien évidement est de passer un objet en session pour le conserver lors de la navigation dans le site.
En fait il n'est pas necessaire d'utiliser serialize et unserialize avec PHP5. Cela ne marche même pas du tout. Mais il faudrait faire de nombreux test !

Seule contrainte a respecter à priori c'est la présence de la fonction __autoload avant le session_start().
Ici ma fonction __autoload est dans un fichier que j'inclus (require("function_autoload.php")).

Dans le cas contraire l'objet n'est pas correctement retrouvé.
Attention mais j'ai cru comprendre que si le serveur est configurer avec SESSION_START en automatique cela peut-être problématique. Des essais sont encore à faire.

En espérant que cela pourra vous aider.
A+

;-)