Php aide pour code livre d'or

Résolu/Fermé
mitou63 Messages postés 95 Date d'inscription lundi 14 septembre 2009 Statut Membre Dernière intervention 10 mars 2011 - 14 nov. 2009 à 19:58
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 - 15 nov. 2009 à 18:55
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 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
14 nov. 2009 à 20:28
É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 lundi 14 septembre 2009 Statut Membre Dernière intervention 10 mars 2011 4
15 nov. 2009 à 12:15
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 mercredi 12 août 2009 Statut Membre Dernière intervention 17 octobre 2011 52
15 nov. 2009 à 12:28
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 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
15 nov. 2009 à 17:22
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 lundi 14 septembre 2009 Statut Membre Dernière intervention 10 mars 2011 4
15 nov. 2009 à 18:39
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 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
15 nov. 2009 à 18:55
N'oublie pas de cocher la case "Résolu" tout en haut (je l'ai fais, cette fois ci)
0