Php aide pour code livre d'or [Résolu/Fermé]

Signaler
Messages postés
95
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
10 mars 2011
-
Messages postés
18557
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
4 mai 2021
-
Bonjour,
je viens vous demander votre aide pour un livre d'or qui marche un peu trop bien car quand on charge la page ou on peu lire les messages il en crée un vide et un vide qui plus est qui se rajoutte apres mon copyright qui se trouve dans un autre fichier php <?php include("bas.php"); ?>

je vous poste le code si vous voyez ce qui ne vas pas.... merci d'avance

<?
//Ouverture du fichier en écriture
$fp = fopen("writeguest.php",a);

//On convertit les caracteres html
$nom = htmlspecialchars($_POST['nom']);
$mail = htmlspecialchars($_POST['mail']);
$message = stripslashes(nl2br(htmlentities($_POST['message'])));
$d = date ( "d/m/Y H:i:s" );


$lemail = "<a href=\"mailto:$mail\">$mail</a>";
$page .= "<b>$nom</b> (".$lemail.") - $d<br>$message<br><hr>\n";

//On rajoute le message
fwrite($fp,"$page" ,strlen("$page"));

//fermeture du fichier
fclose($fp);

//On affiche le message enregistré
echo "Merci $nom, nous avons enregistré: <br>";
echo "email : $mail <br> message : $message";

?>

6 réponses

Messages postés
18557
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
4 mai 2021
4 287
Évites les shorts tags : ce n'est pas "<?" mais "<?php".
Le problème, c'est que tu ne fais aucune condition permettant d'enregistrer le message que si il a été envoyer.
Voilà ton script corrigé et sécurisé :
<?php

if($_POST['submitGuestbook'] == "true") {
	$nom = htmlspecialchars(trim($_POST['nom']));
	$mail = htmlspecialchars(trim($_POST['mail']));
	$message = nl2br(htmlentities(trim($_POST['message'])));
	$d = date ("d/m/Y H:i:s");
	
	if(
		empty($nom) ||
		empty($mail) ||
		empty($message) ||
		!preg_match('#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#i',$mail)
	) {
		echo 'Un champ est resté vide ou l\'adresse email est invalide';
	} else {
		//Ouverture du fichier en écriture
		$fp = fopen("writeguest.php",a);

		//On convertit les caracteres html
		$lemail = '<a href="mailto:'.$mail.'">'.$mail.'</a>';
		$page .= '<strong>'.$nom.'</strong> ('.$lemail.') - '$d'<br/>'.$message.'<br/><hr/>'."\n";

		fwrite($fp,$page,strlen($page));
		fclose($fp);

		//On affiche le message enregistré
		echo 'Merci '.$nom.', nous avons enregistré: <br/>'."\n";
		echo 'Email : '.$mail.'<br/>'."\n".'Message : '.$message;
	}
}
?>
Ajoute ça dans ton formulaire :
<input type="hidden" name="submitGuestbook" value="true" />
Messages postés
95
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
10 mars 2011
4
bonjour

merci pour les corrections cepandant je trouve maintenant ceci.....

Parse error: syntax error, unexpected T_VARIABLE in /mnt/166/sda/e/7/ev.elfya/writeguest.php on line 58

et je ne trouve pas d'ou ca peut venir car la ligne 58 correspond a
$page .= '<strong>'.$nom.'</strong> ('.$lemail.') - '$d'<br/>'.$message.'<br/><hr/>'."\n";

si tu vois ce qui cloche....merci d'avance....
Messages postés
466
Date d'inscription
mercredi 12 août 2009
Statut
Membre
Dernière intervention
17 octobre 2011
52
Jcroi que c'est parceque une variable que tu utilise n'est pas déclarer.
Avant de concaténer $page l'a tu déclarer avant?
Messages postés
18557
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
4 mai 2021
4 287
J'ai fais une erreur.
Voilà le code corrigé :
<?php

if($_POST['submitGuestbook'] == "true") {
	$nom = htmlspecialchars(trim($_POST['nom']));
	$mail = htmlspecialchars(trim($_POST['mail']));
	$message = nl2br(htmlentities(trim($_POST['message'])));
	$d = date ("d/m/Y H:i:s");
	
	if(
		empty($nom) ||
		empty($mail) ||
		empty($message) ||
		!preg_match('#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#i',$mail)
	) {
		echo 'Un champ est resté vide ou l\'adresse email est invalide';
	} else {
		//Ouverture du fichier en écriture
		$fp = fopen("writeguest.php",a);

		//On convertit les caracteres html
		$lemail = '<a href="mailto:'.$mail.'">'.$mail.'</a>';
		$page .= '<strong>'.$nom.'</strong> ('.$lemail.') - '.$d.'<br/>'.$message.'<br/><hr/>'."\n";

		fwrite($fp,$page,strlen($page));
		fclose($fp);

		//On affiche le message enregistré
		echo 'Merci '.$nom.', nous avons enregistré: <br/>'."\n";
		echo 'Email : '.$mail.'<br/>'."\n".'Message : '.$message;
	}
}
?>
Messages postés
95
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
10 mars 2011
4
oooooooo merci beaucoupppppp merci c'est très gentil de m'avoir aidé!!! merci encore! n'hesite pas a faire le tour dusite en question si tu le désire il s'agit de celui d'une jeune chanteuse clermontoise il n'est pas encore finis , bientot bientot....
http://ev.elfya.free.fr/index.php
merci encore
Messages postés
18557
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
4 mai 2021
4 287
N'oublie pas de cocher la case "Résolu" tout en haut (je l'ai fais, cette fois ci)