Php aide pour code livre d'or

Résolu
mitou63 Messages postés 95 Date d'inscription   Statut Membre Dernière intervention   -  
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   -
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";

?>
A voir également:

6 réponses

avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
É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" />
0
mitou63 Messages postés 95 Date d'inscription   Statut Membre Dernière intervention   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....
0
Zestyr Messages postés 466 Date d'inscription   Statut Membre Dernière intervention   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?
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
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;
	}
}
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mitou63 Messages postés 95 Date d'inscription   Statut Membre Dernière intervention   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
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
N'oublie pas de cocher la case "Résolu" tout en haut (je l'ai fais, cette fois ci)
0