Empécher l'accès direct a une page POST d'un formulaire !

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics

Redox-WRI
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 3
Inscription: 14 Oct 2011

Empécher l'accès direct a une page POST d'un formulaire !

Message le Ven Oct 14, 2011 13:17

Bonjour,

J'ai un petit problème en ce qui conserne ma page add-video.php, code:

Code: Tout sélectionner
<form action='vds.php' method='post'>

donc losqu'on clique sur SUBMIT, les donées se renvoi vers une autre page vds.php, code:
Code: Tout sélectionner
         // VDS.PHP    
$title = $_POST['title'];
$description = $_POST['description'];
$video = $_POST['video'];
    
     // INSERT TO DB
if (isset($_POST['add']) and $_POST['add'] == 'files') {
   $insert = mysql_query("INSERT INTO ". $tbl_prefix ."videos SET  title = '$title', description = '". nohtml($_POST['description']) ."', video = '$video'") or die ("mysql error");
   
   // IF INSERT IS DONE
      if (isset($insert)) {
      $template->redirect('add-video.php', $lang['message_sent'], true);
      }
}



Problème: J'ai tésté la méthode
Code: Tout sélectionner
<form action='".$_SERVER['PHP_SELF']."' method='post'>
mais l'orsque l'utilisateur actualise la page, les données se postent une 2ème fois a la base des données et ainsi de suite pour chaque actualisation :(

Donc j'ai pris cette 2ème méthode, mais maintenant le problème consiste a l'accès direct a la page vds.php,

Désolé pour mon français et merci a vous tous,


nickargall
WRInaute accro
WRInaute accro
 
Messages: 6468
Inscription: 13 Juin 2005

Re: Empécher l'accès direct a une page POST d'un formulaire !

Message le Ven Oct 14, 2011 14:42

Bonjour

Tu peux faire :

Page A-> formulaire qui envoit vers B
Page B -> page qui enregistre les données du formulaire puis fait une redirection 301 vers page C
Page C -> page "'OK Ca a marché"


Leonick
WRInaute accro
WRInaute accro
 
Messages: 19592
Inscription: 8 Aoû 2004

Re: Empécher l'accès direct a une page POST d'un formulaire !

Message le Sam Oct 15, 2011 10:34

le mieux est d'utiliser une variable de session et de la créer lors de la validation du formulaire.
si la variable existe déjà on affiche un message d'erreur "formulaire déjà saisi !!"
on peut, éventuellement, temporiser cette variable, histoire de permettre des soumissions multiples (du genre 2' entre 2 soumissions), dans ce cas, on peut mettre un champ caché avec un identifiant aléatoire et vérifier si cet identifiant n'a pas déjà servi


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Re: Empécher l'accès direct a une page POST d'un formulaire !

Message le Sam Oct 15, 2011 10:56

Tu peux aussi créer une key temporaire (en db par exemple) au moment du premier post.
Si second post et déjà présente : message d'erreur et zou ;)

longo600
WRInaute impliqué
WRInaute impliqué
 
Messages: 896
Inscription: 24 Fév 2005

Re: Empécher l'accès direct a une page POST d'un formulaire !

Message le Sam Oct 15, 2011 11:15

Pour le titre du fil, c'est la même chose que ce qu'ont dit mes prédécesseurs (et que j'utilise).

pour accéder au formulaire post, j'utilise un identifiant que j'ai mis sur la page précedente. En arrivant sur la page du formulaire, cet identifiant est caché et posté. Si cet identifiant ne correspond pas, au lieu d'enregistrer le formulaire, tu envois un message d'erreur. Si l'identifiant existe, tu enregistre les données.

Si c'est au niveau de l'affichage du formulaire uniquement, c'est la meme chose, sur la page avant le formulaire, tu donne un identifiant, et le lien qui conduit au formulaire est un formulaire caché qui poste l'identifiant. Si l'idententifiant est correct, tu affiche le formulaire, sinon, tu affiche un message d'erreur genre "ce formulaire ne peut pas etre accessible automatiquement".

Redox-WRI
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 3
Inscription: 14 Oct 2011

Re: Empécher l'accès direct a une page POST d'un formulaire !

Message le Dim Oct 16, 2011 1:07

Merci a vous tous,

J'ai ajouté un code a la fin du fichier vds.php:
Code: Tout sélectionner
if($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest'){
  echo("Accès directe non autorisé");
  die();
}

qui n'autorise pas l'accès directe, mais je sai pas si c'est encors sécurisé ou nn.


spout
WRInaute accro
WRInaute accro
 
Messages: 4378
Inscription: 14 Mai 2003

Re: Empécher l'accès direct a une page POST d'un formulaire !

Message le Dim Oct 16, 2011 1:50

Non, avec le code que tu montres, ça vérifie si c'est appelé autrement que via AJAX.
http://davidwalsh.name/detect-ajax

Redox-WRI
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 3
Inscription: 14 Oct 2011

Re: Empécher l'accès direct a une page POST d'un formulaire !

Message le Dim Oct 16, 2011 18:57

spout a écrit:Non, avec le code que tu montres, ça vérifie si c'est appelé autrement que via AJAX.
http://davidwalsh.name/detect-ajax


Donc je doit ce code avec une autre sollution :(


spout
WRInaute accro
WRInaute accro
 
Messages: 4378
Inscription: 14 Mai 2003

Re: Empécher l'accès direct a une page POST d'un formulaire !

Message le Dim Oct 16, 2011 19:09

Avec la solution que Leonick a donné.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités