classes php5

classes php5 - PHP - Programmation

Marsh Posté le 11-06-2006 à 23:49:06    

Bonjour,
dans mon programme je gère des données sur des personnes à l'aide de classes.
J'ai une interface où on peut notemment modifier ces données, où on peut créer un compte pour un nouvel utilisateur, etc...
Seulement comment garder l'instance de classe pdt tout le temps que la personne est sur mon site ?
 
Dois-je à chaque fois sauvegarder ttes les données sur ma base mysql puis recréer l'objet sur la page suivante ?
 
Je trouve ça dommage, par ex en java l'objet est gardé en mémoire le long de la vie du programme où il peut être passé par référence etc. alors qu'en php il a une durée de vie de quelques micro secondes :p ce qui est pas du tout pratique et me demanderait bcp de ressources au niveau de ma base alors que je voulais créer un objet et enregistrer toutes les modifs faites sur le site sur ses données par l'utilisateur une fois que celui-ci se déconnecte.
 
Comment faire cela ?
 
Merci d'avance

Reply

Marsh Posté le 11-06-2006 à 23:49:06   

Reply

Marsh Posté le 12-06-2006 à 00:17:58    

Tu n'a pas le choix. Base de donnée ou session (fichier) ou les deux.
Le truc étant de découper tes objets en ne chargeant à partir de la BDD que les données nécessaires à l'affichage de chaque page. (uiliser l'objet PHP comme cache de la base de donnée)


Message édité par nargy le 12-06-2006 à 00:19:16
Reply

Marsh Posté le 12-06-2006 à 00:20:51    

Utilise les sessions et/ou la serialisation...

Reply

Marsh Posté le 12-06-2006 à 00:26:27    

lecourshtml a écrit :

Je trouve ça dommage, par ex en java l'objet est gardé en mémoire le long de la vie du programme où il peut être passé par référence etc. alors qu'en php il a une durée de vie de quelques micro secondes :p


Ca n'a aucun rapport, quand tu fais du web en java il se passe strictement la même chose (c'est d'ailleurs pour ça que les gens ont inventé des machins genre Hibernate), le "problème" (si on peut appeler ça un problème) c'est que le Web est stateless de manière inhérente et que deux appels de pages sont totalement indépendants, ça n'a aucun rapport avec le langage utilisé.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 12-06-2006 à 12:17:49    

Bonjour,
merci beaucoup pour vos réponses.
Masklinn -> je parlais de java pour les programmes, je n'ai jamais utilisé java pour le web, mais merci beaucoup pour cet éclaircissement :)Faudrai que j'essai un de ces jours de passer un peu de java dans mes prog :p
 
Sinon je pense que les sessions pourraient en effet être intéressantes, je remercie bcp baceroth et nargy.
Si j'ai bien compris il faut que je m'intéresse à la commande serialize() qui permet d'enregistrer dans une session toutes les données d'un objet.
Cependant cet objet vit-il encore, ou il y a quand même un appel à __destruct() à la fin de chaque page ?
 
Merci encore pour vos réponses :)

Reply

Marsh Posté le 12-06-2006 à 12:25:23    

lecourshtml a écrit :

Si j'ai bien compris il faut que je m'intéresse à la commande serialize() qui permet d'enregistrer dans une session toutes les données d'un objet.
Cependant cet objet vit-il encore, ou il y a quand même un appel à __destruct() à la fin de chaque page ?


Une copie de l'objet est placée en session, donc l'objet originel est détruit mais tu peux récupérer sa copie dans ta session (gaffe par contre ça prend de la place en session)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 12-06-2006 à 12:29:47    

ok merci beaucoup Masklinn pour tes réponses  :)  
Je me lance dans la serialisation alors :)

Reply

Marsh Posté le 12-06-2006 à 15:06:18    

Et si on te vole ta session on récupère tous tes infos :)

Reply

Marsh Posté le 12-06-2006 à 18:17:26    

nan
un numéro de session se fait avec un nombre aléatoire à durée limitée. HttpS si besoin est.

Reply

Marsh Posté le 12-06-2006 à 19:19:08    

ben si on te vole la session (on récup le fichier) ben ça fait quoi ?

Reply

Marsh Posté le 12-06-2006 à 19:19:08   

Reply

Marsh Posté le 12-06-2006 à 19:54:40    

kk... alors petite explication.
 
Une session, est un concept plutôt qu'un truc vraiment concret. Ça consiste à associer un identifiant à un internaute, puis d'utiliser cet identifiant pour stocker et retrouver les données de l'internaute.
 
L'identifiant doit être connu à un moment donné à la fois du navigateur et du serveur. Il y a plusieurs méthodes pour transbahuter un identifiant sur le net, et notamment: les paramètres GET, POST, et les cookies. Ces derniers sont le plus souvent utilisés dans les sessions car ils peuvent être gardés par le navigateur pendant une période déterminée, indépendamment de ce que le navigateur est ouvert ou fermé.
 
Il y a différents types d'identifiants, pouvant être les simple pseudonymes des l'internautes, un numéro d'ordre, ou à des fins de sécurité un numéro aléatoire qu'il est donc difficile de retrouver.
 
A un identifiant donné, sont associées des données. Ces données peuvent être transbahutées par le net via des paramètres ou des cookies. Celà n'étant pas très sécurisé et nécessitant plus de bande passante. Les méta-informations concernant un identifiant sont donc très souvent stockés sur le serveur, puis envoyés parcimonieusement vers le navigateur lorsque c'est nécessaire, souvent après un traitement préalable du serveur. Les deux façon principales pour stocker ces méta-informations sont: les fichiers et les bases de données. Les sessions PHP utilisent par défaut des fichiers dans lesquels ils sérializent (transforment en chaîne de caractère) les données. PHP est flexible pour pouvoir accepter de stocker dans une base de donnée, mais le code de stockage est laissé au programmeur.
 
Avec un système de session sécurisé, il n'y a donc que l'identifiant qui est transbahuté sur le net de façon claire. De plus cet identifiant a une durée de vie limitée afin qu'une tentative de deviner l'identifiant aléatoire par essais succesifs soit quasi impossible.
 
Pour rendre le système encore plus sûr afin qu'un numéro de session ne soit pas volé par un sniffeur réseau à l'écoute de la connexion, on utilise le protocole crypté HTTPS, au moins lorsque l'identifiant est créé / recréé, c'est à dire en général sur la page de login ou la page d'accueil. Parmi les information de session peuvent être enregistré l'adresse IP de l'ordinateur client, qui est un numéro d'identification unique sur internet, et qui permet de vérifier à chaque page que l'identifiant a bien été créé pour la même machine cliente qui requiert cette page. Les tentatives de fraude sont renvoyées vers la page de login, l'adresse IP peut être répertoriée et bloquée, le login de l'utilisateur invalidé.
 
PS: j'ai vraiment du temps à perdre aujourd'hui.

Reply

Marsh Posté le 12-06-2006 à 20:19:16    

Trop merci ça va servir à certain mais certainement pas à moi :D
 
Si tu veux un script vraiment sécure tu vérifies tout le temps la corrélation entre la session et l'utilisateur

Reply

Marsh Posté le 12-06-2006 à 20:38:39    

Je@nb a écrit :

Si tu veux un script vraiment sécure tu vérifies tout le temps la corrélation entre la session et l'utilisateur


 
ca commence a m interresser la :D
 
DRAPAL !

Reply

Sujets relatifs:

Leave a Replay

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