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
Bonjour,

Pourquoi lorsque je m'inscris sur mon site j'ai tout ça ? :

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
Car tu as une erreur, regardes le premier cadre, il te parle d'un paramètre manquant à une fonction.
0
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
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 :
 $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 ! )



0
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
Register.func.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>
0
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
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
0
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
ah, je vois
0
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
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 :
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();
}


0
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
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
0
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
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à :
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();
}
0
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
Merci infiniment pour votre patience et compréhension ! :)
0