Aller au contenu

Erreur code source php


yoann25

Messages recommandés

Membre, Posté(e)
yoann25 Membre 72 messages
Baby Forumeur‚
Posté(e)

Bonjour,

je suis entrain de créer un livre d'or en php.

j'ai un soucis ça m'affiche ce message :

( ! ) Notice: Undefined variable: pseudo in C:\wamp\www\Livreor\index.php on line 11

( ! ) Notice: Undefined variable: email in C:\wamp\www\Livreor\index.php on line 11

Voici mon code php : (Pour info : la ligne 11 est souligné en rouge)

<?php

require "config.php";

mysql_connect(DB_SERVER,DB_LOGIN,DB_PASS);

mysql_select_db(DB_NAME);

mysql_query('SET NAMES'.DB_ENC);

if (isset($_POST)){

extract ($_POST);

$sql="INSERT INTO lo_message (pseudo,mail,message) VALUES ('$pseudo','$email','$message')";

mysql_query($sql) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

}

?>

<form method="post" action="index.php">

Nom :<input type="texte" name="Pseudo"/><br/>

Mail:<input type="texte"name="Email"/><br />

Message : <br/>

<textarea name="message"></textarea><br/>

<input type="submit" value="envoyer"/>

</form>

<?php

$sql="SELECT * FROM lo_message";

$req= mysql_query($sql) or die ('Erreur SQL !<br>'.$sql. '<br>'.mysql_error());

while($data=mysql_fetch_assoc($req)){

echo "<strong>".$data["Pseudo"]."</strong><br />";

echo "<p>".$data["message"]."</p>";

}

mysql_close();

?>

Merci à vous.

Lien à poster
Partager sur d’autres sites

Annonces
Maintenant
VIP, 39ans Posté(e)
MacGyver VIP 3 992 messages
Forumeur en herbe ‚ 39ans‚
Posté(e)

t'as pas fait gaffe aux majuscule et je pense que $_POST['Pseudo'] et ainsi de suite serait mieux.

Lien à poster
Partager sur d’autres sites

Membre, 46ans Posté(e)
jimmy45 Membre 11 000 messages
Maitre des forums‚ 46ans‚
Posté(e)

Salut, il te dit que les variables $pseudo et $email ne sont pas définit.

Avant de les utiliser tu dois leur donner une valeur.

Cela vient du extract($_POST) qui ne retourne pas ces deux variables à cause de l'erreur de majuscule soulevée par MacGyver.

Lien à poster
Partager sur d’autres sites

Animateur, Le gras c'est la vie, 36ans Posté(e)
Kyoshiro02 Animateur 22 556 messages
36ans‚ Le gras c'est la vie,
Posté(e)

<?php

$pseudo=$_POST['Pseudo'];

$email=$_POST['Email'];

$message=$_POST['message'];

require "config.php";

mysql_connect(DB_SERVER,DB_LOGIN,DB_PASS);

mysql_select_db(DB_NAME);

mysql_query('SET NAMES'.DB_ENC);

if (isset($_POST)){

extract ($_POST);

$sql="INSERT INTO lo_message (pseudo,mail,message) VALUES ('$pseudo','$email','$message')";

mysql_query($sql) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

}

?>

<form method="post" action="index.php">

Nom :<input type="texte" name="Pseudo"/><br/>

Mail:<input type="texte"name="Email"/><br />

Message : <br/>

<textarea name="message"></textarea><br/>

<input type="submit" value="envoyer"/>

</form>

Et voilà pour la correction, ça devrait fonctionner ;)

Lien à poster
Partager sur d’autres sites

Membre, Le Dieu Lapin, 36ans Posté(e)
Lapinkiller Membre 10 149 messages
36ans‚ Le Dieu Lapin,
Posté(e)

Bonjour,

$_POST['Pseudo'] => ne pas mettre de majuscule à "Pseudo" car comme ca on évite beaucoup d'erreur bête (donc faire de même dans le code html)

et attention le code présenté n'est absolument pas sécurisé : une injection SQL est faisable très facilement (ce qui peut permettre d'accéder à la base de données à partir de la page php et de faire ce qu'on veux avec la BDD)

il faut faire quelque chose de ce genre :

$pseudo = mysql_escape_string($_POST['pseudo']);

sinon je recommande fortement de regarder du côté de PDO pour l'accès à la BDD (en plus PDO permet de sécuriser automatiquement les données utilisées )

pour finir pour le if isset($_POST) il faut plutôt faire un if (isset($_POST['pseudo']))

$_POST est toujours défini donc ta condition est toujours vrais d'où l'erreur quand aucune donnée du formulaire n'a été envoyée

dernier conseil : ne pas mettre la balise ?> en fin de fichier PHP si tu ne mets pas de code html derrière

si ca peut t'aider j'ai déjà fait (il y'a 5ans)un livre d'or que tu peux récupérer sur mon site :http://www.lapinkiller.fr/?page=scripts&dl=livredor par contre le code est très vieux (pas d’utilisation de PDO etc...) je pense qu'il faudrait que je le revoit complètement si je suis motivé je le referait tout à l'heure car il ya beaucoup d'erreurs de jeunesse dedans

Lien à poster
Partager sur d’autres sites

Membre, Posté(e)
yoann25 Membre 72 messages
Baby Forumeur‚
Posté(e)

Merci à vous ça marche. Bonne soirée à vous tous. Yoann.

Lien à poster
Partager sur d’autres sites

Annonces
Maintenant

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×