Appel d'une nouvelle page après validation d'un formulaire

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 : Appel d'une nouvelle page après validation d'un formulaire

par gb1963 » 20 févr. 2009, 02:02

:D Merci pour ton aide rolusseum,

ce problème est résolu

par rolusseum » 20 févr. 2009, 01:32

Seulement, cette méthode présente un gros problème pour les débutants, c'est qu'elle doit être utilisé avant d'envoyer du texte (echo, print, texte hors balise "<?php ?>", etc. ) et il est très difficile pour eux de comprendre la logique d'un tel fonctionnement et comment le résoudre. C'est d'ailleurs pour cette raison qu'ils s'orientent sur l'horrible solution du JavaScript.
Voici un tutoriel sur la redirection
http://www.phpfrance.com/tutoriaux/ind ... rediriger


Modifie les guillemets pas des apostrophes et en enlevant les parenthèse à exit()
 header('location: index.html');
 exit;     
Eventuellement indique le chemin complet dans le header

par gb1963 » 20 févr. 2009, 01:16

Merci pour ton aide

J'ai mis après l'insert
<?php
// Connection à la base de données
require_once("../commun/php/connection.php");
// Appel des fonctions
require_once('fonction.php');

// Vérification de la validation de la saisie
if (sizeof($_POST)>0)
{	$frm=$_POST;
	$msg_err=valide_form($frm,$err);
// Création
	if (empty ($msg_err))
	{	$frm=$_POST;
		insert_db($frm);
		header("location: index.html");
		exit();}	
}
?>
Voici le message qui s'affiche :
Warning: Cannot modify header information - headers already sent by...

par rolusseum » 20 févr. 2009, 01:06

Ben après l'enregistrement des données dans ta bd, tu fais une redirection
//redirection vers la page que l'on souhaite
header("location: la page.html"); 
exit();

Appel d'une nouvelle page après validation d'un formulaire

par gb1963 » 20 févr. 2009, 00:31

Bonjour :D ,

Je débute en php et mysql.

J'ai créé un formulaire qui me permet d'enregistrer des données dans ma base de donnée MySql.

Quand je valide ce formulaire je voudrais s'il n'y a pas d'erreur rediriger l'internaute sur une nouvelle page.

Mais je n'arrive pas à le faire fonctionner.

Voici le code Php mis avant le html
<?php
if (sizeof($_POST)>0 && $index=="*")
{header("location: index.html");
}
// Connection à la base de données
require_once("../commun/php/connection.php");
// Appel des fonctions
require_once('fonction.php');

// Vérification de la validation de la saisie
if (sizeof($_POST)>0)
{	$frm=$_POST;
	$msg_err=valide_form($frm,$err);
// Création
	if (empty ($msg_err))
	{	$frm=$_POST;
		insert_db($frm);
		$index ="*";
		exit;}	
}
?>
code html

Code : Tout sélectionner

<h2>Création</h2> <form action='<?php echo basename(__FILE__); ?>' method='post' enctype="multipart/form-data"> <!-- echo basename(__FILE__) récupère le nom de la page --> <p>&nbsp;</p> <p>Il faut saisir une section, un élève et son code d'accès.</p> <p>&nbsp;</p> <p><label for="section">Section</label> <input type="text" name="section" id="section" value="<?php echo stripslashes($frm['section'])?>"/>* <?php if (isset($err['section'])) echo $msg_err['section']?></p> <p>&nbsp;</p> <p><label for="login">Elève</label> <input type="text" name="login" id="login" value="<?php echo stripslashes($frm['login'])?>" />* <?php if (isset($err['login'])) echo $msg_err['login']?></p> <p>&nbsp;</p> <p><label for="pw">Mot de Passe</label> <input type="password" name="pw" id="pw" value="<?php echo stripslashes($frm['pw'])?>" />* <?php if (isset($err['pw'])) echo $msg_err['pw']?></p> <p>&nbsp;</p> <p>&nbsp;</p> <p> <input class="marge30" type="submit" value="ok"/> </p> </form>
Est-ce que vous pouvez m'aider en m'indiquant où je fais une erreur.

Je ne veux pas utiliser du javascript puisque les internautes n'y ont pas accès.

Je voudrais aussi faire le même principe sur une autre page, mais en restant après la validation sur la même page.

Je vous remercie d'avance