nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 2014
-
Modifié par nicomilville le 23/02/2014 à 22:22
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 2014
-
28 févr. 2014 à 20:00
Bonjour,
Je reviens vers vous car j'ai de nouveau un souci... ça fait 2 semaines que je cherche (quand j'ai le temps) une solution et ce que j'ai vu m'amène toujours au php.ini avec les fonctions qui gère la fréquence de passage du garbage collector pour les sessions, etc...
J'explique le souci : un problème apparaît aléatoirement sur un intranet que j'ai fais et ça pose de réels problèmes de sécurité...
En gros ce qui se passe c'est que des fois j'essaie d'accéder à une de mes pages d'administration sans passer par le formulaire de connexion, en temps normal ça me jette et me demande de me loguer seulement des fois ça ne me jette pas et je me retrouve sur la session de quelqu'un d'autre -_-
J'aimerai savoir d'où vient le problème parce que ça me prend réellement la tête, je vais finir par me taper la tête contre un mur :(
Donc pour essayer de régler le problème, j'ai passé le session.gc_probability à 25 pour augmenter la fréquence de passage du garbage collector... ça n'a rien changé..
Du coup j'ai utilisé un session_save_path() pour voir si ça changeait quelque chose mais à priori ça n'a rien changé non plus..
Mon code de vérification qu'on est authentifié(sur chacune des pages protégés) :
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 23 févr. 2014 à 23:50
Bonsoir,
Tout d'abord, merci de t'être penché sur mon problème. Pour le session_start(), oui je suis bien au courant qu'il est nécessaire au début de chaque page et il y est bien (il est dans mon fichier configs.inc.php que j'inclus en haut de chaque page).
Pour les requêtes, c'est pas faux mais ça relève de l'optimisation ça, non ? Donc pour coup je ne suis pas sûr que cela ait quelque chose à voir avec le souci de sessions, le cas échéant je suis curieux de savoir ce qui pourrait en être la cause dans mes requêtes.
Je te remercie encore une fois pour ta réponse même si je reste bloqué ^^
As tu testé tes requêtes directement dans ta BDD pour être sûr qu'elles fonctionne correctement ?
Eventuellement, le temps des tests, tu peux ajouter un Echo $sql puis tester tes requêtes directement dans ta bdd.
$sql = "SELECT * FROM MA_TABLE
WHERE pseudo='".mysql_real_escape_string($user)."'
AND mdp='".mysql_real_escape_string(sha1("intra".$mdp))."'
";
// Affichage de la requête :
Echo "<br><b>Requete :</b> <br>".$sql;
$result = mysql_query($sql);
$num_result1 = mysql_num_rows($result);
$row = mysql_fetch_array($result );
// Pour voir ce que ta requête te retourne :
echo "<br> <b>resultat => </b> <br>";
print_r($row);
Et pour tester tes requêtes directement dans ta BDD.. tu peux utiliser PHPMyAdmin ou un logiciel comme HeidiSql
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 24 févr. 2014 à 01:16
Re,
Les requêtes marchent bien (je peux le garantir car j'ai mis un place un fichier de log dans lequel il y a toutes les informations récupérés par les même requêtes).
Il y a quelque chose qui se passe mais je ne sais pas où, comment ni pourquoi..
Il se peut qu'on se connecte sous un pseudo (ça marche) et au passage sur une autre page, on se retrouve sur la session de quelqu'un d'autre -__- c'est franchement hyper bizarre comme problème...
C'est possible que ça vienne du serveur ?
Pareil, un problème du même style et toujours avec les sessions : dans mon code, je test l'existence d'une variable (si elle existe, elle est forcement rempli) de session et seulement si elle existe, j'exécute une requête pour en enregistrer la valeur... Le truc c'est que des fois j'ai des enregistrements vides en base de donnée, comment est-ce possible alors que ma variable de session (id par exemple) existe ?
Comme je l'ai dis, dans le traitement, cette variable n'existe que si on est connecté et si on est connecté, il est impossible qu'elle soit vide...
BBFUNK01
Messages postés1310Date d'inscriptionjeudi 16 juillet 2009StatutMembreDernière intervention20 juin 20146 26 févr. 2014 à 23:19
Hello,
Il faudrait essayer de "nettoyer" un peu ton code, pour le coup c'est un peu en vrac actuellement.
"Pour les requêtes, c'est pas faux mais ça relève de l'optimisation ça, non ? "
Autant optimiser directement :).
- A ta place par exemple, je stockerai mes fonctions dans un fichier distinct, "functions.php" par exemple.
- Jordane45 t'as déjà fait la remarque : optimise tes requêtes SQL, plus elles seront propres, moins tu surchargeras tes scripts de requêtes,plus ça va fuser.
- J'ajouterai à cela que passer par PDO ne serait pas du luxe.
- Suivant la manière dont tu génères tes pages, l'endroit où tu poses ton session_start(); a une importance capitale, par exemple si tu passes par un ob_start(); pose-le juste après :
ob_start();
session_start();
Dans le cas contraire ça peut être une source de problème(s).
- Tu as trop de redirections dans ton script : ça ne peut te générer que des "pépins" de cribler ton code de header('Location: ...');
Procède plutôt en utilisant une variable à laquelle tu attribues, suivant les cas, la redirection à effectuer :
Pour conclure : si tu parviens à te connecter à l'interface privée sans avoir procédé à l'identification c'est qu'il y a inévitablement une couille dans le potage, et je ne pense pas que le serveur ait avoir quoi que ce soit là dedans, à mon avis si tu clarifies ton code en l'épurant et que tu revoies ta méthodologie (entre autres : fonctions dans un script à part, chargé en amont du code), et bien déjà tu y verras plus clair, donc tu pourras identifier plus rapidement, quand ça chie dans la colle, où est-ce que ça coince, et ça glissera tout seul ;).
Si tu peux nous montrer à quoi ressemble ton fichier configs.inc.php ça peut probablement nous mettre sur la voie.
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Cordialement et encore merci (je vais tout refaire en objet et avec symfony2 dans pas longtemps mais pour le moment il faut quand même que je sécurise la version actuelle)