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

  FORUM HardWare.fr
  Programmation
  PHP

  [php] Probleme de conception - sessions/cookie&co

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[php] Probleme de conception - sessions/cookie&co

n°979400
Zaib3k
Posté le 12-02-2005 à 13:42:21  profilanswer
 

Salut,
 
j'essaie de me familiariser un peu avec php et je bloque depuis qq temps sur un probleme de conception.
j'ai fait un faux site pour m'entrainer et j'aimerais un systeme d'authentification.
J4ai fouillé un peu le net et j'arrive a peu pres a faire ce qu'il me faut mais pas comme je l'aimerais.
 
j'explique :D :
 
j'aimerais avoir le schema suivant =>
index.php?action=login
index.php?action=logout
index.php qui affiche soit le site, soit le formulaire d'auth.
d'autres pages bidons.
avec sessions+cookie
 
je n'arrive pas a voir comment organiser le code de index.php :/
 
je pensais un autre truc dans le genre :
 

Code :
  1. <? session_start();
  2. if (!isset($_SESSION['login']))
  3. {
  4. if ($_GET['action'] == 'login')
  5. {
  6.  //if mdp pas bon => index.php
  7.                 //if mdp ok => index.php
  8.  exit;
  9. }
  10. echo 'formulaire';
  11.         <form action="topmoumout.php?action=login" method='post'>
  12.         ...
  13.         exit;
  14. }
  15. //le site
  16. if ($_GET['action'] == 'logout')
  17. {
  18. session_unset();
  19. session_destroy();
  20. }


qu'en pensez vous ?
 
Tout cela est confu dans ma tete. et je n'ai pas trouvé ce que je cherche sur le net.
 
toute aide est la bienvenue.
 
Merci


---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
mood
Publicité
Posté le 12-02-2005 à 13:42:21  profilanswer
 

n°979585
esox_ch
Posté le 12-02-2005 à 18:45:08  profilanswer
 

Salut,
 
Ton script a l'air de marcher plus ou moins, meme si je trouve qu'on peut faire plus propre :D . Essaie avec lui, si par la suite te sera coincé tu le modifiera en consequence, sinon c'est cool  :bounce:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°979667
Zaib3k
Posté le 12-02-2005 à 21:23:03  profilanswer
 

merci, mais justement, j'aimerais savoir comment faire propre. :D


---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
n°979671
esox_ch
Posté le 12-02-2005 à 21:26:48  profilanswer
 

Faut reflechir un peu, essayer d'imbriquer le moins possible de if (c'est comme ca qu'apres quand ca deviens complex on loupe une condition possible) et de ne pas repeter 2 fois ce qui peut etre ecrit une seule fois...
 
Moi je verrais une structure en  
if elseif elseif ... else.
 
Du genre if(session existante)
elseif(session pa existante mais demande d'acces a la page de login)
elseif(session pa existante mais demande d'otentification par un POST)
elseif(session pa existante mais demande de logout)
...


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°979677
Zaib3k
Posté le 12-02-2005 à 21:34:20  profilanswer
 

ok merci. je vais revoir ca.


---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
n°979679
esox_ch
Posté le 12-02-2005 à 21:37:10  profilanswer
 

Disons que c'est comme ca que je vois les choses ... je trouve plus facile de se retrouver quand t'a des if sur un seul niveau plutot que sur 9 le tout entremelé d'autres fonctions :p


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°979724
Zaib3k
Posté le 12-02-2005 à 23:57:00  profilanswer
 

j'ai réussi à faire qqc qui me plait assez. [:gm_superstar]  
 

Code :
  1. <?
  2. session_start();
  3. require 'config.inc.php';
  4. require_once "PEAR.php";
  5. require_once 'DB.php';
  6. $baseurl = "http://" . $_SERVER['HTTP_HOST']. dirname($_SERVER['PHP_SELF']). "/";
  7. if ($_GET['action'] == 'login')  //verif de l'auth.
  8. {
  9. $db =& DB::connect($dsn);
  10. if (DB::isError($db))
  11.  die($db->getMessage());
  12. if(isset($_POST) and !empty($_POST['login']) and !empty($_POST['password']))
  13. {
  14.    extract($_POST);
  15.    $sql = "select password from users where login='".$login."'";
  16.    $res =& $db->query($sql);
  17.    $row =& $res->fetchRow(DB_FETCHMODE_ASSOC);
  18.    $db->disconnect();
  19.    if($row[password] == md5($password))
  20.    {
  21.      $_SESSION['login'] = $login; //TODO: ecrire ds cookie
  22.   header("Location: ".$baseurl."page.php" );
  23.    }
  24. }
  25. }
  26. elseif ($_GET['action'] == 'logout') //logout
  27. {
  28. session_unset();
  29. session_destroy();
  30. }
  31. elseif (isset($_SESSION['login']))   //si session existe. TODO: verif cookie.
  32. header("Location: ".$baseurl."page.php" );
  33. ?>
  34. <form action="topmoumout.php?action=login" method='post'>
  35. <table align="center" border="0">
  36. <tr>
  37.  <td>Login :</td><td><input type="text" name="login" maxlength="250"></td>
  38. </tr>
  39. <tr>
  40.  <td>Password</td><td><input type="password"name="password" maxlength="20"></td>
  41. </tr>
  42. <tr>
  43.  <td colspan="2" align="center"><input type="submit" value="log in"></td>
  44. </tr>
  45. </table>
  46. </form>


 
vous en pensez quoi ?


---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
n°979780
esox_ch
Posté le 13-02-2005 à 08:09:33  profilanswer
 

Personnellement j'aurais regroupé les 2 if imbriqués ... celui pour l'action et celui pour voir si le mdp / login sont envoyés... Et j'aurais monter le systeme a l'envers... en commancant avec le cas ou la session marche, comme ca pas besoin de faire une redirection


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°979797
Zaib3k
Posté le 13-02-2005 à 11:00:06  profilanswer
 

autre petite question.
si j'utilise session_set_cookie_params() pour augmenter la durée de vie du cookie de sessions est ce propre ou serait il mieux de faire un vrai systeme avec cookie en plus des sessions ?


---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
n°979799
esox_ch
Posté le 13-02-2005 à 11:05:37  profilanswer
 

Personnellement j'ai toujours utilisé les session, en forçant a ce qu'elles utilisent un session id recupéré par cookie et non par get ... Je trouve plus propre que les info soient gardées coté serveur plutot que coté client


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
mood
Publicité
Posté le 13-02-2005 à 11:05:37  profilanswer
 

n°979806
Zaib3k
Posté le 13-02-2005 à 11:11:41  profilanswer
 

donc tu crées un cookie pour mettre un SID, puis tu le lis s'il existe ?
 
pourquoi ne pas utiliser le cookie generé par les sessions php ?
 
ou alors j'ai rien compris :p


---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
n°979827
esox_ch
Posté le 13-02-2005 à 11:55:11  profilanswer
 

Non justement j'utilise le cookie créé par les sessions, seulement si le client n'accepte pas le cookie, Apache va lui envoyer le session id (SID c'est une version de Debian (linux) :p) par GET .. ce qui peut etre considerer comme un trou de secu ... Donc faut dire que soit ca passe par cookie, soit ca passe pas


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°979832
Zaib3k
Posté le 13-02-2005 à 11:58:28  profilanswer
 

comment tu fais pour forcer le cookie ? je viens de faire des tests en utilisant le cookie de sessions et en changeantson expire_limit mais j'ai un probleme. ca marche super bien sous ie mais pas sous FireFox.
 
:'(


---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.

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

  [php] Probleme de conception - sessions/cookie&co

 

Sujets relatifs
[Perl] Probleme de fork & serveur socketProbleme compatibilité W3C XHTML
!!! Gros problème site web !!![Resolu] Problème de DIV avec un "padding" et un "display: inline;"
[PERL] Probleme avec LWP et UserAgent dans PurePerlGestion des sessions utilisateurs tomcat
Excel : problème de sauvegarde de formulaireproblème avec wxScrolledWindow
[java-eclipse]Problème de sauvegarde sous eclipseRule access probleme
Plus de sujets relatifs à : [php] Probleme de conception - sessions/cookie&co


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