retour sur une page actualisée

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : retour sur une page actualisée

Re: retour sur une page actualisée

par Ryle » 23 juil. 2011, 11:08

Tu dois pouvoir utiliser $_SERVER['HTTP_REFERER'] pour savoir d'où provient ton visiteur, mais l'information n'est pas toujours envoyée par le navigateur et n'est pas garantie...

Une autre solution pourrait être de passer un paramètre en plus quand tu ouvres ta page pour dire vers quoi revenir... par exemple si je viens de la page video, tu ajoutes &from=video dans ton url (ou en session, ou autre), et tu traites la redirection du header en fonction de ce paramètre (mais c'est vite lourd)


Pour ton problème de mail, le mieux serait d'ouvrir un autre sujet :) (et de poster le message d'erreur et/ou le résultat de la fonction mail pour savoir d'où peut provenir le problème :)

Re: retour sur une page actualisée

par koroce » 23 juil. 2011, 10:09

Merci pour vos réponses, mais mon probléme avec la fonction header() que j'avais utilisé dans un premier temps, est qu'elle ne me permet pas (enfin, je crois) de renvoyer la page sur laquelle j'ai posté mon dernier message.
Je m'explique:
Si je fais un header() spécifiant l'URL de la page photo et que je suis sur la page video, je vais être re-dirigé vers la page photo, alors que j'aurai souhaité revenir sur la page vidéo lorsque je poste mon message de la page video, ou photo si je le poste de la page photo.

Un autre probléme, j'essais d'utiliser le fonction mail(), j'utilise MAMP comme serveur local et j'ai cru comprendre que cela pouvait être un probléme ?
Merci
Koroce

Re: retour sur une page actualisée

par Skw33d » 22 juil. 2011, 21:51

Salut,

La méthode que tu emploie est vraiment pas propre du tout. Du Javascript intrusif, même la je dirais pire qu'intrusif. Bref, tu as fait comme tu pouvais tu ne connaissais pas la solution en PHP. :wink:

En PHP, il existe une fonction appelé header. En l'appelant avec l'entête "Location:" de cette manière
header('Location: URL');
celle ci te permet de diriger tes utilisateurs vers l'adresse de ton choix.
Toutefois attention quand même ! Il faut veiller ne rien afficher avant d'utiliser cette fonction, sinon tu auras une erreur du style header already sent at...
Donc en gros pas de echo, print, html brut...

Malgré tout, si tu te retrouves obligé d'afficher du texte à un certain moment et que tu ne sais pas faire autrement, tu peux utiliser ob_start

Pour cela, c'est très simple, tu entoures ton code qui doit être entouré de ob_start(); et ob_end_flush();
ob_start démarre la tamporisation de sortie, c'est à dire que rien ne sera affiché à l'écran tant que tu n'auras pas vidé le tampon. Tout ce qui est écrit après ob_start(); est stocké dans le tampon de sortie, et ob_end_flush te permet de libérer le tampon de sortie.

Re: retour sur une page actualisée

par Ryle » 22 juil. 2011, 21:41

Quand tu dis que ça ne fonctionne pas, ça te fait quoi à la place ? tu as un message t'indiquant que des données doivent être renvoyées pour actualiser la page ? ou ça t'affiche simplement la page telle qu'elle était la dernière fois que tu l'as vue ?^ou autre ?

Dans le premier cas, c'est que tes données pour afficher la page sont envoyée avec la méthode post et le navigateur demande confirmation pour les renvoyer.
Dans le second cas, c'est probablement un problème de cache, et tu peux effectivement envoyer des headers() en php pour demande au navigateur de systématiquement venir vérifier s'il existe une version plus récente de la page sur le serveur (au lieu d'utiliser celle qu'il a stocké en cache)

retour sur une page actualisée

par koroce » 22 juil. 2011, 20:08

Bonjour,

Sur mon site j'ai un fichier (formulaire.php) que j'insére grâce à un include sur plusieurs pages. Lorsque je poste un message j'execute mon fichier post_formulaire.php qui alimente la base de donnée que je ré-afiche par une requête dans formulaire.php à la suite du code html de mon formulaire.
A la fin de mon code dans post_formulaire.php j'ai inséré du javascript "history.go(-1)" pour revenir sur la page dans laquelle je viens de poster mon message et que celle si soit actualisée et affiche le dernier message posté.
Cela fonctionne pour une de mes pages et pas pour les autres, qui lorsque j'envoi mon formulaire alimente la base de donnée mais ne me ré-affiche pas ma page actualisée. Je ne comprends pas ?? pourquoi cela marche pour une page et pas les autres ??? Mes pages sont sensiblement les mêmes avec différent includes.
Existe t-il une autre solution avec php?
Merci d'avance
Koroce