2008-10-13 5 views
0

Hoi!Formes et pas de cookies - façon élégante de soumettre des formulaires

J'ai un formulaire que je souhaite soumettre, mais je dois ajouter le PHPSESSID, car certains clients n'autorisent pas les cookies.

Il existe plusieurs fonctions javascript sur ma page qui affiche une liste d'utilisateurs (rechercher, trier, ouvrir les détails), la page est générée par PHP.

Maintenant, je cherche une manière élégante d'inclure le PHPSESSID dans chaque soumission de mon formulaire - ceci doit être fait sur plusieurs pages, donc j'espère une solution facile. L'ajout de PHPSESSID à l'action ou dans un champ masqué ne fonctionne pas correctement.

Ou ce problème est-il localisé ailleurs? Il se pourrait que le client soit derrière un pare-feu trop restrictif ou quelque chose comme ça. Toutes les idées (en particulier avec des solutions ;-)) dans cette direction sont également les bienvenues!

Exemple de code (très simplifié):

<form name="userlist" method="POST" action="./myuserlist.php"> 
[...some formfields and stuff..] 
</form> 

<script> 
//one example function, there are several on my page 
function next_page() 
{ 
    //set some hidden field to get the next page 
    document.forms[0].submit(); 
} 
</script> 

Merci à l'avance!

Bye, Basty

[EDIT] session.use_trans_sid est définie sur true

Répondre

2

L'utilisation d'un champ caché devrait fonctionner - si elle ne puis pas session.use_trans_sid est probablement hors de votre php.ini

Vous pouvez l'ajouter à un champ caché puis dire

if (!empty($_POST['PHPSESSID'])) 
    session_start($_POST['PHPSESSID']); 
else 
    session_start(); 
+0

Hoi! "champ caché devrait fonctionner" - la clé ici est "devrait";) Malheureusement, il ne fonctionne pas. Mais je vais essayer de démarrer la session avec le paramètre POST. – bastiandoeen

2

Quand vous dites que le mettre dans un champ caché ne fonctionne pas, pouvez-vous élaborer sur ce qui ne fonctionne pas à ce sujet?

Lorsque vous êtes confronté à une situation où chaque (ou plusieurs) formulaires soumis nécessite le traitement d'informations d'état, un champ type d'entrée = masqué est la méthode canonique pour le faire.

Juste deviner dans l'obscurité ici. Faites-vous quelque chose comme une entrée avec style = "display: none" ou quelque chose comme ça? Si c'est le cas, remplacez-le par un vrai < input type = "hidden"> tag. Beaucoup de navigateurs ne soumettront pas les champs de formulaire qui sont cachés via display: none. Un autre coup dans le noir: ajoutez-vous le formulaire caché à la page via JavaScript? Comme un appel de foo.innerHTML? Encore une fois, certains navigateurs ne gèrent pas correctement les champs de formulaire ajoutés à une page de cette façon. Vous devez soit avoir le sessionid là depuis le début, soit réécrire votre méthode ajax qui gère les données renvoyées par le serveur pour insérer le champ de saisie via la manipulation dom plutôt que innerHTML.

Questions connexes