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

  FORUM HardWare.fr
  Programmation
  PHP

  Realiser son propre système de session.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Realiser son propre système de session.

n°329162
Hermes le ​Messager
Breton Quiétiste
Posté le 11-03-2003 à 03:19:01  profilanswer
 

Pourquoi ? Ben déjà parce que les sessions PHP sont incompatible avec les normes du W3C (problème de input hidden juste après le form) --> Bug de PHP toujours pas corrigé.
 
Quelle est d'après vous la meilleure solution ?
 
J'ai pensé pour ma part créer un identifiant unique pour la première connexion qui se pérénise grace à un passage de cet ID via un input hidden (mais bien placé). --> stockage dans une table et effacement après une certaine durée.
 
Qu'en pensez-vous et comment feriez-vous ?

mood
Publicité
Posté le 11-03-2003 à 03:19:01  profilanswer
 

n°329266
ethernal
Chercheur de vérité...
Posté le 11-03-2003 à 10:19:26  profilanswer
 

hum  :heink:  
depuis qd les sessions créent-elles un tag input hidden ??
Tu as un article là dessus ? je n'ai jamais rien vu de tel.
C'est quoi cet input hidden ?
 
Le numéro de session est passé par un cookie ou par l'url.


---------------
...oups kernel error...
n°329281
El_gringo
Posté le 11-03-2003 à 10:26:09  profilanswer
 

...encore un gros boulet !

n°329288
ethernal
Chercheur de vérité...
Posté le 11-03-2003 à 10:31:16  profilanswer
 

ok ok., je vois mieux :
http://bugs.php.net/bug.php?id=13472

Citation :

When enabling trans-id, php rewrites the forms to add an input
type=hidden. the problem is that, in xhtml strict, inputs have to be in
a fieldset element. when a fieldset element is already here, php still
writes the input type=hidden before the fieldset, causing the page to be
invalid html.


 
je n'ai rien dis.


---------------
...oups kernel error...
n°329297
Hermes le ​Messager
Breton Quiétiste
Posté le 11-03-2003 à 10:44:06  profilanswer
 

El_gringo a écrit :

...encore un gros boulet !


C qui le gros boulet ??  :heink:  :heink:  
 
Calmes toi un peu tu veux... Le best of n'est pas loin.  :heink:

n°329299
Hermes le ​Messager
Breton Quiétiste
Posté le 11-03-2003 à 10:46:16  profilanswer
 

Bien, maintenant que mes dire ont été vérifiés (humour inside  ;) ), Est-ce que qqu parmi vous à l'expérience d'avoir fait son propre système de session ? Et si oui, comment a-t-il procédé (juste les grandes lignes).
 
Merci.

n°329300
Core 666
Posté le 11-03-2003 à 10:47:40  profilanswer
 

Hermes le Messager a écrit :


[...]
Qu'en pensez-vous et comment feriez-vous ?


J'en pense que c'est beauvoup de travail pour pas grand chose :p Ce bug sera corrigé dans une prochaine version de PHP a n'en pas douter. Alors faire un système de session maison juste pour avoir un beau "Valid xxx document" sur un validateur externe c'est un peu cher payé niveau temps.


Message édité par Core 666 le 11-03-2003 à 10:47:57
n°329302
Core 666
Posté le 11-03-2003 à 10:49:32  profilanswer
 

Et pour réponse à ta deuxième question, un système avec un INPUT TYPE est particulièrement lourd et peu secure. Quant à passer la variable de session par l'URL, c'est vraiment bof d'un point de vue référencement (Google ignore les pages sur lesquelles se balade un PHPSESSID) :(

n°329304
Hermes le ​Messager
Breton Quiétiste
Posté le 11-03-2003 à 10:50:22  profilanswer
 

Core 666 a écrit :


J'en pense que c'est beauvoup de travail pour pas grand chose :p Ce bug sera corrigé dans une prochaine version de PHP a n'en pas douter. Alors faire un système de session maison juste pour avoir un beau "Valid xxx document" sur un validateur externe c'est un peu cher payé niveau temps.


 
C tout à fait fait vrai. Mais en fait, je trouve cela intéressant également de voir comment cela pourrait marcher. Autrefois avec le php3 et les sessions absentes, il fallait bien se débrouiller. On apprend toujours plus quand on fait tout soi-même que lorsqu'on utilise des trucs tout prêts, même si dans ce cas précis, il est évident qu'il est 1000 fois plus pratique d'utiliser les sessions php4

n°329305
ethernal
Chercheur de vérité...
Posté le 11-03-2003 à 10:51:17  profilanswer
 

dans le pire des cas, vire le trans-id :
ini_set('session.use_trans_sid', 0);
mais je suppose que ça empêche une session si l'utilisateur refuse les cookies...
 
Combiné à cela, tu peux faire une fonction qui génère l'url

Code :
  1. function getUrl($monurl){
  2.   if (strpos($monurl,'?')!==false){
  3.     return $monurl.'&'.ini_get('set_session_name').'='.session_id();
  4.   }
  5.   else{
  6.     return $monurl.'?'.ini_get('set_session_name').'='.session_id();
  7.   }
  8. }


ça te permettra de continuer à utiliser les session php qui sont bcp plus efficaces (rapides) sans avoir ce prob


---------------
...oups kernel error...
mood
Publicité
Posté le 11-03-2003 à 10:51:17  profilanswer
 

n°329309
Hermes le ​Messager
Breton Quiétiste
Posté le 11-03-2003 à 10:53:25  profilanswer
 

Core 666 a écrit :

Et pour réponse à ta deuxième question, un système avec un INPUT TYPE est particulièrement lourd et peu secure. Quant à passer la variable de session par l'URL, c'est vraiment bof d'un point de vue référencement (Google ignore les pages sur lesquelles se balade un PHPSESSID) :(


 
Pourquoi peu sécure ? C'est ce que fait php pourtant.  [:totozzz]  
 
Si l'identifiant est unique et qu'il s'autodétruit après usage, je ne vois pas où est le problème.
Lors de sa création, l'ID peut être stocké dans une table avec une validirté limitée. En fait, c'est à peu de chose près le système des sessions de php4.
 
Je voulais savoir quelle stratégie a été mise en oeuvre par ceux d'entre vous qui ont bcp utilisé php3. (En fait, j'ai débuté php direct avec php4 d'où ma question.)

n°329311
Hermes le ​Messager
Breton Quiétiste
Posté le 11-03-2003 à 10:55:32  profilanswer
 

ethernal a écrit :

dans le pire des cas, vire le trans-id :
ini_set('session.use_trans_sid', 0);
mais je suppose que ça empêche une session si l'utilisateur refuse les cookies...
 
Combiné à cela, tu peux faire une fonction qui génère l'url

Code :
  1. function getUrl($monurl){
  2.   if (strpos($monurl,'?')!==false){
  3.     return $monurl.'&'.ini_get('set_session_name').'='.session_id();
  4.   }
  5.   else{
  6.     return $monurl.'?'.ini_get('set_session_name').'='.session_id();
  7.   }
  8. }


ça te permettra de continuer à utiliser les session php qui sont bcp plus efficaces (rapides) sans avoir ce prob


 
Pas con, je vais essyer. Merci déjà pour cette piste.

n°329317
ethernal
Chercheur de vérité...
Posté le 11-03-2003 à 10:58:16  profilanswer
 

c'est la seule solution que j'ai trouvé pour ce prob de trans-id et les urls générées en javascript.
Pour faire encore mieux, tu pourrais regarder dans cette fonction si un cookie de session existe.  Si pas tu génrères l'url, sinon tu retournes l'url sans modification.

Code :
  1. if (isSet($HTTP_COOKIE_VARS[ini_get('set_session_name')])){
  2. return $monurl;
  3. }
  4. else{
  5. ...
  6. }


Message édité par ethernal le 11-03-2003 à 11:00:08

---------------
...oups kernel error...
n°329319
Hermes le ​Messager
Breton Quiétiste
Posté le 11-03-2003 à 11:00:06  profilanswer
 

ethernal a écrit :

c'est la seule solution que j'ai trouvé pour ce prob de trans-id et les urls générées en javascript.
Pour faire encore mieux, tu pourrais regarder dans cette fonction si un cookie de session existe.  Si pas tu génrères l'url, sinon tu retournes l'url sans modification.


 
Yep, c'est ce que j'étais justement en train de me dire... Je vais tester ça de suite. Je suis en train de faire un forum XHTML 1.1 compliant des pieds à la tête, et ça me fait un peu chier de pas pouvoir être valide alors que je n'y suis pour rien.  :fou:

n°329321
ethernal
Chercheur de vérité...
Posté le 11-03-2003 à 11:01:44  profilanswer
 

sinon, je suis en train de faire une classe de session compatible php3-php4, mais bon c'est un peu du travail inutile...


---------------
...oups kernel error...
n°329330
Hermes le ​Messager
Breton Quiétiste
Posté le 11-03-2003 à 11:05:19  profilanswer
 

ethernal a écrit :

sinon, je suis en train de faire une classe de session compatible php3-php4, mais bon c'est un peu du travail inutile...


 
Merci en tout cas pour tes réponses. Je me met au boulot (même si je crois que concernant le input type="hidden" dans le cas d'un formulaire, aucune solution satisfaisante n'a jusqu'à présent été trouvée (du moins sur la page des rapports de bugs de php). Il faut que je vois ça de plus près.

n°329331
ethernal
Chercheur de vérité...
Posté le 11-03-2003 à 11:05:45  profilanswer
 

en plus concis :

Code :
  1. function getUrl($monurl){
  2.   if (isSet($HTTP_COOKIE_VARS[ini_get('set_session_name')])){
  3.     return $monurl;
  4.   }
  5.   else{
  6.    return $monurl
  7.           .( (strpos($monurl,'?')!==false)? '&' : '?' )
  8.           .ini_get('set_session_name').'='.session_id();
  9.   }
  10. }


---------------
...oups kernel error...
n°329333
Hermes le ​Messager
Breton Quiétiste
Posté le 11-03-2003 à 11:06:53  profilanswer
 

ethernal a écrit :

en plus concis :

Code :
  1. function getUrl($monurl){
  2.   if (isSet($HTTP_COOKIE_VARS[ini_get('set_session_name')])){
  3.     return $monurl;
  4.   }
  5.   else{
  6.    return $monurl
  7.           .( (strpos($monurl,'?')!==false)? '&' : '?' )
  8.           .ini_get('set_session_name').'='.session_id();
  9.   }
  10. }




 
 :)  

n°329345
Hermes le ​Messager
Breton Quiétiste
Posté le 11-03-2003 à 11:20:50  profilanswer
 

Bon, dans mon cas, je peux déjà oublier le ini_set('session.use_trans_sid', 0);
 
 
Il est pas pris en compte par le serveur. (Hébergement mutualisé).
 
 :fou:  
 
Pour le bug des URL, j'ai déjà résolu le problème (ancien topic là dessus), avec : ini_set('arg_separator.output','& am p ;';);
 
Par contre pour le problème des formulaires et du input type="hidden", il n'y a effectivement aucune solution dans mon cas.  
C'est rageant quand même l'absence de toute solution viable.  :fou:


Message édité par Hermes le Messager le 11-03-2003 à 11:21:14
n°329365
ethernal
Chercheur de vérité...
Posté le 11-03-2003 à 11:36:49  profilanswer
 

peut-être que si, mais ça coute cher en temps d'exécution...
la fonction register_shutdown_function("mafonction()" ) permet d'exécuter du code après tout le reste (voir aussi auto-append()).
 
si tu stockes tout ce qui est destiné à être envoyé au client dans une variable, tu peux parser cette variable pour corriger le bug du formulaire.
ob_gz_handler(); (??) //non envoi des données
 
echo 'blabla';
 
$content= ob_...;
 
function parserlapage(){
 global $content;
 str_replace('...','..', $content);
 echo $content;
}
 
register_shutdown_function("parserlapage()" );
 
j'ai comme un doute : la transformation est faites à la volée lors de l'echo je pense, il faut voir si les fonctions ob_ permettent de l'intercepter pour le renvoyer corrigé après.
(j'espère que tu m'as suivi)


---------------
...oups kernel error...
n°329371
Hermes le ​Messager
Breton Quiétiste
Posté le 11-03-2003 à 11:42:19  profilanswer
 

Oui, j'ai bien suivi, je vais essayer de ce pas.  :)  Encore merci. Si ça marche, il faudra poster dans le rapport de bug de php, parce que là bas, personne a trouvé de soluces.  :D
 
Edit : Mais bon, ce sera de toutes façons trop lourd pour un forum :D
 
Edit2 : Spa possible, parce qu'on peut plus rien afficher :
 

Citation :

Etant donné qu'aucun affichage n'est possible depuis la fonction func, vous ne pouvez pas y mettre d'informations de débuggage par print() ou echo()!


Message édité par Hermes le Messager le 11-03-2003 à 11:49:12
n°329402
El_gringo
Posté le 11-03-2003 à 12:17:14  profilanswer
 

Hermes le Messager a écrit :


C qui le gros boulet ??  :heink:  :heink:  
 
Calmes toi un peu tu veux... Le best of n'est pas loin.  :heink:  


 
G dit ça parce que tu m'énerve en général, à guetter les boulets partout, et toujours chercher à fouttre des trucs dans les topics foireux. J'trouve que tu fais beaucoup le malin, t'as l'air de te penser supérieur à pas mal de monde, alors que, finalement, t'as pas grand chose d'extraordinaire.
Point, g dit ce que j'avais à dire, sur ce, je te propose une seule réponse, histoire qu'on parte pas ds une discution qui mène à rien.

n°329409
Hermes le ​Messager
Breton Quiétiste
Posté le 11-03-2003 à 12:25:45  profilanswer
 

El_gringo a écrit :


 
G dit ça parce que tu m'énerve en général, à guetter les boulets partout, et toujours chercher à fouttre des trucs dans les topics foireux. J'trouve que tu fais beaucoup le malin, t'as l'air de te penser supérieur à pas mal de monde, alors que, finalement, t'as pas grand chose d'extraordinaire.
Point, g dit ce que j'avais à dire, sur ce, je te propose une seule réponse, histoire qu'on parte pas ds une discution qui mène à rien.


 
Si je t'énerve, les messages privés, c pas pour les chiens. Et avant de traiter de boulet qqu, tu devrais t'assurer un minimum du bien fondé d'une question (ce que je cherche à faire). Si ma tête ne te revient pas, spa mon problème...
 
Edit : En plus, je vois pas où j'ai pu avoir un problème avec toi. La recherche ne donne rien, au contraire même...  
 
http://forum.hardware.fr/forum2.ph [...] h=&subcat=
 
Alors, mon conseil reste le même : Va calmer tes petits nerfs fragiles sur qqu d'autre...  [:totozzz]


Message édité par Hermes le Messager le 11-03-2003 à 12:31:54
n°329413
ethernal
Chercheur de vérité...
Posté le 11-03-2003 à 12:35:50  profilanswer
 

Hermes le Messager a écrit :


Edit : Mais bon, ce sera de toutes façons trop lourd pour un forum :D
 
Edit2 : Spa possible, parce qu'on peut plus rien afficher :
 

Citation :

Etant donné qu'aucun affichage n'est possible depuis la fonction func, vous ne pouvez pas y mettre d'informations de débuggage par print() ou echo()!




 
oui c'est lourd... :(
 
et si tu n'utilises pas register_shutdown_function
ob_...
echo 'balbla';
$content= ob_...
echo str_replace('','',$content);
 
qu'est-ce que ça dit ?


---------------
...oups kernel error...
n°329431
Schimz
Bouge pas, meurs, ressuscite !
Posté le 11-03-2003 à 13:04:35  profilanswer
 

j'ai utilisé ça pour du PHP3 + Oracle (à la base c'est du MySQL). y'a 2-3 trucs à debugger mais ça marche trés bien.
 
http://developpeur.journaldunet.co [...] ions.shtml


Message édité par Schimz le 11-03-2003 à 13:05:27
n°329447
Hermes le ​Messager
Breton Quiétiste
Posté le 11-03-2003 à 13:27:56  profilanswer
 

Merci bien à tous les deux.
 
Je me rend compte qu'il faut que j'utilise les sessions php4 en l'état, et tant pis pour le bug de php, en espérant qu'il soit rapidement corrigé.  :jap:  
 
Les solutions alternatives me feraient perdre un des principaux objectifs du forum que je suis en train de faire --> performance.
 

n°329471
El_gringo
Posté le 11-03-2003 à 13:47:07  profilanswer
 

Hermes le Messager a écrit :


 
Si je t'énerve, les messages privés, c pas pour les chiens. Et avant de traiter de boulet qqu, tu devrais t'assurer un minimum du bien fondé d'une question (ce que je cherche à faire). Si ma tête ne te revient pas, spa mon problème...
 
Edit : En plus, je vois pas où j'ai pu avoir un problème avec toi. La recherche ne donne rien, au contraire même...  
 
http://forum.hardware.fr/forum2.ph [...] h=&subcat=
 
Alors, mon conseil reste le même : Va calmer tes petits nerfs fragiles sur qqu d'autre...  [:totozzz]  


 
Tient, j'y avais pas pensé : la suite en PV...

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Realiser son propre système de session.

 

Sujets relatifs
asp : suivit de session sans cookyles session en php qqs explication svp
variables de session, a consommer avec modération?Taille maximal d'une trame dans une session TCP
[PHP] problème de sécurité -important-> session ID bizarretéexiste-t-il des script pour gerer un systeme de news????
[php] meme chose que remote_addr mais pour la session en coursMessage de warning à l'execution d'un session_start().
[C] Commande pour savoir sous quel systeme on est ?Executer une commande système?
Plus de sujets relatifs à : Realiser son propre système de session.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR