Bonsoir,
Je continue laborieusement ma migration de PHP 4 + Mysql vers PHP 5.5 + PDO et, depuis 2 jours, je n'arrive pas à résoudre un problème de cookie sur ma page d'administration du site.

Un premier bloc vérifie à l'arrivée du visiteur (de l'administrateur) si il y a un cookie avec le login et le password enregistré dans la base
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Identification administrateur
$is_admin = 0;
$admin_idx = 0;
$superadmin = 0;
$profil = array();
$access = array();
$alogin = base64_decode($_COOKIE[$site_cookie."AdminLogin"]);
$apassword = base64_decode($_COOKIE[$site_cookie."AdminPassword"]);
if (!empty($alogin) && !empty($apassword)) {
  $requete_q = $bdd_base->prepare("SELECT idx, pseudo, email, access, super FROM table_admins WHERE login = :alogin AND password = :apassword");
  $requete_q->bindParam(':alogin',$alogin,PDO::PARAM_STR);
  $requete_q->bindParam(':apassword',$apassword,PDO::PARAM_STR);
  $requete_q->execute();
  $ligne_n 	= $requete_q->rowCount();
  $profil		= $requete_q->fetch();
  $requete_q->closeCursor();
  if ($ligne_n==1){
    $admin_idx = $profil["idx"];
    $access = explode(",", $profil["access"]);
    $superadmin = $profil["super"];
    $is_admin = 1;
  }
}
Ensuite, si non trouvé, affichage du formulaire de connexion
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
<table border="1" align="center" bgcolor="ffffff">
<tr><td>
<form action="index.php" method="POST" name="f1">
<input type="hidden" name="poster" value="1">
<table cellspacing="0" cellpadding="5" border="0" align="center" class="tbg">
<tr><td><b>Login :</b></td><td><input type="text" name="login" size="20"></td></tr>
<tr><td><b>Mot de passe :</b></td><td><input type="password" name="password" size="20"></td></tr>
<tr><td colspan="2" align="center"><input type="submit" value="S'identifier" align="center"></td></tr>
</table>
</form>
</td>
</tr>
</table>

Puis enfin et si login et mot de passe sont bons, création des cookies et poursuite du traitement normal après nouveau passage par le 1er bloc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if ($poster == 1) {
  $requete_qq = $bdd_base->prepare("SELECT login, password FROM table_admins WHERE login = :login AND password = :password");
  $requete_qq->bindParam(':login',$_POST['login'],PDO::PARAM_STR);
  $requete_qq->bindParam(':password',$_POST['password'],PDO::PARAM_STR);
  $requete_qq->execute();
  $ligne_nn 	= $requete_qq->rowCount();
  $ligne_rr		= $requete_qq->fetch();
  $requete_qq->closeCursor();
  if ($ligne_nn==1){
		setCookie($site_cookie."AdminLogin", base64_encode($ligne_rr["login"]), time() + (3600 * 24 * 30));
		setCookie($site_cookie."AdminPassword", base64_encode($ligne_rr["password"]), time() + (3600 * 24 * 30));
  }
	header("Location: index.php?");
	echo "Recharge la page !";
	exit();
}
Il n'y a pas d'anomalie de signalée mais çà boucle sur le formulaire qui s'affiche en permanence comme si la variable $poster n'était pas prise en compte.
En début de page, j'ai mis
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$poster = $_POST['poster'];
Si quelqu'un peut me guider ou me signaler une erreur, un grand merci