Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1866 connectés 

 


Dernière réponse
Sujet : [php]Comment passer un tableau associatif d'une page à une autre?
verdy_p Effectivement en cas de dépassement de longueur (URL trop longue), la seule façon de préserver les données d'une page à l'autre, sans utiliser un stockage sur le serveur, ni créer de session et sans générer de cookie non plus, est de renvoyer les données sérialisées dans le corps de la page HTML, dans la valeur de champs <INPUT TYPE="hidden" NAME="mes_datas" VALUE="..........."> stockés dans un formulaire <FORM METHOD="POST">.
Pour générer les données, le mieux reste alors de sérialiser les données du tableau, et de les insérer dans la champ VALUE ci-dessus...
Maintenant c'est un peu lourd et lent à la navigation.
Le mieux reste de gérer une session temporaire sur le serveur (avec un délai d'environ 15 minutes), où on stocke les données dans un fichier ou une table SQL, et la seule chose qu'on doit transmettre dans la page c'est un identifiant vers le numéro de session, qui tient facilement soit dans une URL, soit dans une variable d'un formulaire GET ou POST, voire dans un cookie temporaire non stocké (ce cookie ne doit pas contenir de date de fin de validité, de sorte qu'il reste lié uniquement à la session de l'utilisateur sur son navigateur), et on doit pour des raisons de confidentialités entre utilisateurs vérifier le cookie avec l'utilisateur identifié (autant que possible)...
Sur un site où l'utilisateur ne s'identifie pas, il vaut mieux essayer de générer un identifiant temporaire basé sur à la fois son adresse IP et un générateur aléatoire, et l'heure de génération (attention: l'adresse IP ne suffit plus maintenant et n'est plus fiable pour différencier les utilisateurs, à cause des utilisateurs de plus en plus nombreux qui passent par des proxies, et des routeurs NAT, chez eux ou chez leur fournisseur). Ne pas utiliser non plus le numéro de port de l'utilisateur: il n'est pas constant au cours de sa navigation, et le numéro peut être repris assez rapidement par un autre utilisateur passant par le même proxy (donc vu à la même adresse IP). Franchement la meilleure façon d'identifier un utilisateur est de créer une session temporaire sur le serveur, et transmettre le numéro de session dans un cookie non stocké vers le client. Les cookies non stockés ont l'énorme avantage de ne jamais afficher de fenêtre d'avertissement chez l'utilisateur car ils sont sûrs (au niveau protection de la vie privée) et perdent leur utilité dès qu'on quitte le site ou ferme le navigateur (ce qui purge son historique où ils sont conservés temporairement avec les données en cache des pages visitées).

 

[edit]--Message édité par verdy_p--[/edit]


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
verdy_p Effectivement en cas de dépassement de longueur (URL trop longue), la seule façon de préserver les données d'une page à l'autre, sans utiliser un stockage sur le serveur, ni créer de session et sans générer de cookie non plus, est de renvoyer les données sérialisées dans le corps de la page HTML, dans la valeur de champs <INPUT TYPE="hidden" NAME="mes_datas" VALUE="..........."> stockés dans un formulaire <FORM METHOD="POST">.
Pour générer les données, le mieux reste alors de sérialiser les données du tableau, et de les insérer dans la champ VALUE ci-dessus...
Maintenant c'est un peu lourd et lent à la navigation.
Le mieux reste de gérer une session temporaire sur le serveur (avec un délai d'environ 15 minutes), où on stocke les données dans un fichier ou une table SQL, et la seule chose qu'on doit transmettre dans la page c'est un identifiant vers le numéro de session, qui tient facilement soit dans une URL, soit dans une variable d'un formulaire GET ou POST, voire dans un cookie temporaire non stocké (ce cookie ne doit pas contenir de date de fin de validité, de sorte qu'il reste lié uniquement à la session de l'utilisateur sur son navigateur), et on doit pour des raisons de confidentialités entre utilisateurs vérifier le cookie avec l'utilisateur identifié (autant que possible)...
Sur un site où l'utilisateur ne s'identifie pas, il vaut mieux essayer de générer un identifiant temporaire basé sur à la fois son adresse IP et un générateur aléatoire, et l'heure de génération (attention: l'adresse IP ne suffit plus maintenant et n'est plus fiable pour différencier les utilisateurs, à cause des utilisateurs de plus en plus nombreux qui passent par des proxies, et des routeurs NAT, chez eux ou chez leur fournisseur). Ne pas utiliser non plus le numéro de port de l'utilisateur: il n'est pas constant au cours de sa navigation, et le numéro peut être repris assez rapidement par un autre utilisateur passant par le même proxy (donc vu à la même adresse IP). Franchement la meilleure façon d'identifier un utilisateur est de créer une session temporaire sur le serveur, et transmettre le numéro de session dans un cookie non stocké vers le client. Les cookies non stockés ont l'énorme avantage de ne jamais afficher de fenêtre d'avertissement chez l'utilisateur car ils sont sûrs (au niveau protection de la vie privée) et perdent leur utilité dès qu'on quitte le site ou ferme le navigateur (ce qui purge son historique où ils sont conservés temporairement avec les données en cache des pages visitées).

 

[edit]--Message édité par verdy_p--[/edit]

philou_a7 Si c'est vraiment trop long, il va falloir passer par un fichier sauvé sur le serveur qui contiendra tes données....
Je vois que ca comme methode, désolé.
cybermds en perl tu peux linker un table de hsah à une base de donnée qui se save tu seul et qui se load tu seule,  tu dois bien pouvoir le faire en PHP,  avec SDBD ou DBASE.
zop

endemyon a écrit a écrit :

ça marche pas ! sniff La ligne d'adresse générée est trop longue et est coupée dans le navigateur.
Une autre idée?




 
Utilise la méthode POST

endemyon ça marche pas ! sniff La ligne d'adresse générée est trop longue et est coupée dans le navigateur.
Une autre idée?
maverick2001 va voir les fonctions "serialize" et "unserialize" dans la doc php, tu devrais pouvoir trouver ton bonheur
Library t'as ka le passer champ par champ (message.php?champ1=$message[champ1]&$champ2= .............;)
ca va etre long, mais ca doit pouvoir se faire
endemyon Tout est dans la question.
j'ai essayé <a href mapage.php3?tableau=$montableau>mon lien</a>
mais ca marche pas.

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)