Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/09/2007, 10h54   #1
Invité régulier
 
Inscription : janvier 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 65
Points : 8
Points : 8
Par défaut [POO] passer un objet de page en page avec php5

Salut à tous

je voudrais savoir s'il est possible de passer un objet de page en page...
un peu comme font les sessions mais ça sera d'objet (en l'occurence un objet de la classe formulaire) au lieu d'être une variable...

Je vous remercie d'avance pour tte proposition

Bonne journée
skyangel20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 11h04   #2
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
Bonjour,

Je ne sais pas si il y a une autre solution mais j'utilise :

Code :
urlencode(serialize($Objet) ;
puis
Code :
1
2
 
$Obj = unserialize(stripslashes(urldecode($_POST['Objet'])));
Note que l'objet est passé par un champ de formulaire mais ce doit être la même chose en GET ou SESSION
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 11h05   #3
Invité régulier
 
Inscription : janvier 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 65
Points : 8
Points : 8
Merci
Je vais essayer et je te tiens au courant
skyangel20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 11h19   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Et les sessions justement ? En quoi ne conviendraient-elles pas ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 11h19   #5
Invité régulier
 
Inscription : janvier 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 65
Points : 8
Points : 8
Salut N1bus,

Je viens d'essayer mais dans la page où j'ai récupére l'objet en question, j'ai ce messahe d'erreur :

Undefined index: Objet

Que faire???
skyangel20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 11h22   #6
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
teste l'existence de $Objet :
Code :
1
2
3
4
5
 
include("ta_classe.php");
 
if(isset($_POST['Objet'])){
$Obj = unserialize(stripslashes(urldecode($_POST['Objet'])));}
Vérifies que tu inclues bien ta classe aussi (avant de récupérer l'objet)

Attention : j'ai mis $Objet comme nom de variable mais tu mets ce que tu veux
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 11h32   #7
Invité régulier
 
Inscription : janvier 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 65
Points : 8
Points : 8
Je viens de tester et l'objet n'a pas été passé
skyangel20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 11h34   #8
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
Comment passes tu l'objet de page en page ?
formulaire, session ou url ?

Tu peux montrer le code ?
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 11h47   #9
Invité régulier
 
Inscription : janvier 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 65
Points : 8
Points : 8
Je passe l'objet par url et finalement ça marche l'objet est bel et bien passé

Sauf que j'ai cette erreur :
Catchable fatal error: Object of class __PHP_Incomplete_Class could not be converted to string

Je t'explique mieux ce que je suis en train de faire en éspérant que tu pourras encore m'aider :
dans la 1ére page je crée un objet form grace à une classe formulaire, je veux passer la structure de cet objet à la 2éme page pour créer des champs dans ce même formulaire (crée dans la page 1)...

Penses tu que ce soit possible, j'ai besoin de travailler sur le même formulaire dans la page 2

Merci bp pour ta patience
skyangel20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 11h52   #10
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
Si tu as un form dans la première page, passe le directement via un champ hidden, ça évitera l'url à rallonge. (ça marche pour moi)

Pour ton erreur,

As tu bien déclaré ou inclus ta classe dans la deuxieme page ? On dirait qu'il en manque des bouts... ou alors le passage via l'url est incomplet.
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 11h54   #11
Invité régulier
 
Inscription : janvier 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 65
Points : 8
Points : 8
C'est fait, en fait j'avais oublier d'inclure ma classe..

et ça MARCHE!!!!

Merci BEAUCOUP BEAUCOUP pour ton aide précieuse, je te souhaite une très bonne journée
skyangel20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 11h57   #12
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 95
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 95
Points : 34
Points : 34
C'est peut etre une question bete mais pourquoi faire un stripslashes ?
J'ai toujours fais des serialize($objet) et unserialize($objet) et ca a toujours marché...

Peut etre est ce une question de securite ?
Guillomme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 12h00   #13
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
Pour le stripslashes() : euh ... je ne sais plus . J'ai du avoir un problème de slashes

Citation:
Envoyé par skyangel20
C'est fait, en fait j'avais oublier d'inclure ma classe..
Ben oui, mais faut lire un peu les réponses, hein
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 12h08   #14
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par N1bus
Pour le stripslashes() : euh ... je ne sais plus . J'ai du avoir un problème de slashes
Fonctionnalité magic_quotes_gpc activée, je suppose. C'est la seule raison les justifiant et où stripslashes est nécessaire.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 12h12   #15
Membre confirmé
 
Inscription : mai 2006
Messages : 196
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 196
Points : 278
Points : 278
Il y a beaucoup plus simple pour passer des objets de page en page.... utilise les variables de SESSION pour stocker :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
session_start();
 
//Il ne faut pas oublier d'inclure la classe de l'objet sérialisé
include 'monobjet.php';
 
if ( isset( $_SESSION['monObjet'] ) )
{
   $monObjet = unserialize($_SESSION['monObjet']);
   unset($_SESSION['monObjet']);
}
?>
Si tu veut tu peut automatiser la sérialisation dans la fonction __destruct de ton objet, cette fonction est appellée avant la destruction d'un objet :
Code :
1
2
3
4
5
6
<?php
public function __destruct()
{
   $_SESSION['monObjet'] = serialize( $this );
}
?>
Car le problème si tu passe des objets à travers l'URL, sa veut dire que tu donne les noms de variables et fonction à l'utilisateur voir des mots de passe, même crypté en base64, un serveur local permettera de décrypté, et en MD5 ta intérêt à être devin pour récupérer les valeurs . Avec les sessions, impossible d'y avoir accès pour l'utilisateur.
meliandah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 12h13   #16
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
magic_quotes_gpc activée =

C'était le cas sur mon serveur local et j'avais laissé stripslashes() ...

Trop fort Julp
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2007, 13h51   #17
Invité régulier
 
Inscription : janvier 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 65
Points : 8
Points : 8
Merci à tous
skyangel20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h13.


 
 
 
 
Partenaires

Hébergement Web