Problème de session avec un objet Soap

Problème de session avec un objet Soap - PHP - Programmation

Marsh Posté le 28-09-2009 à 13:23:37    

Bonjour à tous,
 
Alors... je suis en train de bosser sur du SOAP (extension php_soap) et j'obtiens le message suivant lorsque j'essaie d'utiliser un objet SOAP passé en session :

Code :
  1. supplied argument is not a valid sdl resource


 
Sur une page de connexion, j'initialise donc l'objet et l'instancie :

Code :
  1. $_SESSION["conn_telephonique"] = new connexions_telephonique();
  2. if ($_SESSION["conn_telephonique"]->login_reseller($_POST["t_pseudo"],$_POST["t_motdepasse"])){
  3. $_SESSION["conn_telephonique"]->id_session = $_SESSION["conn_telephonique"]->login_reseller($_POST["t_pseudo"],$_POST["t_motdepasse"]);
  4. redirect("index.php?p=membre" );
  5. }


 
Et sur une page de l'espace membre, je souhaiterai effectuer cela :

Code :
  1. $tab_customer = $_SESSION["conn_telephonique"]->get_customers();
  2. for($i=0; $i<count($tab_customer->{'customer_list'});$i++){
  3. $curr_customer = $tab_customer->{'customer_list'}[$i]->{'i_customer'};
  4. $tab_comptes = $conn_portaone->get_comptes($curr_customer);
  5. for($j=0; $j<count($tab_comptes ->{'account_list'});$j++){
  6.  echo $tab_comptes ->{'account_list'}[$j]."<br><br>";
  7. }
  8. }


 
Alors... après quelques lectures sur internet... j'ai essayé d'utiliser serialize et unserialize mais sans succès... dotn voici le code :
Page de connexion :

Code :
  1. $conn_telephonique = new connexions_telephonique();
  2. if ($conn_telephonique->login_reseller($_POST["t_pseudo"],$_POST["t_motdepasse"])){
  3. $conn_telephonique->id_session = $conn_telephonique->login_reseller($_POST["t_pseudo"],$_POST["t_motdepasse"]);
  4.         serialize($conn_telephonique);
  5.         redirect("index.php?p=membre" );
  6. }


 
Page de l'espace membre :

Code :
  1. unserialize($conn_telephonique);
  2. $tab_customer = $conn_telephonique->get_customers();
  3. for($i=0; $i<count($tab_customer->{'customer_list'});$i++){
  4. $curr_customer = $tab_customer->{'customer_list'}[$i]->{'i_customer'};
  5. $tab_comptes = $conn_portaone->get_comptes($curr_customer);
  6. for($j=0; $j<count($tab_comptes ->{'account_list'});$j++){
  7.  echo $tab_comptes ->{'account_list'}[$j]."<br><br>";
  8. }
  9. }


 
Et là, j'ai un message comme quoi $conn_telephonique n'est pas définie !!!
 
Si vous avez vu une erreur dans mon code, ou si vous avez une piste... n'hésitez pas ;)
 
Merci d'avance.


---------------
------------------------------
Reply

Marsh Posté le 28-09-2009 à 13:23:37   

Reply

Marsh Posté le 29-09-2009 à 10:19:39    

en même temps, si :
1) tu ne serializes pas $conn_telephonique dans $_SESSION['conn_telephonique']
2) que dans l'autre script, tu fais pas appel à $_SESSION['conn_telephonique'] pour unserializer
3) tu ne stockes pas le résultat de la déserialisation dans une variable, genre $conn_telephonique
 
ça risque pas de marcher :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 29-09-2009 à 10:48:52    

Heu... j'ai pas tout saisi là ??? :D


---------------
------------------------------
Reply

Marsh Posté le 29-09-2009 à 14:05:30    

1) faut stocker le résultat de la sérialization dans une variable de session si tu veux espérer la retrouver dans une autre page ou un autre script
2) $conn_telephonique n'existe pas, faut la récupérer depuis la variable de session créée dans le précédent script
3) tu unserializes mais faudrait voir à stocker le résultat dans une variable en vue de l'utiliser après dans le script :/
 
La programmation, c'est pas magique rien ne se fait tout seul.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 29-09-2009 à 14:18:58    

Pas besoin à priori d'utiliser serialize, unserialize, vu que :

Citation :

ces objets seront linéarisés automatiquement avec la fonction serialize() à la fin de chaque script, et relus avec unserialize() au début du prochain script


cf session.serialize_handler
 
Par contre pour que la récupération d'un objet stocké dans une session fonctionne bien, il faut que php connaisse la classe de l'objet avant le session_start.
Il faut donc inclure le fichier de définition de classe avant le session_start.

Reply

Marsh Posté le 29-09-2009 à 14:33:00    

rufo a écrit :

1) faut stocker le résultat de la sérialization dans une variable de session si tu veux espérer la retrouver dans une autre page ou un autre script
2) $conn_telephonique n'existe pas, faut la récupérer depuis la variable de session créée dans le précédent script
3) tu unserializes mais faudrait voir à stocker le résultat dans une variable en vue de l'utiliser après dans le script :/
 
La programmation, c'est pas magique rien ne se fait tout seul.


 
Hummm ouais c'est la dernière version de mon code après moult tests pour trouver un moyen de faire fonctionner serialize et unserialize...
 
Je suis passé par ce genre d'étape entre deux (sans succès) :
Page de connexion :

Code :
  1. $conn_telephonique = new connexions_telephonique();
  2. if ($conn_telephonique->login_reseller($_POST["t_pseudo"],$_POST["t_motdepasse"])){
  3.    $conn_telephonique->id_session = $conn_telephonique->login_reseller($_POST["t_pseudo"],$_POST["t_motdepasse"]);
  4.  
  5.    $my_conn = serialize($conn_telephonique);
  6.    redirect("index.php?p=membre" );
  7. }


 
Page de l'espace membre :

Code :
  1. $conn_telephonique = unserialize($my_conn);
  2. $tab_customer = $conn_telephonique->get_customers();
  3. for($i=0; $i<count($tab_customer->{'customer_list'});$i++){
  4.    $curr_customer = $tab_customer->{'customer_list'}[$i]->{'i_customer'};
  5.    $tab_comptes = $conn_portaone->get_comptes($curr_customer);
  6.    for($j=0; $j<count($tab_comptes ->{'account_list'});$j++){
  7.       echo $tab_comptes ->{'account_list'}[$j]."<br><br>";
  8.    }
  9. }


---------------
------------------------------
Reply

Marsh Posté le 29-09-2009 à 14:37:02    

soju a écrit :

Pas besoin à priori d'utiliser serialize, unserialize, vu que :

Citation :

ces objets seront linéarisés automatiquement avec la fonction serialize() à la fin de chaque script, et relus avec unserialize() au début du prochain script


cf session.serialize_handler
 
Par contre pour que la récupération d'un objet stocké dans une session fonctionne bien, il faut que php connaisse la classe de l'objet avant le session_start.
Il faut donc inclure le fichier de définition de classe avant le session_start.


 
Alors... voici comment se construit mon script...
 - Fichier index.php qui inclue un fichier config.php
 - config.php inclue mes fichiers de classes BDD + connexions_telephonique + fonctions_standards
 - session_start() se trouve dans un fichier login.php juste avant d'instancier l'objet $conn_telephonique = new connexions_telephonique();
 
Cela parait correct, non ?


---------------
------------------------------
Reply

Marsh Posté le 06-10-2009 à 09:50:24    

Hello les gens...
 
Juste pour vous dire que je galère toujours autant avec ce souci de SOAP...  
 
Si z'avez une idée miraculeuse, je suis preneur :)


---------------
------------------------------
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed