Fatal error:Call to undefined function clear_input
Zakarya93
Messages postés
1026
Statut
Membre
-
blackduck Messages postés 902 Statut Membre -
blackduck Messages postés 902 Statut Membre -
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 :
Une solution ? Merci d'avance :)
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 :)
A voir également:
- Fatal error:Call to undefined function clear_input
- Fan error lenovo - Forum Refroidissement
- Cmos checksum error ✓ - Forum Carte-mère/mémoire
- Error 1962 ✓ - Forum PC fixe
- Bad request error 403 paiement ✓ - Forum Réseaux sociaux
- Network error iptv - Forum TV & Vidéo
6 réponses
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.
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.
J'avoue ne pas avoir regardé le déroulement exact du script je me suis limité aux erreurs que tu m'as décrit.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 !
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 :
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>');
}
?>
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?
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');
}
}
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 :
Soit tu fais qqch comme ça
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.
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.
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; } }