2009-10-28 6 views

Répondre

0

Spécifiez la page dans l'attribut action = "" du formulaire (n'utilisez pas PHP_SELF).

+0

Ceci n'aidera pas l'utilisateur, il enverra simplement le formulaire à une autre page que SELF. – Jakub

1

Si vous voulez que la chose POST + Redirect:

header('Location: ' . $nextUrl, true, 303); 

fera l'affaire.

Code Exemple:

<!-- form.html --> 
<form method="post" action="postHandler.php"> 
    <input type="text" name="someName" value=""/> 
    <input type="submit" name="submitButton"> 
</form> 

 

// postHandler.php 
if (isset($_POST['submitButton'])) { 
    // do something with the posted data 

    header('Location: submitOk.html', true, 303); 
} else { 
    header('Location: form.html', true, 303); 
} 

 

<!-- submitOk.html --> 
<h1>Ok</h1> 
<p> 
    Your information was received 
</p> 
+0

Pourriez-vous juste expliquer comment cela fonctionne, Alors j'apprends quelque chose :) –

+0

Aussi étais-je l'ajouter dans mon code? –

+0

@Oliver il l'a expliqué, vous avez besoin de 3 pages: form.html, postHandler.php (gère le poste de formulaire), et la 3ème page à rediriger vers submitOk.html. La page de formulaire est soumise à postHandler, le gestionnaire de publication fait quelque chose avec les données du formulaire, puis redirige l'utilisateur vers la troisième page qui indique qu'il a envoyé un résultat correct. – Jakub

0

Dans le script a terminé quand un POST réussi:

header('Location: http://'.$_SERVER['HTTP_HOST'].'/finalpage.php', TRUE, 303); 

Notez que ceci doit inclure une URL absolue, pas seulement /finalpage.php; Les URI relatifs dans un en-tête Location ne sont pas autorisés par le RFC HTTP et ne sont pas supportés par certains navigateurs. Aussi 303 est à proprement parler plus correct que la valeur par défaut 302.

Si vous voulez que la redirection simplement chercher à nouveau la même page que GET vous pouvez faire:

header('Location: '.$_SERVER['PHP_SELF'], TRUE, 303); 

aussi:

action="<?php echo $_SERVER['PHP_SELF']; ?>" 

est non sécurisé, potentiellement un trou d'injection HTML menant à XSS. Toutes les chaînes de texte en sortie dans le contenu HTML ou les valeurs d'attribut doivent être échappées de manière appropriée:

action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>"