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;
}
}
?>