Realiser son propre système de session. - PHP - Programmation
Marsh Posté le 11-03-2003 à 10:19:26
hum
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.
Marsh Posté le 11-03-2003 à 10:31:16
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 |
je n'ai rien dis.
Marsh Posté le 11-03-2003 à 10:44:06
El_gringo a écrit : ...encore un gros boulet ! |
C qui le gros boulet ??
Calmes toi un peu tu veux... Le best of n'est pas loin.
Marsh Posté le 11-03-2003 à 10:46:16
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.
Marsh Posté le 11-03-2003 à 10:47:40
Hermes le Messager a écrit : |
J'en pense que c'est beauvoup de travail pour pas grand chose 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.
Marsh Posté le 11-03-2003 à 10:49:32
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)
Marsh Posté le 11-03-2003 à 10:50:22
Core 666 a écrit : |
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
Marsh Posté le 11-03-2003 à 10:51:17
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 :
|
ça te permettra de continuer à utiliser les session php qui sont bcp plus efficaces (rapides) sans avoir ce prob
Marsh Posté le 11-03-2003 à 10:53:25
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.
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.)
Marsh Posté le 11-03-2003 à 10:55:32
ethernal a écrit : dans le pire des cas, vire le trans-id :
|
Pas con, je vais essyer. Merci déjà pour cette piste.
Marsh Posté le 11-03-2003 à 10:58:16
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 :
|
Marsh Posté le 11-03-2003 à 11:00:06
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. |
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.
Marsh Posté le 11-03-2003 à 11:01:44
sinon, je suis en train de faire une classe de session compatible php3-php4, mais bon c'est un peu du travail inutile...
Marsh Posté le 11-03-2003 à 11:05:19
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.
Marsh Posté le 11-03-2003 à 11:05:45
en plus concis :
Code :
|
Marsh Posté le 11-03-2003 à 11:06:53
ethernal a écrit : en plus concis :
|
Marsh Posté le 11-03-2003 à 11:20:50
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é).
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.
Marsh Posté le 11-03-2003 à 11:36:49
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)
Marsh Posté le 11-03-2003 à 11:42:19
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.
Edit : Mais bon, ce sera de toutes façons trop lourd pour un forum
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()! |
Marsh Posté le 11-03-2003 à 12:17:14
Hermes le Messager 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.
Marsh Posté le 11-03-2003 à 12:25:45
El_gringo 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...
Marsh Posté le 11-03-2003 à 12:35:50
Hermes le Messager a écrit :
|
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 ?
Marsh Posté le 11-03-2003 à 13:04:35
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
Marsh Posté le 11-03-2003 à 13:27:56
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é.
Les solutions alternatives me feraient perdre un des principaux objectifs du forum que je suis en train de faire --> performance.
Marsh Posté le 11-03-2003 à 13:47:07
Hermes le Messager a écrit : |
Tient, j'y avais pas pensé : la suite en PV...
Marsh Posté le 11-03-2003 à 03:19:01
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 ?