PHP. Formulaire. Rediriger si champs vides,..

Fermé
midiweb - 21 janv. 2006 à 16:58
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 21 janv. 2006 à 19:12
salut, j'ai fait un formulaire pour un livre d'or. Le script de contrôle est en PHP. Le script PHP est avec le HTML sur la même page (livredor.php). Tout fonctionne bien SAUF lorsque je renvoie des champs vides ou manquants. Mon but est de réafficher la page avec le formulaire puisque les champs sont vides. Mais l'affichage de la nouvelle page se fait en dessous de celle en cours. Donc je vois deux fois ma bannière un en dessous de l'autre.
J'utilise la fonction INCLUDE(./livredor.php) pour réafficher le formulaire s'il est vide. Avant je voulais utiliser HEADER(location:./livredor.php) mais j'ai un message d'erreur: "Warning,......"
En bref, mon but est de rediriger l'internaute vers le formulaire d'origine s'il fait une erreur ou un oubli dans les champs. Rien d'autre que cela. Voici ci-après le code PHP du script:

.........
.............. HTML avec la bannière et le formulaire
.....................



<?php

// Partie PHP après validation du formulaire, fichier invoqué "message.php"


// Mettons le (future) fichier dans une variable
$commentaires="messages.txt";

// assignons nos 2 variables du formulaire et on en profite pour les protégers des balises HTML
$pseudo=htmlentities($_POST['pseudo']);
$prenom=htmlentities($_POST['prenom']);
$titre=htmlentities($_POST['titre']);
$mail=htmlentities($_POST['mail']);
$message=htmlentities($_POST['message']);

// Pensons au retour à la ligne et au stripslashes pour la variable $message
$message=stripslashes(nl2br($message));

// On met en place quelques conditions pour les cellules (nom et message)
// On vérifie avant tout si le fichier existe si ce n'est pas le cas on le crée
if(!is_file($commentaires))
{
$verif=@fopen($commentaires,"w+");
}

// On vérifie que le login ou le message ne soient pas vide
elseif (trim($message)=="" || trim($pseudo)=="" || trim($prenom)=="" || trim($mail)=="" || trim($titre)=="")
{

include('./livredor.php');
// On sort du script !
exit;
}

// Après ces quelques vérification d'usage on passe à l'exécution de ce formulaire


// Si ok on ouvre en écirture-enregistrement du fichier message.txt
$verif=@fopen($commentaires,"r+");

// On analyse les anciennes données et on les stocks
$stock=@fread($verif,filesize($commentaires));

// On met la date dans une varialbe
$date=date ("d/m/Y um H:i");

// On paramètre le tout dans la variable $opinion
$opinion="<b>".$prenom."</b>"." "."<b>".$pseudo."</b> a écrit le : ".$date."<br />\n".$message."<br />\n<hr />";

// On remet le curseur du fichier en début de ligne
rewind($verif);

// On insère le nouveau commentaire
fputs($verif,$opinion." \n".$stock);

// On clore le fichier
fclose($verif);

// On affiche le tout
readfile($commentaires);


?>

</body>
</html>



Merci de votre aide
A voir également:

1 réponse

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
21 janv. 2006 à 19:12
Avant je voulais utiliser HEADER(location:./livredor.php) mais j'ai un message d'erreur: "Warning,......"

Warning headers already sent.... ?

=> http://www.commentcamarche.net/faq/1916

Dans le pire des cas, tu as aussi une manière de rediriger en html avec la balise <meta http-equiv="refresh">
Ou alors en javascript avec la methode document.location.replace()
0