bon,voila je suis dans la muise ! quand je rentre mon identifiant et mon mot de passe rien ne se passe en dirais que ca ne verifie pas dutout dans la base de donnees l'existance de ce mot de passe et de ce nom d'utilisateur s'il vous plait aidez moi !
<?php
$error=array();
if(isset($_POST['submit']))
{
$nom_dutilisateur=htmlspecialchars(trim($_POST['nom_dutilisateur']));
$mot_de_passe=htmlspecialchars(trim($_POST['mot_de_passe']));
if (empty($nom_dutilisateur)){
$error ['nom_dutilisateur'] = '*saisir votre identifiant';
}
if(empty($mot_de_passe)){
$error ['mot_de_passe'] = '*saisir un mot de passe';
$mot_de_passe=md5($mot_de_passe);
}else if (strlen($mot_de_passe)<3)
$error['mot_de_passe'] ='*mot de passe trop petit';
if (empty($error)){
$bdd = new PDO('mysql:host=localhost;dbname=projet_final;charset=utf8', 'root', '');
function user_exists($bdd, $nom_dutilisateur) {
$nom_dutilisateur = filtres($nom_dutilisateur);
$con= $bdd->prepare("SELECT * FROM etudiant WHERE nom_dutilisateur='$nom_dutilisateur' AND mot_de_passe='$mot_de_passe'");
$con->execute(array( ':nom_dutilisateur'=>$nom_dutilisateur, ':mot_de_passe'=>$mot_de_passe ));
$count= $con->fetch(PDO::FETCH_ASSOC);
if($count > 0){
echo "good";
}
}
}
}
?>
Je n'ai jamais fait de requête comme cela, mais plutôt :
"SELECT * FROM etudiant WHERE nom_dutilisateur=:nom_dutilisateur AND mot_de_passe= :mot_de_passe"
Sinon, penses à débug ton code, soit via xdebug, ou vardump, vérifie que ta requête s'effectue bien, fait un fetchAll et vérifie ce que contient ta variable. ^^
Salut salut, :)
htmlspecialchars ne sert qu'à l'affichage. C'est n'importe quoi, définir une fonction en plein millieu de ton code...
<?php
$nom_dutilisateur = filtres($nom_dutilisateur);
C'est quoi ça :
<? php
if (empty($error)){
$bdd = new PDO('mysql:host=localhost;dbname=projet_final;charset=utf8', 'root', '');
function user_exists($bdd, $nom_dutilisateur) {
$nom_dutilisateur = filtres($nom_dutilisateur);
$con= $bdd->prepare("SELECT * FROM etudiant WHERE nom_dutilisateur='$nom_dutilisateur' AND mot_de_passe='$mot_de_passe'");
$con->execute(array( ':nom_dutilisateur'=>$nom_dutilisateur, ':mot_de_passe'=>$mot_de_passe ));
$count= $con->fetch(PDO::FETCH_ASSOC);
if($count > 0){
echo "good";
}
}
Pourrais tu faires un effort s'il te plait ? :)
Cordialement.
Avant de mélanger fonction et "code brut", fais déjà un code qui marche en "brut" ensuite tu feras des fonction/méthodes/class... bref, tout ton code à est revoir voici une liste de ce qui ne va pas (non exhaustive) :
Cordialement.
pour l'organistion je sais c'est un n'importe quoi ! le probleme c'est la fonction user_exists dont je ne suis absolument pas sur je veux que ca verifie s'il y a une ligne dans ma table etudiant qui a cet identifiant et ce mot de passe mais rien ne se passe ! :(
Voila ton code:
<?php
if(isset($_POST['submit']))
{
$pseudo = htmlentities(trim($_POST['nom_dutilisateur']));
$password = htmlentities(trim($_POST['mot_de_passe']));
$errors = [];
$error_check = false;
if(empty($pseudo)) {
$error_check = true;
$errors['pseudo_empty'] = "*saisir votre identifiant";
}
if(empty($password)) {
$error_check = true;
$errors['password_empty'] = "*saisir votre mot de passe";
} else if(strlen($password) < 3) {
$error_check = true;
$errors['password_lenght'] = "* mot de passe trop petit";
}
if($error_check == false) {
$bdd = new PDO('mysql:host=localhost;dbname=projet_final;charset=utf8', 'root', '');
$con = $bdd->prepare("SELECT * FROM etudiant WHERE nom_dutilisateur = ? AND mot_de_passe = ?");
$con->execute(array($pseudo,$password));
$row = $con->rowCount();
if($row > 0) {
echo "good";
} else {
$errors['info'] = "no good";
}
}
}
Ouais tout à fais d'accord avec toi, cependant je ne pense pas que ça aide de lui balancer un code "fonctionnel" (non tester) donc bon tu l'aiguille et tu le laisse ce débrouiller avec des info's c'est le meilleur moyen d'apprendre après ce n'est que mon avis. ;)
PS : Enlève ce maudit htmlspecialchars stp...