par
moogli » 17 oct. 2016, 12:25
salut,
soit tu ne nous donnes pas le code complet soit tu utilises les registers_globals, dans les deux c'est pas bien
La requête sql semble correcte, l'as tu testée ?
tu peux utiliser la méthode bindValue afin d'apporter un peu de lisibilitée à ton code.
il est possible d'utiliser plusieurs fois le même place holder.
Dans le principe ; une fonction /méthode une fonctionnalité il faut une fonction qui valide, ou pas, l'authentification et c'est tout, le reste c'est le 'contrôleur' qui se démarde.
du coup cela peux ceci
<?php
function authentificationPro($pseudo, $password)
{
$req = $bdd->prepare('SELECT membre,pseudo,email,id_region,statut FROM simply_user WHERE (pseudo = :pseudo OR email =:pseudo) AND password = :password');
// bind des données sur les placeholder
$query->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
$query->bindValue(':password', $password, PDO::PARAM_STR);
$req->execute();
$retour = false;
if ($req->rowCount() > 0) {
$resultat = $req->fetch(PDO::FETCH_ASSOC);
$_SESSION['membre'] = $resultat['membre'];
$_SESSION['pseudo'] = $resultat['pseudo'];
$_SESSION['email'] = $resultat['email'];
$_SESSION['id_region'] = $resultat['id_region'];
$_SESSION['type'] = 'client';
$_SESSION['statut'] = $resultat['statut'];
$retour = true;
}
return $retour;
}
// utilisation
if (authentificationPro($_POST['pseudo'], $_POST['password'])) {
if (!empty($_POST['remember'])) {
setcookie('identification', serialize(array($pseudo, $password)), mktime(0, 0, 0, date('m'), date('d'), date('Y')+1), '/');
}
header('Location: /sortie/region-'.simplification($aRegion[$_SESSION['id_region']]).'.html');
} else {
echo '<div class="alert alert-danger" role="alert"><i class="fa fa-frown-o"></i> Mauvais identifiant ou mot de passe !</div>';
}
en fait, dans l'absolue et en poo la fonction devrait retourner un objet utilisateur (ou false) afin de pourvoir ensuite le mettre en session (ou pas d'ailleurs mais ce n’est pas de la responsabilité de la fonction d’authentification de faire cela).
j'ai extrapolé sur ton code pour faire celui ci vu que l'on pas tout ce qui pourrait être utile.
A toi d'adapter.
ps une solution fonctionnelle ici
php-debutant/formulaire-connexion-avec- ... 77113.html
@+
salut,
soit tu ne nous donnes pas le code complet soit tu utilises les registers_globals, dans les deux c'est pas bien :)
La requête sql semble correcte, l'as tu testée ?
tu peux utiliser la méthode bindValue afin d'apporter un peu de lisibilitée à ton code.
il est possible d'utiliser plusieurs fois le même place holder.
Dans le principe ; une fonction /méthode une fonctionnalité il faut une fonction qui valide, ou pas, l'authentification et c'est tout, le reste c'est le 'contrôleur' qui se démarde.
du coup cela peux ceci
[php]<?php
function authentificationPro($pseudo, $password)
{
$req = $bdd->prepare('SELECT membre,pseudo,email,id_region,statut FROM simply_user WHERE (pseudo = :pseudo OR email =:pseudo) AND password = :password');
// bind des données sur les placeholder
$query->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
$query->bindValue(':password', $password, PDO::PARAM_STR);
$req->execute();
$retour = false;
if ($req->rowCount() > 0) {
$resultat = $req->fetch(PDO::FETCH_ASSOC);
$_SESSION['membre'] = $resultat['membre'];
$_SESSION['pseudo'] = $resultat['pseudo'];
$_SESSION['email'] = $resultat['email'];
$_SESSION['id_region'] = $resultat['id_region'];
$_SESSION['type'] = 'client';
$_SESSION['statut'] = $resultat['statut'];
$retour = true;
}
return $retour;
}
// utilisation
if (authentificationPro($_POST['pseudo'], $_POST['password'])) {
if (!empty($_POST['remember'])) {
setcookie('identification', serialize(array($pseudo, $password)), mktime(0, 0, 0, date('m'), date('d'), date('Y')+1), '/');
}
header('Location: /sortie/region-'.simplification($aRegion[$_SESSION['id_region']]).'.html');
} else {
echo '<div class="alert alert-danger" role="alert"><i class="fa fa-frown-o"></i> Mauvais identifiant ou mot de passe !</div>';
}[/php]
en fait, dans l'absolue et en poo la fonction devrait retourner un objet utilisateur (ou false) afin de pourvoir ensuite le mettre en session (ou pas d'ailleurs mais ce n’est pas de la responsabilité de la fonction d’authentification de faire cela).
j'ai extrapolé sur ton code pour faire celui ci vu que l'on pas tout ce qui pourrait être utile.
A toi d'adapter.
ps une solution fonctionnelle ici http://forum.phpfrance.com/php-debutant/formulaire-connexion-avec-choix-email-login-t277113.html
@+