Fatal error:Call to undefined function clear_input

Fermé
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 - 2 juin 2015 à 11:14
blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 - 2 juin 2015 à 14:13
Bonjour,

J'ai l'erreur : Fatal error: Call to undefined function clear_input_data() in C:\wamp\www\rs\pages\register.php on line 159


Voici mon 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
{
               
        $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";
    }
     
    if (empty($password))
    {
      $errors[] ="Veuillez saisir un password";
    }
     
    if($password != $repeatpassword)
    {
     $errors[] = "Vos deux password doivent être identiques";
    }
     
    if(!filter_var($email,FILTER_VALIDATE_EMAIL))
    {
     $errors[] = "Votre adresse email n'est pas correcte";    
    }
     
    if(empty($apropos))
    {
     $errors[] = "Veuillez vous décrire en quelques lignes";    
    }
     
    if(pseudo_existe($email) == 1)
    {
     $errors[] = "Ce pseudo n'est pas disponible";
    }
     
    if(email_existe($email) == 1)
    {
     $errors[] = "Cette adresse email existe déjà <br> avez vous oublié votre <a href='#'>password? </a>";
    }
     
    if(!empty($errors))
    {
     foreach($errors as $error)
     {
      echo "<div class='error'>".$error."</div>";
     }
      }
       inscrire_utilisateur($pseudo,$password,$email,$sexe,$apropos);
                        die('Inscription terminée, vous pouvez vous <a href=\'index.php?page=login\'>connecter</a>');
}
?>
 
 
<?php
 
require('functions/connect.php');
require_once('functions/register.func.php');
 
  
 //si le formulaire a été soumis
 if(isset($_POST['register'])) {
 
  // si tous les champs sont remplis
  if(not_empty(['name', 'pseudo', 'email', 'password', 'password_confirm'])) {
 
   $errors = []; //tableau contenant l'ensemble des erreurs
 
   extract($_POST);
 
   
 
   //si le pseudo est deja dans la bdd
   if(is_already_in_use('pseudo', $pseudo, 'users')) {
    $errors[] = "Le pseudonyme est déja utilisé.";
   }
 
   //si l'adresse mail est deja dans la bdd
   if(is_already_in_use('email', $email, 'users')) {
    $errors[] = "L'adresse e-mail est déja utilisée.";
   }
 
 
   //si il y a 0 erreur
   if(count($errors) == 0) {
 
     
        //enregistrement du membre dans la base de données
        $q = $db->prepare('INSERT INTO users(name, pseudo, email, password)
                  VALUES(:name, :pseudo, :email, :password)');
        $q->execute([
 
         'name' => $name,
         'pseudo' => $pseudo,
         'email' => $email,
         'password' => ($password)
 
        ]);
 
        redirect('index.php');
 
   } else {
    save_input_data();
   }
 
  } else {
 
   //si tous les champs ne sont pas remplis
   $errors[] = "Veuillez remplir s'il vous plaît tous les champs";
   save_input_data();
 
 
  }
 
 } else {
  clear_input_data();
 }
 
 
?>
 
 
<?php require('views/register.views.php'); ?>



Une solution ? Merci d'avance :)

6 réponses

blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 96
2 juin 2015 à 11:38
Poste les scripts functions/connect.php et functions/register.func.php
1
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
Modifié par Zakarya93 le 2/06/2015 à 11:41
Merci de ton aide !!

connect.php :

<?php
try 
{
  $bdd = new PDO ('mysql:host=localhost;dbname=rs;charset=utf8', 'root', '');
}
catch(Exception $e) 
{
  die('Erreur : '.$e->getMessage());
}


Register.func.php :

<?php
try 
{
  $bdd = new PDO ('mysql:host=localhost;dbname=rs;charset=utf8', 'root', '');
}
catch(Exception $e) 
{
  die('Erreur : '.$e->getMessage());
}

function inscrire_utilisateur($pseudo,$password,$email,$sexe,$apropos)
{
  Global $bdd;
  
  $password=sha1($password);
  $sql = "INSERT INTO utilisateurs(pseudo,password,email,sexe,apropos)
          VALUES (:pseudo,:password,:email,:sexe,:apropos)";
  $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->execute();
}



//vérifie que les données ne sont pas en double dans la base de données
if(!function_exists('is_already_in_use')) {
 function is_already_in_use($field, $value, $table) {
  global $db;

  $q = $db->prepare("SELECT id FROM $table WHERE $field = ?");
  $q->execute([$value]);

  $count = $q->rowCount();

  $q->closeCursor();

  return $count;
 }
}
0
blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 96
2 juin 2015 à 11:29
Salut,

Dans le code que tu as fournis la fonction en question n'est pas déclarée. Je suppose qu'elle est censé être dans un des fichiers inclus? Vérifie que les bons fichiers sont bien utilisés, que le nom de la fonction est exactement celui déclaré, tu peux essayé de copier coller la fonction dans le code directement pour voir si elle bien prise en compte.
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
2 juin 2015 à 11:33
Je ne trouve pas, j'ai pris ce code de ligne 98 à la fin bêtement car on me l'a donné dans ce topic en espèrant me bloquer les doublons de pseudos : www.commentcamarche.net/forum/affich-31905072-function-pseudo-existe-pseudo
0
blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 96
2 juin 2015 à 11:51
J'avoue ne pas avoir regardé le déroulement exact du script je me suis limité aux erreurs que tu m'as décrit.
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
2 juin 2015 à 11:52
Ah, as tu une solution pour le problème du dessus ?
0
blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 96
2 juin 2015 à 14:13
So? Rien de neuf?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 96
2 juin 2015 à 11:42
Ok c'est normal que tu es ce message d'erreur la fonction clear_input_data() n'est pas déclarée ni dans le script principal ni dans ceux inclus, il va falloir la rédiger !
-1
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
2 juin 2015 à 11:47
Lorsque je supprime le script que j'ai copié collé ligne 98 jusque fin (premier script) je n'ai aucune erreur cependant php ne detecte pas les doublons
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
2 juin 2015 à 11:49
Je recois cette erreur : Fatal error: Call to undefined function pseudo_existe() in C:\wamp\www\rs\pages\register.php on line 75

Register.php sans le c/c :
<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
{
              
		$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";
    }
    
    if (empty($password))
    {
      $errors[] ="Veuillez saisir un password";
    }
    
    if($password != $repeatpassword)
    {
     $errors[] = "Vos deux password doivent être identiques";
    }
    
    if(!filter_var($email,FILTER_VALIDATE_EMAIL))
    {
     $errors[] = "Votre adresse email n'est pas correcte";     
    }
    
    if(empty($apropos))
    {
     $errors[] = "Veuillez vous décrire en quelques lignes"; 	 
    }
	
	if(pseudo_existe($email) == 1)
	{
	 $errors[] = "Ce pseudo n'est pas disponible";
    }
	
	if(email_existe($email) == 1)
	{
	 $errors[] = "Cette adresse email existe déjà <br> avez vous oublié votre <a href='#'>password? </a>";
	}
	
    if(!empty($errors))
    {
     foreach($errors as $error)
     {
      echo "<div class='error'>".$error."</div>";
     }
      } 
	   inscrire_utilisateur($pseudo,$password,$email,$sexe,$apropos);
                        die('Inscription terminée, vous pouvez vous <a href=\'index.php?page=login\'>connecter</a>');
}
?>
0
blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 96
2 juin 2015 à 11:55
En effet je ne vois pas non plus la fonction pseudo_existe, pourtant en parcourant l'ancien poste que tu as fais sur le site j'ai pu voir un script ou tu l'avais apparemment déclarée, l'as tu supprimé entre temps?
-1
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
2 juin 2015 à 11:58
Tu parles de ceci ?
//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)
{
 
}
 
//sinon
else
{
    echo('Le pseudo que vous avez choisi est déjà prit');
}
}
0
blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 96
2 juin 2015 à 12:00
Oui c'est un début de fonction pseudo_existe
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
2 juin 2015 à 12:01
Je le mets dans register.func.php n'est ce pas ? (encore merci d'être aussi actif)
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
2 juin 2015 à 12:06
Malgré ça j'ai : Fatal error: Call to undefined function email_existe() in C:\wamp\www\rs\pages\register.php on line 80
0
blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 96
Modifié par blackduck le 2/06/2015 à 12:09
Oui tu peux mais tu devrais l'améliorer un petit peu car je ne vois pas de return dans ta fonction, mais dans ta condition tu considères un retour :
if(pseudo_existe($email) == 1)

Soit tu fais qqch comme ça
if($etat == 0){
return 0;
}else{
return 1;
//echo('Le pseudo que vous avez choisi est déjà prit');
}

Ce qui en revient à utiliser un booléen plutôt que le résultat du count qui en lui même n'est pas forcément utile dans cette fonction.
Regardes si le pseudo est présent tu renvois vrai ou faux.
0