|
|
|
|
Yoan, le dimanche 28 octobre 2007 à 12:30:31Configuration: Linux Firefox 2.0.0.6
|
Salut,
que penserais tu d'utiliser les sessions php. tu y stockes une variable soumission. Par défaut, soumisison n'existe pas. et ca donnerait qqch du genre : tu valides si $_SESSIONS['soumission'] existe_pas
alors : envoi du mail ; autre actions; $_SESSIONS['soumission'] = "soumis" ;
sinon
($_SESSIONS['soumission'] existe (= soumis)...)
alors je sors de la boucle car le formulaire a deja été soumis
Forcément... ©brupala : Le méchant nounours ©Moi |
|
Salut,
A voui, je vais aller voir de ce côté-là, je ne connais pas. Merci. L'urgent est fait, l'impossible est en cours, Pour les miracles, prévoir un délai ... |
|
Re,
J'ai essayé : //Création signature MD5
$signnc=$nom.$prenom.$adresse;
$sign=md5($signnc);
// Session
session_start();
if($_SESSION['md5']==$sign)
{
}
else
{
$_SESSION['md5']=$sign;
mail(....);
....
....
}
Et ça a l'air de marcher : http://cjoint.com/data/lboQO2HGLH_sess.png Néanmoins : 1- si la signature (md5) est identique à $sign, je voudrais qu'il ne se passe rien .... à part terminer l'exécution du script lancé lors du premier clic sur "valider". Or ici (et même problème avec break ou exit), si je clique plusieurs fois sur "valider", je me retrouve avec une page blanche, chose qui n'arrive pas si je ne clique qu'une fois. Est-ce que le 'nouveau' script lancé par le second clic sur "valider" a "annulé" l'exécution du premier script ? A mon sens oui, puisqu'ils ont le même nom de fichier. Comment pourrais_je éviter cela ? 2- Je voudrais comprendre un peu plus les choses : Qu'est-ce que c'est, au final, que la session ? Est-ce que, (graphiquement, voir lien ci-dessus) elle correspond au dossier ayant pour nom le domaine ? Dans ce cas-là une session n'expire jamais alors ? Ce sont les variables stockées à l'intérieur qui expirent ? Comment se fait-il que la variable (que j'ai appelé ici md5) ne soit nommée nulle part ? Correspond-elle au fichier PHPSESSID ? N'est-ce pas plutôt la session ? Enfin, je m'embrouille :-/ Merci :-)) L'urgent est fait, l'impossible est en cours, Pour les miracles, prévoir un délai ... |
|
hello,
Pour le 1) je n'ai pas de solution à te proposer. Une question cependant : est ce que le traitement du formulaire est géré par la page formulaire elle même ? Si oui, essayes (a tout hasard) de voir si en gérant l'execution par une autre page (form.html &rarr method post ou get, action="exectionForm.php") Je suppose, peut être à tord, que dès lors que le formulaire sera soumis, la page form ne sera plus accessible par l'utilisateur, donc plus de risque de cliquer une seconde fois. Pour le 2) une session est créée par le script. c'est en qq sorte un fichier temporaire contenant des informations que tu lui a fournit, et géré par le serveur. celle ci est conservée tant que l'utilisateur ne fermes pas son navigateur (si mes souvenirs sont bons). Elle expire donc lors de la fermeture ( avérifier). La session, que tu retrouves chez free dans le dossier /sessions (que tu dois créer toi même a la racine), est stockée dans le fichier portant le nom bizaroide d5cd.... si tu ouvres ce fichier (une session utilisateur),tu constateras qu'à l'intérieur les variables de session y sont stockées donc le fichier PHPSESSID (la session utilisateur) est le fameux fichier d5cd... et si tu l'ouvres, tu devrais y voir inscrit : md5:le_hash qui correspond à la variable que tu y a stocké suis je clair ? hmmm pas sur ... Forcément... ©brupala : Le méchant nounours ©Moi
|
Salut,
Une piste, poser un cookie par le fichier qui traite le formulaire, et verification avant de faire un traitement que le cookie n'existe pas déja. dans ton fichier .php traitement: 1- tu viens lire le cookie (nommé trace par exemple) 2- si cookie trouvé (et correspondant au md5), tu sort du script sans rien faire - si cookie pas trouvé, tu ecrit le cookie 'trace' avec comme valeur ton md5 et tu fait ton traitement A noter aussi que tu peux poser et lire des cookie par Javascript dans ta balise <form ......................... onSubmit="return verif_1_click();"> fonction JS verif_1_click{ tu viens lire le cookie si present et ok tu fais return=false sinon tu ecris le cookie et tu fais return=true le formulaire ne sera envoyé que dans ce cas là } Pour coder tout ça vas voir comment faire sur Google, je t'ai donné seulment le principe
|
Bonjour,
Le problème c'est lorsque "je sors du script sans rien faire" (ton 2-) je me retrouve avec une page blanche Ce n'est pas parce que tu sort d'un test dans un script sans rien faire que tu génères une page blanche. Le click "valable" générera une page de confirmation, après ton traitement, et pas forcément via un header |
|
Le click "valable" générera une page de confirmation, après ton traitement, et pas forcément via un header
Mais le script "valable" est 'interrompu' par les autres clics avant qu'il ne redirige vers la page de confirmation. .... ou alors j'ai rien compris, puisqu'actuellement le script fonctionne déjà comme ceci, mais avec des sessions PHP. Et pourtant je me retrouve avec une page blanche si je valide plusieurs fois. Mais au final, si ça peut résoudre le problème juste en utilisant des cookies, ça me convient puisque je n'ai pas spécialement d'intérêt de stocker ces infos sur le serveur. L'urgent est fait, l'impossible est en cours, Pour les miracles, prévoir un délai ... |
|
J'ai fini par choisir la solution de facilité : Avec Javascript : http://www.journaldunet.com/developpeur/tutoriel/dht/031202_javascript.shtml
Tant pis pour les 3% d'utilisateurs qui n'activent pas JS..... L'urgent est fait, l'impossible est en cours, Pour les miracles, prévoir un délai ... |