begin process at 2010 03 17 21:18:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Class et Objet ( POO )

 > GARDER LES PARAMÈTRES D'UNE CLASS À TRAVERS PLUSIEURS PAGES.

GARDER LES PARAMÈTRES D'UNE CLASS À TRAVERS PLUSIEURS PAGES.


 Description

J'ai créé une class permettant de créer une authentification. Mais problème, comment garder ses paramètres à travers plusieurs pages. J'ai donc créé une autre class, permettant de 'sérializer' une class passée en paramètre, et de garder cette 'sérialization' dans une session.
Grace à cette class, il est possible de garder une autre class à travers plusieurs pages, très facilement.

Source

  • /* file:class_seria.php */
  • <?php
  • class seria {
  • var $seria;
  • var $unseria;
  • var $result;
  • function seria($class,$nom_session) {
  • @session_start();
  • if($class===FALSE) {
  • $this->unseria = unserialize($_SESSION[$nom_session.'seria']);
  • $this->result = 'unseria';
  • }
  • else {
  • $this->seria = serialize($class);
  • $_SESSION[$nom_session.'seria'] = $this->seria;
  • $this->result = 'seria';
  • }
  • }
  • function detruire($nom_session) {
  • if($_SESSION[$nom_session.'seria'])
  • unset($_SESSION[$nom_session.'seria']);
  • }
  • }
  • ?>
  • /* file:class_exemple.php */
  • <?php
  • class class_exemple {
  • var $variable;
  • }
  • ?>
  • /* file:index.php */
  • <?php
  • include('class_exemple.php');
  • $class_exemple = new class_exemple;
  • $class_exemple->variable = 'test';
  • include('class_seria.php');
  • $seria = new seria($class_exemple,'class_exemple'); //Sérialization de la class class_exemple, et stockage dans une variable
  • ?>
  • <a href="page2.php">Page 2</a>
  • /* file:page2.php */
  • <?php
  • include('class_exemple.php');
  • include('class_seria.php');
  • $seria = new seria(FALSE,'class_exemple'); //Désérialization de la class class_exemple.
  • if($seria->result=='unseria')
  • $class_exemple = $seria->unseria;
  • echo $class_exemple->variable; //Affiche test
  • ?>
/* file:class_seria.php */
<?php
class seria {
    var $seria;
    var $unseria;
    var $result;
    function seria($class,$nom_session) {
        @session_start();
        if($class===FALSE) {
            $this->unseria = unserialize($_SESSION[$nom_session.'seria']);
            $this->result = 'unseria';
        }
        else {
            $this->seria = serialize($class);
            $_SESSION[$nom_session.'seria'] = $this->seria;
            $this->result = 'seria';
        }
    }
    function detruire($nom_session) {
        if($_SESSION[$nom_session.'seria'])
            unset($_SESSION[$nom_session.'seria']);
    }
        
}
?>

/* file:class_exemple.php */
<?php
class class_exemple {
    var $variable;
}
?>

/* file:index.php */

<?php
include('class_exemple.php');
$class_exemple = new class_exemple;
$class_exemple->variable = 'test';

include('class_seria.php');
$seria = new seria($class_exemple,'class_exemple'); //Sérialization de la class class_exemple, et stockage dans une variable
?>
<a href="page2.php">Page 2</a>

/* file:page2.php */

<?php
include('class_exemple.php');
include('class_seria.php');

$seria = new seria(FALSE,'class_exemple'); //Désérialization de la class class_exemple.
if($seria->result=='unseria')
    $class_exemple = $seria->unseria;

echo $class_exemple->variable; //Affiche test
?>

 Conclusion

Cette class fonctionne je crois avec n'importe qu'elle class, mais il faut faire attention aux class qui se connectent à des bases de données. Il doit falloir fermer puis réouvrir les connexions.
J'accueillerais volontier vos commentaires, positifs ou négatifs.
A bientôt


 Sources de la même categorie

Source avec Zip CLASSE TABLE HTML DYNAMIQUE par LDDL
Source avec Zip GÉNÉRATEUR DE COUCHE DAO POUR SITE WEB À PARTIR D'UNE BASE D... par alexfool
Source avec Zip [PHP5.2] CLASSE PDO par hornetbzz
Source avec Zip POO - LOGGING PACKAGE par Waredan
POO - OBJECT CLASS par Waredan

 Sources en rapport avec celle ci

Source avec Zip ESPACE MEMBRE SIMPLE V1.0 par Florian54700
RÉCUPÉRATION DES OBJETS STOCKÉS DANS UNE SESSION par jsgorre
CLASS USER POUR FORUM VBULLETIN [PHP5] par coucou747
Source avec Zip CLASSE "REMPLAÇANT" LES SESSIONS PHP (AVEC VÉRIFICATION DE L... par thomvaill
Source avec Zip [PHP5] XML OBJECT SERIALIZER/UNSERIALIZER par malalam

Commentaires et avis

Commentaire de malalam le 25/05/2006 09:58:48 administrateur CS

Hello,

pour ma part, ce sera plutôt négatif, désolé. En fait, l'idée est bonne, tu découvres la linéarisation, c'est très bien :-)
Seulement, ta classe ne sert à rien. Pourquoi est-ce que j'instancierais un autre objet, qui ne va pas durer en plus puisqu'à priori, je vais changer de page...pour le réinstancier sur la nouvelle page, et délinéariser mon 1er objet ?
Instancier un objet, c'est déjà coûteux, alors en instancier 2...
Bref : $_SESSION['maClasse'] = serialize ($oObj); suffit pour linéariser. Et $oObj = unserialize ($_SESSION['maClasse']); suffit pour délinéariser.

De plus, linéariser toute un objet, crois-moi, c'est couteux! Alors il est nécessaire de gérer cette linéarisation de toutes façons au sein de ton objet, avec ___sleep et ___wakeup (c'est valable pour la fermeture des connexions à une bdd d'ailleurs).

Et finalement, tu te rendras compte qu'il vaut parfois mieux sauvegarder dans une session uniquement les propriétés de l'objet dont tu auras besoin, plutôt que de le linéariser, et de le réinstancier en lui affectant ces propriétés sur la nouvelle page : c'est souvent beaucoup plus rapide.

Commentaire de FhX le 25/05/2006 10:12:48

Ouais d'ailleurs c'est bien dommage pour le moment :/

Commentaire de massacr le 25/05/2006 10:41:57

D'accord je comprend. En gros, on peut faire la même chose beaucoup plus simplement et rapidement.
Merci pour vos commentaires, très constructifs.
A bientôt
PS : "Ouais d'ailleurs c'est bien dommage pour le moment :/", que veux tu dire par là ?

Commentaire de malalam le 25/05/2006 11:10:56 administrateur CS

Il veut dire que c'est dommage qu'il soit si coûteux en terme de performance de linéariser un objet :-)

Commentaire de FhX le 25/05/2006 14:08:54

Vi, parce que ca serait bien plus utile de linéariser une bonne fois pour toute plutot que de faire du get/set à chaque instanciation.

Commentaire de coockiesch le 28/05/2006 22:02:10

Salut!
Tit comment en cours de route: bizarre de un session_start dans ton constructeur et pas en haut de page...

@++

R@f

Commentaire de massacr le 28/05/2006 23:08:28

Je l'ai mis dans le constructeur, pour qu'on oublie pas de le déclarer. Ca fait toujours une ligne de moins...

Commentaire de doclyv le 05/06/2006 00:37:05

Hi!

Je n'ai pas encore testé ce code, je ne peux pas donner mon avis pour l'instant. Mais, présentement, j'ai un problème avec un formulaire espace-membre. Le problème, c'est que le client doit passer par Paypal pour valider sa transaction. Avant qu'il se dirige vers Paypal, j'aimerais qu'il complète un formulaire d'inscription et s'il n'est pas identifié, il ne peut avoir accès au contenu payant. Mon formulaire d'inscription fonctionne très bien, mais le problème, lorsque le client est authentifié, la page Paypal ne s'affiche pas pour compléter la transaction. Pouvez-vous me dire comment faire pour que le client complète mon formulaire d'inscription ou authentifié s'il était déjà inscrit, et tout de suite après qu'il se dirige vers Paypal. Si vous avez une réponse, n'hésitez pas à me l'envoyer par infosofa@yahoo.ca
Merci pour votre aide!
Doclyv...

Commentaire de massacr le 05/06/2006 12:48:18

Direction le forum, car ta question n'a rien a voir avec ma source.
De plus, qu'elle est la liaison de ton site avec paypal, methode GET, POST ???

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

sessions [ par eax ] salut!j'utilise les session sur mon site et j'ai mis un truc du genre session_register("blabla");j'aimerais savoir comment récupérer (sous forme de ta pb avec les sessions et cookie [ par nikos283 ] Bonjour,j'ai lu sur plusieurs site que les session enregistraient leur id dans un cookie. L'autre solution est de le passer par l'url.Mon proble est l détruire variable de sessions [ par professeursidi ] Salut,voila dans mon site avec base de données j'utilise les sessions pour garder mes variables mais pti pb :Si je choisi par exemple de consulter un Plus d'info technique sur les sessions ... [ par amosc ] amosSalut tt le monde,J ai une question technique : voila ...Je sais que les cookies s'enregistre chez le client, mais les session ou sont elle enregi sessions [ par fofolle ] J'arrive a avoir mes variables que sur une pagealors que je les commence toutes parsession_start();et je fais gaffe a mes include no sucidecependant l Question sur les sessions [ par zzzzzz ] Salut J'aimerai faire un log auto avec les sessions mais on m'a dit que par default les sessions etait limité a 15 minutes. En fait j'aimerai pouvoir sessions [ par miss07 ] Bonjour, je viens de commencer à apprendre PHP et je voudrai savoir si avec une session on peut faire une vérification d'un mot de passe et d'un login Question sur les sessions [ par zzzzzz ] Salutj'aimerai simplement savoir si il est possible d'avoir toutes les variables sessions utilisé par l'enssemble des visiteurs.Par exemple imaginons Probleme avec serialize et unserialize [ par matou82 ] J'ai un objet que je serialize et passe en paramètre dans l'url d'un popup.Dans ce popup je le unserialize. Il s'agit d'un objet possédant une fonctio Question sur sessions [ par must ] Bonjour,des questions sur les sessionsQuand quelqu'un viens sur une page,et q'une session est ouverte,on peut incrementer une variable pour un compteu


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales