[RESOLU] problème connexion

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] problème connexion

Re: [RESOLU] problème connexion

par two3d » 28 févr. 2021, 01:13

Re: [RESOLU] problème connexion

par or 1 » 28 févr. 2021, 00:44

s'il y a déjà eu une requête pour vérifier le pseudo et mot de passe, il est inutile d'en refaire une autre pour récupérer l'id, il suffit de récupérer en plus l'id lors de la première requête.

Re: [RESOLU] problème connexion

par two3d » 27 févr. 2021, 23:50

oui parfait, n'oublie pas la vérification du mdp.

Je met le session_start() en haut de toutes mes pages sur les projets où j'ai un espace membre car en général j'ai un lien dans le menu du haut "espace membre" qui permet d’accéder au profil, donc pour savoir si je met le lien ou pas il me faut savoir si session pseudo/id existe, du coup il est dans un include dans toutes les pages.

Re: [RESOLU] problème connexion

par nestor94 » 27 févr. 2021, 22:05

C'est cohérent cela?

Code : Tout sélectionner

// Récupération de l'utilisateur pour mise en session $req = $bdd->prepare('SELECT id FROM membres WHERE pseudo = :pseudo'); $req->execute(array( 'pseudo' => $pseudo)); $resultat = $req->fetch(); if (!$resultat) { echo 'PROBLEME PSEUDO !'; } else { session_start(); $_SESSION['id'] = $resultat['id']; $_SESSION['pseudo'] = $pseudo; header('Location:membre.php'); exit();

Re: [RESOLU] problème connexion

par two3d » 27 févr. 2021, 18:53

$id ? par magie ?? :mrgreen: non il te faut d'abord le "SELECT" dans ta requête pour ensuite l'avoir dans ton tableau $row pui ça sera quelque chose comme session = $row['nom de l'id']

info supplémentaire: le exit peut être utilisé sans "()" si tu met rien à l'intérieur:
exit();
devient:
exit;

Re: problème connexion

par nestor94 » 27 févr. 2021, 17:37

Merci Two3d pour les correctifs. Pour la session?

Code : Tout sélectionner

$_SESSION['id'] = $id;

Re: problème connexion

par two3d » 27 févr. 2021, 14:35

Salut
if( session_id()=='' )
{
session_start();
}
//inutile si tu include pas cette page, tu na pas besoin de vérifier si session_start() existe:
session_start();//directement et seulement
$err_connexion = array();//créer un tableau pour ensuite afficher une chaine ne sert à rien
//fait plutôt:
$err_connexion = '';
$_SESSION['id'] = true;//je recommande de mettre l'id de ton utilisateur plutôt que "true", tu pourra le rechercher dans la base de données avec cet ID plutôt que le pseudo (les deux fonctionnent ceci dit), c'est mon avis

Re: problème connexion

par nestor94 » 27 févr. 2021, 10:42

J'ai remodifié mon script et il fonctionne à présent, en espérant qu'il soit propre.

Code : Tout sélectionner

<?php if( session_id()=='' ) { session_start(); } // connexion a la bdd require_once 'config.php'; // -------------- // 2- CONNEXION $err_connexion = array(); if(isset($_POST['connexmembre']) ) { if( !empty($_POST["pseudo"]) && !empty($_POST["password1"]) ) { // requete : username existe ? $pdostat = $bdd->prepare("SELECT pseudo, password1 FROM membres WHERE pseudo = :pseudo"); $pdostat->bindvalue(':pseudo',$_POST['pseudo'],PDO::PARAM_STR); $pdostat->execute(); if( $pdostat->rowCount()>0 ) // username OK { $row = $pdostat->fetch(); // on compare le mot de passe entré avec celui enregistré en bdd if( password_verify($_POST['password1'], $row['password1']) ) // pwd OK { // Mise en SESSION // $_SESSION['islogged'] = true; $_SESSION['id'] = true; $_SESSION['pseudo'] = $POST['pseudo']; // ATTENTION ! ON NE MET JAMAIS LE MOT DE PASSE EN SESSION !! // on redirige vers l'espace membre header('Location:page_test.html'); exit(); } else{ $err_connexion = 'Identifiant et/ou mot de passe incorrect.'; } } } } ?>

Re: problème connexion

par nestor94 » 26 févr. 2021, 22:07

Désolé! J'ai remodifié le script de cette façon:

Code : Tout sélectionner

<?php if( session_id()=='' ) { session_start(); } // connexion a la bdd include_once 'config.php'; error_reporting(E_ALL); ini_set("display-errors",1); unset($_SESSION['islogged']); unset($_SESSION['pseudo']); // -------------- //Connexion if(isset($_POST['connexmembre']) ) { if (!empty($pseudo) && !empty($password1)) { $pseudo = $_POST['pseudo']; $password1 = $_POST['password1']; $req = $bdd->prepare('SELECT id FROM membres WHERE pseudo = ?'); $req->execute(array($pseudo)); $insertion = $req->fetch(); if ($insertion && password_verify($password1, $insertion['password1'])) { session_start(); $_SESSION['id'] = $insertion['id']; $_SESSION['pseudo'] = $pseudo; header("Location: page_test.html?"); } else { echo '<div class="error-login">IDENTIFICATION KO !</div>'; } } } ?>
il ne se passe rien...

Re: problème connexion

par or 1 » 22 févr. 2021, 19:22

$pdostat->bindvalue(':pseudo', $_POST['pseudo'], PDO::PARAM_STR);
$pdostat->bindvalue(':password1',password_hash($_POST["password1"],PASSWORD_DEFAULT ),PDO::PARAM_STR);
$pdostat->execute(array(
'pseudo' => $pseudo,
'password1' => $password1));

il faudrait comprendre son code.

Re: problème connexion

par nestor94 » 22 févr. 2021, 19:10

J'ai viré un else (le dernier) et maintenant j'ai:

Notice: Undefined variable: pseudo in C:\wamp64\www\connexion_pb.php on line 23
Notice: Undefined variable: password1 in C:\wamp64\www\connexion_pb.php on line 24
Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\wamp64\www\connexion_pb.php on line 24

Re: problème connexion

par nestor94 » 22 févr. 2021, 18:14

voici mon code corrigé?

Code : Tout sélectionner

<?php if( session_id()=='' ) { session_start(); } // connexion a la bdd include_once 'config.php'; error_reporting(E_ALL); ini_set("display-errors",1); unset($_SESSION['islogged']); unset($_SESSION['pseudo']); // -------------- // 2- CONNEXION $err_connexion = array(); if(isset($_POST['connexmembre']) ) { if( !empty($_POST["pseudo"]) && !empty($_POST["password1"]) ) { // requete : username existe ? $pdostat = $bdd->prepare("SELECT pseudo, password1 FROM membres WHERE pseudo = :pseudo"); $pdostat->bindvalue(':pseudo', $_POST['pseudo'], PDO::PARAM_STR); $pdostat->bindvalue(':password1',password_hash($_POST["password1"],PASSWORD_DEFAULT ),PDO::PARAM_STR); $pdostat->execute(array( 'pseudo' => $pseudo, 'password1' => $password1)); $resultat = $pdostat->fetch(); // on compare le mot de passe entré avec celui enregistré en bdd if( password_verify($_POST['password1'], $row['password1']) ) // pwd OK { // Mise en SESSION $_SESSION['islogged'] = true; $_SESSION['pseudo'] = $POST['pseudo']; // ATTENTION ! ON NE MET JAMAIS LE MOT DE PASSE EN SESSION !! // on redirige vers l'espace membre header("Location: membre.php?id=" . $_SESSION['id']); } } else { $err_connexion[] = 'Identifiant et/ou mot de passe incorrect.'; } else { $err_connexion[] = 'Remplissez tous les champs obligatoires.'; } } ?>
Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\wamp64\www\connexion_pb.php on line 42

Re: problème connexion

par or 1 » 22 févr. 2021, 17:53

correction effectuée mais toujours meme message.
ce n'est pas possible, si le nom est le bon, que le message d'erreur soit le même. il faut vérifier que le fichier corrigé correspondant bien au fichier ouvert dans le navigateur.

Re: problème connexion

par nestor94 » 22 févr. 2021, 17:47

Code : Tout sélectionner

<?php # paramètres pour le hachage des mots de passe //$password_options = [ 'algo' => PASSWORD_DEFAULT, 'options' => [ 'cost' => 12 ] ]; $dbname= 'xxxxx'; $user = 'root'; $password = ''; $host = '127.0.0.1'; try { $bdd = new PDO('mysql:host='.$host .';dbname='.$dbname, $user, $password ); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $bdd->exec("SET CHARACTER SET utf8"); } catch (PDOException $e) { echo "<p>Erreur : " . $e->getMessage() . "</p>"; exit(); } ?>

Re: problème connexion

par or 1 » 22 févr. 2021, 17:18

il y a quoi dans config.php ?