Redirection un peu problématique

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 : Redirection un peu problématique

par alaingpl » 08 déc. 2007, 10:39

Tu peux utiliser ça pour revenir à la page précédente

Code : Tout sélectionner

<a href="javascript:history.go(-1);">texte ou photo</a>

par Patriboom » 06 déc. 2007, 08:43

Le lien de ta page ne fonctionne pas depuis chez moi.
Avant de cliquer sur le lien de "Page précédente", il faut que tu visites une deuxième page, là tu trouveras de nouveau ce lien qui te ramènera à la première.

C'est moins compliqué de repiqué ceci:

Code : Tout sélectionner

<A HREF="javascript:history.back()">Revenir en arri&egrave;re</a>
La différence avec le tien, c'est qu'il n'y a pas d'espace ni de caractère entre javascript: et history

par Ryle » 03 déc. 2007, 21:53

Comment fait-on pour arriver sur cette page ? on suit un lien ? on clique un bouton ? une image ?
T'aurais un lien à nous donner pour qu'on puisse voir le site ?

Sinon pour le fait que l'actualisation de la page te renvoi vers la page d'accueil à chaque fois, c'est très probablement parce qu'il y a une frame sur le site et que lorsque tu actualises, ce n'est pas la page que tu vois, mais la frame (dont l'url est toujours spécifiée dans la barre d'adresse) qui se recharge :)

par YVES » 03 déc. 2007, 18:06

Je ne suis pas sur d'avoir tout compris :roll: mais bon. En fait, je ne vois pas dans mon cas un quelconque envoi avec POST ou GET...
Par contre, et je tenais à le signaler, ce bout de script fonctionne parfaitement sur un autre site (hébergé chez la meme boite) ....

Au pire, je redirige sur une page avec un simple lien html et ca devrait le faire.

par Ryle » 03 déc. 2007, 11:51

Dès le moment où tu envois des données à une page en POST, alors celle-ci ne peut être réactualisée (par un refresh ou un précédent) sans le renvoi d'information. Par sécurité les navigateurs te demandent donc une confirmation du renvoi de ces données (contrairement à celle passées en get, puisqu'elle font partie de l'url elle sont resoumises automatiquement).

Cela permet d'éviter par exemple de recharger deux fois une page dans laquelle tu commandes et payes un article et te faire débiter 12 fois sans t'en rendre compte :)


Pour éviter cela, on applique en général un pattern PRG : Post-Redirect-Get (p'tite recherche sur le forum :)). C'est à dire que les données du formulaire sont envoyée en POST à une page (éventuellement la même) qui les gère et qui une fois le traitement terminée effectue un header() pour rediriger le navigateur vers une nouvelle page appellée en GET.

L'intérêt de cette méthode, c'est que le navigateur ne voit que deux pages : celle du formulaire et celle du résultat appellé en get. Du coup l'actualisation renvoi les données en GET, donc pas d'envoi en double des données, et la fonction "précédent" renvoi sur le formulaire. Le navigateur n'essayera donc plus de renvoyer des données en POST et n'affichera donc plus de message de confirmation :)

par YVES » 02 déc. 2007, 22:56

Le lien de ta page ne fonctionne pas depuis chez moi.

par Patriboom » 02 déc. 2007, 03:24

Si t'as le même problème avec la page ci-bas
http://patriboom.cartefoi.net/patrick/f ... bi02_a.htm (en bas complètement, il y a un lien Revenir en arrière, j'ai peut-être un problème sur mes pages aussi. (Pour tester mon lien, il de faudra passer par d'autres pages semblables avant, mais dès la première tu devrais trouver ton message d'erreur s'il y a lieu).

Si t'as pas de problème là (lien ci-haut), c'est qu'il y a peut-être une faute que je ne vois pas dans ton code ou encore un niveau de sécurité très élevé.

Redirection un peu problématique

par YVES » 02 déc. 2007, 00:33

Bonjour, comment finaliser une redirection "marche arrière" correcte sans avoir de messages des navigateurs?
en fait j'ai un message d'alerte avec Explorer qui est le suivant:

Avertissement : expiration du délai pour cette page La page requise a été créée en utilisant les informations fournies dans un formulaire. Cette page n'est plus disponible. Par sécurité, Internet Explorer ne renvoie pas automatiquement les informations vous concernant.
Pour envoyer vos informations à nouveau et afficher cette page Web, cliquez sur le bouton Actualiser .
Si on actualise, on revient carrément sur la page d'accueil du site ce qui pose problème.

Avec Mozilla, il y a aussi un message qui apparait mais en confirmant on revient au moins à la page précédente.

En virant le history back et en passant par la flèche précédente des navigateurs, c'est pareil.
voici le bout de script.
<?php
session_start();
$id = $_SESSION['id'];
include 'connexion.php';
$sql= " SELECT x, y, z FROM membres WHERE id = ". $id ." ";  
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
($data = mysql_fetch_assoc($res));
if (($data['x'] == "toto") &&($data['y']== 'tata')&& ($data['z']==''))
       {
echo'<center><body background="image/fond.jpg" bgproperties="fixed"><img src="aspect/choix1.gif">
<br><a href="javascript:history.back()">retour</a></center>';
}
?>