Problème avec le register.php
Résolu/Fermé
Zakarya93
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
-
7 juin 2015 à 16:32
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 - 8 juin 2015 à 20:11
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 - 8 juin 2015 à 20:11
4 réponses
NHenry
Messages postés
15113
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 avril 2024
331
7 juin 2015 à 16:38
7 juin 2015 à 16:38
Car tu as une erreur, regardes le premier cadre, il te parle d'un paramètre manquant à une fonction.
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
7 juin 2015 à 19:12
7 juin 2015 à 19:12
Bonjour Zakarya93,
Comme pour chacune de tes questions .......merci de nous fournir le code qui te pose problème !
Sans ça .. impossible de t'aider !
Il nous faut :
- Le code de ta page REGISTER
- Le code de ta page register.func.php
Sachant déjà que tu pourrais traiter les soucis de UNDEFINED de tes variables en utilisant, comme je te l'ai déjà précisé.... la fonction ISSET ( + l'écriture TERNAIRE ) pour récupérer le contenu de tes variables...
Par exemple :
Ce qui revient à la même chose que si tu avais écrit :
==>> Ce type de code est à utiliser pour toutes les variables de type POST / GET / SESSION / COOKIE et ARRAY.
Cela évite les WARNING que tu as !
Pour les autres erreurs ( la première et la dernière de ton image....) là... il nous faut ton code.
(sachant que comme le dit Nhenry... la première est liée à une erreur dans le nombre d'arguments que tu utilises pour appeller ta fonction ! )
Comme pour chacune de tes questions .......merci de nous fournir le code qui te pose problème !
Sans ça .. impossible de t'aider !
Il nous faut :
- Le code de ta page REGISTER
- Le code de ta page register.func.php
Sachant déjà que tu pourrais traiter les soucis de UNDEFINED de tes variables en utilisant, comme je te l'ai déjà précisé.... la fonction ISSET ( + l'écriture TERNAIRE ) pour récupérer le contenu de tes variables...
Par exemple :
$toto = isset($_POST['unevariable']) ? $_POST['unevariable'] : NULL;
Ce qui revient à la même chose que si tu avais écrit :
if(isset($_POST['unevariable']) ){ $toto = $_POST['unevariable']; }else{ $toto = NULL; }
==>> Ce type de code est à utiliser pour toutes les variables de type POST / GET / SESSION / COOKIE et ARRAY.
Cela évite les WARNING que tu as !
Pour les autres erreurs ( la première et la dernière de ton image....) là... il nous faut ton code.
(sachant que comme le dit Nhenry... la première est liée à une erreur dans le nombre d'arguments que tu utilises pour appeller ta fonction ! )
Zakarya93
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
10
8 juin 2015 à 17:43
8 juin 2015 à 17:43
Register.func.php :
Register.php :
<?php function inscrire_utilisateur($pseudo,$password,$email,$sexe,$apropos,$avatar) { Global $bdd; $password=sha1($password); $sql = "INSERT INTO utilisateurs(pseudo,password,email,sexe,apropos,avatar) VALUES (:pseudo,:password,:email,:sexe,:apropos,'defaut.jpg')"; $result = $bdd->prepare($sql); $result->bindValue('pseudo', $pseudo, PDO::PARAM_STR); $result->bindValue('password', $password, PDO::PARAM_STR); $result->bindValue('email', $email, PDO::PARAM_STR); $result->bindValue('sexe', $sexe, PDO::PARAM_STR); $result->bindValue('apropos', $apropos, PDO::PARAM_STR); $result->bindValue('avatar', defaut.jpg, PDO::PARAM_STR); $result->execute(); } //la function qui va vérifier si pseudo existe($pseudo) function pseudo_existe($pseudo) { $bdd = new PDO('mysql:host=localhost;dbname=rs;charset=utf8', 'root', ''); //donc la, la verification: $req = $bdd->query('SELECT COUNT(*) FROM utilisateurs WHERE pseudo="'.$pseudo.'"'); $etat = $req->fetchColumn(); if($etat == 0){ return 0; }else{ return 1; //echo('Le pseudo que vous avez choisi est déjà prit'); } } //la function qui va vérifier si l'email existe($email) function email_existe($email) { $bdd = new PDO('mysql:host=localhost;dbname=rs;charset=utf8', 'root', ''); //donc la, la verification: $req = $bdd->query('SELECT COUNT(*) FROM utilisateurs WHERE email="'.$email.'"'); $etat = $req->fetchColumn(); if($etat == 0){ return 0; }else{ return 1; } } ?>
Register.php :
<h1>Inscription</h1> <?php if (!isset($_POST['submit'])) { ?> <form method="POST" action=""> <label for='sexe'>Sexe</label> <select name="sexe"> <?php echo isset($sexe)?'<option value='.$sexe.'>'.$sexe.'</option>':""; ?> <?php echo $sexe != 'Homme' ?'<option value="Homme">Homme</option>':""; ?> <?php echo $sexe != 'Femme' ?'<option value="Femme">Femme</option>':""; ?> </select><br /><br/> <label for="pseudo">Votre pseudo : </label> <input type="text" name ="pseudo" value='<?php echo isset($pseudo) ? $pseudo :""; ?>'><br /> <label for="password">Votre password : </label> <input type="password" name ="password"><br /> <label for="repeatpassword">Repetez votre password : </label> <input type="password" name ="repeatpassword"><br /> <label for="email">Veuillez saisir votre email : </label> <input type="text" name ="email" value='<?php echo isset($email) ? $email :""; ?>'><br /> <label for="apropos">A propos de vous </label> <textarea rows="6" cols="30" name="apropos"><?php echo isset($apropos) ? $apropos : ""; ?></textarea><br /><br /> <input type="submit" value="S'inscrire" name="submit"> </form> <?php } else { $test=0; $sexe = htmlspecialchars(strip_tags($_POST['sexe'])); $pseudo = htmlspecialchars(strip_tags($_POST['pseudo'])); $password = htmlspecialchars(strip_tags($_POST['password'])); $repeatpassword = htmlspecialchars(strip_tags($_POST['repeatpassword'])); $email = htmlspecialchars(strip_tags($_POST['email'])); $apropos = htmlspecialchars(strip_tags($_POST['apropos'])); if(empty($pseudo)) { $errors[] ="Veuillez saisir un pseudo"; $test=1; } if (empty($password)) { $errors[] ="Veuillez saisir un password"; $test=1; } if($password != $repeatpassword) { $errors[] = "Vos deux password doivent être identiques"; $test=1; } if(!filter_var($email,FILTER_VALIDATE_EMAIL)) { $errors[] = "Votre adresse email n'est pas correcte"; $test=1; } if(empty($apropos)) { $errors[] = "Veuillez vous décrire en quelques lignes"; $test=1; } if(pseudo_existe($pseudo) == 1) { $errors[] = "Ce pseudo n'est pas disponible"; $test=1; } if(email_existe($email) == 1) { $errors[] = "Cette adresse email existe déjà <br> avez vous oublié votre <a href='#'>password ?</a>"; $test=1; } if(!empty($errors)) { foreach($errors as $error) { echo "<div class='error'>".$error."</div>"; } } if ($test !== 1) { inscrire_utilisateur($pseudo,$password,$email,$sexe,$apropos); die('Inscription terminée, vous pouvez vous <a href=\'index.php?page=login\'>connecter</a>'); } } ?> <a href="http://localhost/rs/index.php?page=login" >Retourner à la page de connexion </a>
hharchi9
Messages postés
567
Date d'inscription
mercredi 18 décembre 2013
Statut
Membre
Dernière intervention
1 juillet 2015
24
8 juin 2015 à 19:44
8 juin 2015 à 19:44
Bonsoir,
Ta fonction inscrire_utilisateur attend un autre paramètre $avatar que tu ne lui fournis pas lors de l'appel, dans le fichier register.php
Ta fonction inscrire_utilisateur attend un autre paramètre $avatar que tu ne lui fournis pas lors de l'appel, dans le fichier register.php
Zakarya93
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
10
8 juin 2015 à 19:50
8 juin 2015 à 19:50
ah, je vois
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
8 juin 2015 à 19:55
8 juin 2015 à 19:55
Sans oublier que tu as oublié des QUOTES autour du nom de ton image...
Tu pourrais aussi donner une valeur par défaut au paramètre $avatar ... comme ça .. si tu ne mets pas ce paramètre dans l'appel à la fonction.. tu n'auras pas d'erreur.
ce qui donne :
Tu pourrais aussi donner une valeur par défaut au paramètre $avatar ... comme ça .. si tu ne mets pas ce paramètre dans l'appel à la fonction.. tu n'auras pas d'erreur.
ce qui donne :
function inscrire_utilisateur($pseudo,$password,$email,$sexe,$apropos,$avatar="defaut.jpg"){ Global $bdd; $password=sha1($password); $sql = "INSERT INTO utilisateurs(pseudo,password,email,sexe,apropos,avatar) VALUES (:pseudo,:password,:email,:sexe,:apropos,'defaut.jpg')"; $result = $bdd->prepare($sql); $result->bindValue('pseudo', $pseudo, PDO::PARAM_STR); $result->bindValue('password', $password, PDO::PARAM_STR); $result->bindValue('email', $email, PDO::PARAM_STR); $result->bindValue('sexe', $sexe, PDO::PARAM_STR); $result->bindValue('apropos', $apropos, PDO::PARAM_STR); $result->bindValue('avatar', $avatar, PDO::PARAM_STR); $result->execute(); }
Zakarya93
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
10
8 juin 2015 à 19:57
8 juin 2015 à 19:57
Encore merci pour votre aide qui m'est chere ! j'ai cette erreur : Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\wamp\www\rs\functions\register.func.php on line 16
avec cette correction appliquée
avec cette correction appliquée
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
>
Zakarya93
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
8 juin 2015 à 20:07
8 juin 2015 à 20:07
je n'avais pas vu que tu avais AUSSI mis le nom de l'image par défaut directement dans la requête...
y'a vraiment intérêt à tout relire avec toi ... tu arrives à buguer un programme à 50 endroits différents en même temps ... :-)
voilà :
y'a vraiment intérêt à tout relire avec toi ... tu arrives à buguer un programme à 50 endroits différents en même temps ... :-)
voilà :
function inscrire_utilisateur($pseudo,$password,$email,$sexe,$apropos,$avatar="defaut.jpg"){ Global $bdd; $password=sha1($password); $sql = "INSERT INTO utilisateurs(pseudo,password,email,sexe,apropos,avatar) VALUES (:pseudo,:password,:email,:sexe,:apropos,:avatar)"; $result = $bdd->prepare($sql); $result->bindValue('pseudo', $pseudo, PDO::PARAM_STR); $result->bindValue('password', $password, PDO::PARAM_STR); $result->bindValue('email', $email, PDO::PARAM_STR); $result->bindValue('sexe', $sexe, PDO::PARAM_STR); $result->bindValue('apropos', $apropos, PDO::PARAM_STR); $result->bindValue('avatar', $avatar, PDO::PARAM_STR); $result->execute(); }
Zakarya93
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
10
8 juin 2015 à 20:11
8 juin 2015 à 20:11
Merci infiniment pour votre patience et compréhension ! :)