IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[POO] passer un objet de page en page avec php5


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 65
    Points : 37
    Points
    37
    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

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Bonjour,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    urlencode(serialize($Objet) ;
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 65
    Points : 37
    Points
    37
    Par défaut
    Merci
    Je vais essayer et je te tiens au courant

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Et les sessions justement ? En quoi ne conviendraient-elles pas ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 65
    Points : 37
    Points
    37
    Par défaut
    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???

  6. #6
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    teste l'existence de $Objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  7. #7
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 65
    Points : 37
    Points
    37
    Par défaut
    Je viens de tester et l'objet n'a pas été passé

  8. #8
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Comment passes tu l'objet de page en page ?
    formulaire, session ou url ?

    Tu peux montrer le code ?

  9. #9
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 65
    Points : 37
    Points
    37
    Par défaut
    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

  10. #10
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    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.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 65
    Points : 37
    Points
    37
    Par défaut
    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

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 95
    Points : 71
    Points
    71
    Par défaut
    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 ?

  13. #13
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    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

  14. #14
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    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.

  15. #15
    Membre averti

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Points : 319
    Points
    319
    Par défaut
    Il y a beaucoup plus simple pour passer des objets de page en page.... utilise les variables de SESSION pour stocker :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  16. #16
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    magic_quotes_gpc activée =

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

    Trop fort Julp

  17. #17
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 65
    Points : 37
    Points
    37
    Par défaut
    Merci à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POO] Passer un objet d'une page à l'autre
    Par Sh4dow49 dans le forum Langage
    Réponses: 9
    Dernier message: 27/10/2008, 19h27
  2. Passer l'objet connection d'une page à une autre
    Par libuma dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/05/2008, 12h44
  3. Réponses: 4
    Dernier message: 20/06/2007, 17h34
  4. Réponses: 7
    Dernier message: 25/02/2007, 04h26
  5. [POO] Passer un objet HTML en argument.
    Par defacta dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/12/2004, 10h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo