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
18746
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 mai 2022
- 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";

?>

6 réponses

avion-f16
Messages postés
18746
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 mai 2022
4 391
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
53
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
18746
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 mai 2022
4 391
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
18746
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 mai 2022
4 391
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