[RESOLU] Page de connexion automatique

Petit nouveau ! | 3 Messages

07 déc. 2018, 04:24

Bonjour,
Après un million de tentatives infructueuses, je m'avoue vaincu.
J'ai créé un site web,, juste un site pour regrouper quelques amateurs de pêche. Rien de grandiose.

Il fonctionne mais voilà que j'ai voulu installer un bouton de connexion automatique pour faciliter la navigation des membres. J'ai d'abord consulté des tutoriels sur le sujet puis j'ai opté pour la solution cookie mais les échecs consécutifs à mettre cette option en pratique sont venus à bout de ma ténacité.

Je vous montre le code. Il fonctionne bien pour la connexion. Il rejette les mauvais pseudos et mots de passe. Il accepte la connexion si les bons identifiants sont reconnus par la base de donnees. Mais ça s'arrête là. Il ne veut rien savoir de la connexion automatique même si les sessions fonctionnent bien et les cookies sont crées. De plus j'ai comparé les valeurs des sessions et des cookies et elles correspondent. De toute évidence quelque chose m'échappe mais je ne le vois pas.

Merci de m'accorder un peu de votre temps car franchement je suis à court d'idées. Mais je vais continuer à chercher.
a+
La page connexion:

Code : Tout sélectionner

<?php session_start(); include('mabd.php'); include_once('config_cookie.php'); if(isset($_POST['entres'])) { $pseudo = htmlspecialchars($_POST['pseudo']); $passe = password_hash($_POST['passe'], PASSWORD_DEFAULT); if(!empty($_POST['pseudo']) AND !empty($_POST['passe'])) { $req = $bdd->prepare('SELECT id, passe FROM membres WHERE pseudo = :pseudo'); $req->execute(array( 'pseudo' => $pseudo)); $info = $req->fetch(); if ($info) { $isPasswordCorrect = password_verify($_POST['passe'], $info['passe']); if ($isPasswordCorrect) { session_start(); $_SESSION['id'] = $info['id']; $_SESSION['pseudo'] = $pseudo; $_SESSION['passe'] = $info['passe']; if(isset($_POST['souvenir'])) { setcookie('pseudo',$pseudo,time()+3600*24*365,null,null,false,true); setcookie('passe',$info['passe'],time()+3600*24*365,null,null,false,true); echo 'Vous êtes connecté !'; header('Location: index.php'); } else { echo "Cookies pas mangeables" ; } } else{ echo 'Mauvais mot de passe !'; } } else{ echo 'Mauvais pseudo !'; } } else { echo 'Tous les champs ne sont pas complétés !'; } } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title> connexion</title> <style> form { padding: 40px; margin-left: 30%; } </style> </head> <body> <form method="post" action=""> <label for="pseudo">votre pseudo SVP :</label><br /> <input type="text" name="pseudo" id="pseudo" /> <br /> <label for="passe">mot de passe :</label><br /> <input type="password" name="passe" id="passe" /> <br /><br /> <label for="souvenir">Se souvenir de moi ?</label> <input type="checkbox" name="souvenir" id="souvenir" /><br /> <br /> <input type="submit" name="entres" value="se connecter" /> </form> </body> </html>
*****************
Le (config_cookie) inclus en début de page:

Code : Tout sélectionner

<?php include('mabd.php'); if(!isset($_SESSION['id']) AND isset($_COOKIE['pseudo'],$_COOKIE['passe']) AND !empty($_COOKIE['pseudo']) AND !empty($_COOKIE['passe'])) { $req = $bdd->prepare('SELECT * FROM membres WHERE pseudo = ? and passe = ?'); $req->execute(array( $_COOKIE['pseudo'], $_COOKIE['passe'])); $user = $req->rowCount(); if($user == 1) { $info=$req->fetch(); $_SESSION['id'] = $info['id']; $_SESSION['pseudo'] = $pseudo; } } ?>

Petit nouveau ! | 3 Messages

08 déc. 2018, 05:19

Hello
J'y suis finalement parvenu. Sur l'index, il fallait que je présente non pas les sessions ['id'] et ['pseudo'] pour franchir la porte mais les sessions ['pseudo'] et ['passe']. Le portier est très capricieux !!

Mais il reste encore un problème à résoudre. Lorsque je complète le formulaire de connexion je dois absolument cocher la case "Se souvenir" sinon je suis refusé. Ce qui devait être une option se révèle être une condition. Il me reste donc à travailler là-dessus. Bien sûr l'avis d'un expert ne serait pas dédaigné.

Bonne journée à tous(tes)

Petit nouveau ! | 3 Messages

08 déc. 2018, 19:34

Re-bonjour

Ce matin rien ne va plus. Tout est à refaire. Alors je laisse tomber pour le moment. Je ne vais pas passer l'hiver là-dessus quand même. De toute manière ce n'est pas indispensable et j'ai autre chose à faire.

Joyeux temps des Fêtes à tous(tes).
a+