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
Ensuite, si non trouvé, affichage du formulaire de connexionCode:
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; } }
Code:
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
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.Code:
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(); }
En début de page, j'ai mis
Si quelqu'un peut me guider ou me signaler une erreur, un grand merciCode:$poster = $_POST['poster'];