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
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
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
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
$poster = $_POST['poster'];
Si quelqu'un peut me guider ou me signaler une erreur, un grand merci
Partager