Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1130 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Pb session de débutant

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pb session de débutant

n°1251720
wewen1
Sex, drugs and Rock'N Roll
Posté le 23-11-2005 à 17:34:27  profilanswer
 

C'est encore Wewen1 qui bataille.
 
J'essaie depuis 4 heures de coder des sessions dans mon espace client et je merde complet.
 
Voici comment marche mon script:
index.php contient form d'identification >> test des login et password grâce à ficher indépendant login.php >> si ok >> default.php, si pas ok >> connexion_erreur.php
 
Où doit-on commencer les sessions ?
 
Pour l'instant je les lance dans login.php sous cette forme:

Code :
  1. <?
  2. session_start();
  3. $_SESSION['session']=$_POST['login'];
  4. require("conf/conf.php" );
  5. // si le visteur est passé par la page connexion.php ou s'il s'est identifié en tombant directement sur cette page, on lui renvoit ses infos.
  6. mysql_connect($sql_seveur,$sql_user,$sql_passwd); // Connexion à MySQL
  7. // $row = colonne de l'utilisateur dans la base
  8. $row_conn = mysql_fetch_array($connexion, MYSQL_ASSOC);
  9. // on contrôle que le formulaire de la page connexion.php a bien été rempli, puis on contrôle que le champ "motdepasse" correspond bien à celui de la base.
  10. if (isset($_POST['login']) AND ($_POST['motdepasse']) AND $_POST['motdepasse'] == $row['password'])
  11. {
  12. header("Location:$url_ok" );
  13. }
  14. else
  15. {
  16. header("Location:$url_erreur" );exit;
  17. }
  18. mysql_close(); // Déconnexion de MySQL
  19. ?>


 
Ensuite je met le code suivant en en-tête de default.php pour repérer l'utilisateur:

Code :
  1. <?
  2. session_start();
  3. $var=$_SESSION['session'];


 
le problème est que j'ai mis sur default.php une condition qui dit:

Code :
  1. if (isset($_SESSION['session']))


on affiche quelque chose
 

Code :
  1. else{ blabla}


 
au final, le code me renvoi toujours à la page connexion_erreur.php. si j'enlève les lignes de sessions ça marche, donc c bien là que se trouve l'erreur.
 
Quelqu'un peut-il m'aider svp ?
(je sais j'abuse en demandant souvent de l'aide mais franchement je suis un super doué des codes alors faut m'expliquer longtemps)

mood
Publicité
Posté le 23-11-2005 à 17:34:27  profilanswer
 

n°1251754
omega2
Posté le 23-11-2005 à 18:27:54  profilanswer
 

Code :
  1. $row_conn = mysql_fetch_array($connexion, MYSQL_ASSOC);
  2. $row['password']

Cherchez l'erreur. ;)

n°1251955
wewen1
Sex, drugs and Rock'N Roll
Posté le 23-11-2005 à 22:51:13  profilanswer
 

omega2 a écrit :

Code :
  1. $row_conn = mysql_fetch_array($connexion, MYSQL_ASSOC);
  2. $row['password']

Cherchez l'erreur. ;)


 
Bien vu omega2.
 
Je vais contrôler ça demain mais ça sent la bonne remarque.
Sinon l'approche générale te parait bonne où je me gratte l'oreille gauche avec la main droite avec mon approche?
 
Merci vraiment de votre soutien à tous.
 
Allez, à la prochaine question ... :hello: ;)

n°1252031
omega2
Posté le 24-11-2005 à 08:43:29  profilanswer
 

Tu te grattes l'oreille gauche avec la main droite : il suffit de conaitre la page ed conection et l'adresse ok pour passer sans mot de passe ni pseudo (au pire $_SESSION['session'] contiendra une chaine vide mais $_SESSION['session'] existera quand même vu que tu lui affectes une valeur même en cas d'erreur.

n°1252144
wewen1
Sex, drugs and Rock'N Roll
Posté le 24-11-2005 à 11:38:44  profilanswer
 

omega2 a écrit :

Tu te grattes l'oreille gauche avec la main droite : il suffit de conaitre la page ed conection et l'adresse ok pour passer sans mot de passe ni pseudo (au pire $_SESSION['session'] contiendra une chaine vide mais $_SESSION['session'] existera quand même vu que tu lui affectes une valeur même en cas d'erreur.


 
Pourtant quand je contrôle ça marche.
Si tu arrives direct sur ma page detault, ou login ou devis ou autre, sans session tu es renvoyé vers la page connexion erreur.
 
Tiens autre question, j'ai créé plusieurs table mais est-il possible de la relier entre elle avec un champ (par ex. login) ? L'idée serait qu'une fois identifié l'utilisateur puisse accéder uniquement à ses infos même il elles sotn dans des table différentes.

n°1252149
omega2
Posté le 24-11-2005 à 11:45:46  profilanswer
 

Et t'as essayé aprés t'être connecté sans avoir saisie de mot de passe ou de nom d'utilisateur? Certe le navigateur sera renvoyé sur la page d'erreur mais si le navigateur n'y va pas, il aura une session valide lui permettant d'aller sur les différentes pages alors qu'il a saisie n'importe quoi.

n°1252178
wewen1
Sex, drugs and Rock'N Roll
Posté le 24-11-2005 à 12:16:03  profilanswer
 

omega2 a écrit :

Et t'as essayé aprés t'être connecté sans avoir saisie de mot de passe ou de nom d'utilisateur? Certe le navigateur sera renvoyé sur la page d'erreur mais si le navigateur n'y va pas, il aura une session valide lui permettant d'aller sur les différentes pages alors qu'il a saisie n'importe quoi.


 
ben écoutes, je veux bien te croire tu es franchement meilleur que mon en progra mais vraiment je trouve pas de faille (y en a bien sûr comme tjs en info) comme tu la décris.
 

n°1252237
omega2
Posté le 24-11-2005 à 14:03:09  profilanswer
 

Code :
  1. <?
  2. session_start();
  3. $_SESSION['session']=$_POST['login'];

$_SESSION['session'] est donc créé dans tous les cas même si le pseudo ou le mot de passe sont éroné ou vide.
test de validité dans l'autre page :

Code :
  1. if (isset($_SESSION['session']))

toujours vrai vu que créé précédement dans tous les cas même si le pseudo ou le mot de passe n'est pas bon.
Peut être que tu fais d'autres tests pour vérifier la validité dans toutes les pages mais ca se voit pas dans le code que t'as montré.

n°1252294
wewen1
Sex, drugs and Rock'N Roll
Posté le 24-11-2005 à 14:50:26  profilanswer
 

Code :
  1. <?
  2. session_start();
  3. require("conf/conf.php" );
  4. // si le visteur est passé par la page connexion.php ou s'il s'est identifié en tombant directement sur cette page, on lui renvoit ses infos.
  5. mysql_connect($sql_seveur,$sql_user,$sql_passwd); // Connexion à MySQL
  6. // on contrôle que le formulaire de la page connexion.php a bien été rempli, puis on contrôle que le champ "motdepasse" correspond bien à celui de la base.
  7. if (isset($_POST['login']) AND ($_POST['motdepasse']) AND $_POST['motdepasse'] == $row_conn['password'])
  8. {
  9. $_SESSION['login']=$_POST['login'];
  10. header("Location:$url_ok" );
  11. $var_login=$_SESSION['login'];
  12. }
  13. else
  14. {
  15. header("Location:$url_erreur" );exit;
  16. }
  17. mysql_close(); // Déconnexion de MySQL
  18. ?>


 
Comme ça ça à l'air mieux non ? (bon en fait ça marche pas à fond mais c sans doute parce que je suis pas un surdoué en terme de progra. j'adore mais j'ai pas la bonne logique).

n°1252300
omega2
Posté le 24-11-2005 à 15:01:58  profilanswer
 

Oui, là, c'est beaucoup mieux :) à par que t'as perdu ta requette sql au passage, ca doit être pour ça que ton test marche plus.

mood
Publicité
Posté le 24-11-2005 à 15:01:58  profilanswer
 

n°1252451
wewen1
Sex, drugs and Rock'N Roll
Posté le 24-11-2005 à 17:28:33  profilanswer
 

Ca marche toujours pas.
En fait, j'ai regarder dans php.ini et le register_global est à off.
J'ai vu un peu partout qu'il est recommendé de le laisser comme ça et d'utiliser des codages différents.
 
$_SESSION fait appel à register_global on ?

n°1252501
omega2
Posté le 24-11-2005 à 18:29:11  profilanswer
 

register_global n'a aucune incidence sur $_SESSION.
register_global quand il est à on ne fait que créer des variables à partir du contenu des tableaux $_SESSION, $_POST, $_GET ...
Par exemple si $_SESSION['session']="test" alors $session sera égale à "test".
Mais si $_SESSION['session'] n'existe pas et qu'il existe un $_POST['session']= "test", on aurait aussi $session égale à "test". C'est à cause de ce danger qu'il est trés fortement conseillé de laisse register_global à off. (en plus, register_global risque de disparaitre totalement dés php6)
 
Si c'est pas un serveur de production, vu que t'as accés au réglage du php.ini, régle l'affichage des alerte/erreur à E_ALL sans rien derriére dans le php.ini. (ligne qui commence par error_reporting ) Ca te donera peut être des indications sur ce qui marche mal/pas .
 
Pour le moment, si t'as remis la requette sql comme il faut, je vois pas ce qui peut bloquer. :(

n°1252673
sielfried
Posté le 24-11-2005 à 21:21:26  profilanswer
 

J'ai un peu de mal à comprendre après ma fine lecture verticale de ce joli topic. Le problème, c'est quoi en fait ? Ca rentre tout le temps dans le else ?
 
Auquel cas, un petit peu de debugging tout con à coups de echos... :spamafote:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1253412
wewen1
Sex, drugs and Rock'N Roll
Posté le 25-11-2005 à 17:32:39  profilanswer
 

J'ai résolu le truc à la bourrin de la manière suivante:
[code]<?
session_start();
 
require("conf/conf.php" );
$login = $_POST['login'];
$passwd = $_POST['motdepasse'];
$_SESSION['login'] = $login;
$session = $_SESSION['login'];
 
// connexion à mysql
$db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
// Sélection des tables
$connexion = mysql_db_query($sql_bdd,"SELECT * FROM connexion WHERE login='$session'" )or die( 'Erreur MySQL : ' . mysql_error() );;
 
// Sélection des tables
$row_conn = mysql_fetch_array($connexion, MYSQL_ASSOC);
 
// on contrôle que le formulaire de la page connexion.php a bien été rempli, puis on contrôle que le champ "motdepasse" correspond bien à celui de la base.
if ($login == $row_conn['login'] AND $passwd == $row_conn['password'])
{[code]
 
Je sais c pas le top en terme de sécurité mais bon j'ai pas un site avec du passge, c'est surtout pour avoir un espace privilégié et interactif avec mes clients.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Pb session de débutant

 

Sujets relatifs
(Debutant!) probleme d'allocation c99[Résolu] POO question hype débutant
[Résolu] Session : marche pô :(Problème VB (débutant...)
Cannot send session cookie - headers already sent by ...Session PHP
2 questions sur frontpage d'un ultra débutantdébutant : qu'elle langage choisir pour les scripts
[java] debutant besoin d'aide pour interface graphdebutant sessions
Plus de sujets relatifs à : Pb session de débutant


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR