Problème avec le register.php
Résolu
Zakarya93
Messages postés
1026
Statut
Membre
-
Zakarya93 Messages postés 1026 Statut Membre -
Zakarya93 Messages postés 1026 Statut Membre -
4 réponses
Car tu as une erreur, regardes le premier cadre, il te parle d'un paramètre manquant à une fonction.
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 ! )
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>
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();
}
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();
}
