Diverses erreur PHP

Résolu/Fermé
Matancy Messages postés 696 Date d'inscription dimanche 14 juin 2015 Statut Membre Dernière intervention 5 avril 2019 - 30 avril 2016 à 21:20
Matancy Messages postés 696 Date d'inscription dimanche 14 juin 2015 Statut Membre Dernière intervention 5 avril 2019 - 4 mai 2016 à 16:23
Bonjour tout le monde,

En ce moment je suis en train de suivre un tutoriel pour créer un petit réseau social privé mais j'ai quelques erreurs que je n'arrive pas à corriger.
Voici une image des erreurs :


Donc j'espère que grâce au code que je vais vous donner vous pourrez m'aider.
<body bgcolor="#EEE">
<u><center><h1>Inscription</h1></u><br /><br />

<?php

if(isset($_POST['submit']))
{
$sexe = mysql_real_escape_string(htmlentities($_POST['sexe']));
$pseudo = mysql_real_escape_string(htmlentities($_POST['pseudo']));
$password = mysqli_real_escape_string(htmlentities($_POST['password']));
$repeatpassword = mysqli_real_escape_string(htmlentities($_POST['repeatpassword']));
$email = mysql_real_escape_string(htmlentities($_POST['email']));
$age = mysql_real_escape_string(htmlentities($_POST['age']));
$cle = mysql_real_escape_string(htmlentities($_POST['cle']));
}
if(empty($pseudo))
{
$errors[] = "Veuillez saisir un pseudo";
}

if (empty($password))
{
$errors[] = "Veuillez entrer un mot de passe";
}
if ($password != $repeatpassword)
{
$errors[] = "Les deux mots de passe ne correspondent pas";
}
if (§filter_var($email, FILTER_VALIDATE_EMAIL))
{
$errors[] = "Votre adresse mail n'est pas correcte";
}

if (empty ($age))
{
$errors[] = "Veuillez entrer votre age";
}

if (empty ($cle))
{
$errors[] = "Veuillez entrer la clé d'activation";
}
if (!empty($errors))
{
foreach($errors as $error)
{
echo "<div class='error'>'.$error.'</div>";
}

}
?>

<form method='POST' action="">
<label for="pseudo">Votre pseudo :</label>
<input type="text" name="pseudo"><br />

<label for="password">Votre mot de passe :</label>
<input type="password" name="password"><br />

<label for="repeatpassword">Répétez votre mot de passe :</label>
<input type="password" name="repeatpassword"><br />

<label for="email">Votre adresse mail :</label>
<input type="text" name="email"><br >

<label for='age'>Votre âge</label>
<input type="text" name="age"><br />

<label for='sexe'>Votre sexe</label>
<select name="sexe">
<option value="Homme">Homme</option>
<option value="Femme">Femme</option>
<option value="Autre">Autre</option>
</select><br /><br />

<label for="cle">Entrez la clé donnée par un Administrateur</label>
<input type="text" name="cle"><br /><br />

<input type="submit" value="S'inscrire" name="submit"><br /><br />
</form>

<a href="index.php?page=login">Retourner à la page de connexion</a></center>
</body>


J'attend vos réponses avec impatience.

Matancy

4 réponses

Matancy Messages postés 696 Date d'inscription dimanche 14 juin 2015 Statut Membre Dernière intervention 5 avril 2019 82
3 mai 2016 à 22:13
Bonjour

Merci pour ta reponse.

Je précise que je suis un tutoriel, donc je fais étapes par étapes.
Pourrais tu me corriger le code ?

Je suis désolé mais je suis novice en php et je ne comprend mais rien du tout ;)

Matancy

--
0
codeurh24 Messages postés 760 Date d'inscription samedi 29 mars 2014 Statut Membre Dernière intervention 8 septembre 2018 123
Modifié par codeurh24 le 4/05/2016 à 00:05
Bonsoir.

Tu as fait plein d'erreurs mais c'est normal quand tu n'y connais rien.
Tu as déjà réussi à fournir un code HTML presque propre ce qui n'est pas facile pour tout le monde mais qui est le minimum requis pour pouvoir ce faire aider.

Alors pour le html il ne faut pas mettre la partie PHP dans le html ( de préférence pour une bonne visibilité)

le php commence avec <?php et ce fini avec ?>
le html pour faire simple ,commence avec une balise <html> et fini par </html>

pour comprendre la suite il faut d'abord que tu te formes au html et à la programmation php pour savoir comment fonctionne une condition, qu'est-ce-qu'une une variable et qu'est-ce-qu'une fonction. il faut aussi par la suite savoir ce qu'est le SQL et ici mysql.

Le seul problème que tu avait dans ton html c'etait la balise center mais là ce n'est vraiment pas évident a expliquer. il faut que tu t'abitue a comment les balises fonctionnes. Principe de balise parent enfant.

A chaque rafraîchissement (F5) de la page web tes variables doivent être vérifiées si elle sont vides et surtout si elle existe. La fonction "Empty()" renvoi vrai (true) si le champs est vide. La fonction "isset()" renvoi true si la variable existe.
si ces vérifications ne sont pas faites ton php te le fait remarquer en indiquant la ligne. Exemple dans ton cas $repeatpassword, tu fais une condition ce qui engendre la manipulation de valeur. Mais si elles sont vides, elles n’existent pas et on ne peut pas vérifier des valeurs vides sauf avec la fonction empty.
Le plus important c'est quelle n'existe pas car tu n'utilise pas tes variables post qui sont liées a tes name du formulaire html.

Pour chaque fonction php tu as php.net à ta disposition et en français. il y a tout ce qu'il faut pour t'aider à utiliser correctement les fonctions php.

J'ai mis en commentaire les fonctions mysql car avec ce que tu nous donnes il n'y a pas d'utilisation mysql ( connexion ouverte connexion fermer).
Les mettre en commentaire revient a les ignorer.
j'ai même été voir dans la doc (documentation php.net) pour être sur de ce que je dit et il est précisé: Notez que si aucune connexion est ouverte, mysql_real_escape_string () retourne une chaîne vide!
. Comme tu peut le voir même pour moi la doc est la pour me rappeler certaines chose et c'est quotidien.

Dans tes erreurs PHP il est précisé que les fonctions mysql ne sont plus utilisées alors il faut utiliser mysqli ou PDO. Je préfère mysqli qui est quasiment pareil que les fonctions mysql.




<?php 

if(isset($_POST['submit']))
{
// $sexe = mysqli_real_escape_string(htmlentities($_POST['sexe']));
// $pseudo = mysql_real_escape_string(htmlentities($_POST['pseudo']));
// $password = mysqli_real_escape_string(htmlentities($_POST['password']));
// $repeatpassword = mysqli_real_escape_string(htmlentities($_POST['repeatpassword']));
// $email = mysql_real_escape_string(htmlentities($_POST['email']));
// $age = mysql_real_escape_string(htmlentities($_POST['age']));
// $cle = mysql_real_escape_string(htmlentities($_POST['cle']));

if(empty($pseudo))
{
$errors[] = "Veuillez saisir un pseudo";
}

if (empty($password))
{
$errors[] = "Veuillez entrer un mot de passe";


}else if($password != $repeatpassword)
{
$errors[] = "Les deux mots de passe ne correspondent pas";
}

if (empty ($email))
{
$errors[] = "Veuillez entrer votre email";
}else if (filter_var($email, FILTER_VALIDATE_EMAIL))
{
$errors[] = "Votre adresse mail n'est pas correcte";
}

if (empty ($age))
{
$errors[] = "Veuillez entrer votre age";
}

if (empty ($cle))
{
$errors[] = "Veuillez entrer la clé d'activation";
}
if (!empty($errors))
{
foreach($errors as $error)
{
echo "<div class='error'>'.$error.'</div>";
}

}


}

?>
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body bgcolor="#EEE">
<center>
<u></u>
<h1><u>Inscription</u></h1><br>
<br>
<form action="" method="post">
<label for="pseudo">Votre pseudo :</label> <input name="pseudo"
type="text"><br>
<label for="password">Votre mot de passe :</label> <input name="password" type="password"><br>
<label for="repeatpassword">Répétez votre mot de passe :</label>
<input name="repeatpassword" type="password"><br>
<label for="email">Votre adresse mail :</label> <input name="email" type="text"><br>
<label for='age'>Votre âge</label> <input name="age" type=
"text"><br>
<label for='sexe'>Votre sexe</label> <select name="sexe">
<option value="Homme">
Homme
</option>
<option value="Femme">
Femme
</option>
<option value="Autre">
Autre
</option>
</select><br>
<br>
<label for="cle">Entrez la clé donnée par un Administrateur</label>
<input name="cle" type="text"><br>
<br>
<input name="submit" type="submit" value="S'inscrire"><br>
<br>
</form><a href="index.php?page=login">Retourner à la page de connexion</a>
</center>
</body>
</html>


Je n'ai pas fait le boulot a ta place mais juste corriger certaine erreur qui t’empêche de voir claire dans tout ça.
0
codeurh24 Messages postés 760 Date d'inscription samedi 29 mars 2014 Statut Membre Dernière intervention 8 septembre 2018 123
Modifié par codeurh24 le 4/05/2016 à 00:17
il y avait tellement de chose a dire que j'avais pas remaquer que tes variables post etait bien lier aux variables. Le truc c'est que tu va devoir creer une connection msqli pour les utiliser ou sinon tu peut simplement affecté tes variables aux variables post directement en attendant de faire mieux par la suite quand tu maitrisera mieux le B-A-BA
0
Matancy Messages postés 696 Date d'inscription dimanche 14 juin 2015 Statut Membre Dernière intervention 5 avril 2019 82
4 mai 2016 à 16:23
Bonjour,

Merci pour votre aide.
Je vais continuer mon tutoriel mais pour le moment je n'ai plus de problème.

Je vous remercie vraiment, j'aurais peut être encore besoin de vous :)

Matancy
0
theshadoo Messages postés 786 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 3 mai 2016 123
3 mai 2016 à 19:29
Déjà tu fais un
mysql_real_escape_string
alors que tu ne te trouve pas dans une requête sql, ça on le fait après, il est inutile de le faire dès lors que tu récupères tes variables de formulaire, c'est un post traitement qui s'effectue qu'une fois au moment de l'insertion ou update en base de donnée.

Après tu ne vérifies pas l'existence de tes variables envoyés en post avec isset par exemple.

Et pour les erreurs levés c'est un peu normale... php te dis qu'il ne connais pas les variables repeatpassword etc...

C'est logique puisque tu commences le traitement conditionnelles de ces variables à l'extérieur de ta condition $_POST.
Ce qui fait que même avant d'envoyer ton formulaire tu essaies d'effectuer un traitement sur des variables qui ne sont pas initialisé.

Tu vérifies si tes variables existes avec
empty()
mais empty ne vérifie pas si la variable existe ! cette fonction vérifie seulement si la variable est vide, et non si elle est initialisé.
-1