Petit éclaircicement sur les variables de session & CO

Petit éclaircicement sur les variables de session & CO - PHP - Programmation

Marsh Posté le 08-08-2005 à 17:48:00    

Salut tout le monde
 
Bon j'ai regardé tous ce qui avait été posté avant moi sur ce sujet..dans le forum...
 
Mais j'ai pas trouvé réponses à mes questions :heink:  
Bon j'ai fait un systéme de Session car mon site, pourra accepter plusieurs personnes.
 
j'ai donc fait tous le nécessaires pour ça:
session_start()...
 
puis je chope session_id() et session_name();
que j'associe est ballance en GET
 
Je pense que jusque là c'est bon!
Mais voilà une fois, sur une page de la partie protégé, je ne suis pas sur du test à faire:
 
Car pour l'instant je fait un truc du style:
if(!isset($_GET['NOMSESSION']))
    redirection vers page principal de l'admin et message d'erreur qui va avec.
 
Mais le probléme c'est qu'avec cette méthode...le gars qui tape dans l'url adresse?NOMSESSION=nimportequoi
 
Sa passe...
Donc je pense que mon test est foireux...si on peu m'éclaircir sur le sujet...je vous en remerci
 
++ :hello:

Reply

Marsh Posté le 08-08-2005 à 17:48:00   

Reply

Marsh Posté le 08-08-2005 à 18:27:08    

essaye de ne pas le passer en get pour des sections privées : ca peut s'averer dangereux
si ta des infos a faire passer et que tu souhaite que personne ne les voit utilise $_POST
 

Reply

Marsh Posté le 08-08-2005 à 18:33:35    

Lol rigolo tu es...
 
Et comment je fais pour les pages sans formaulaire...
Nop...il y a pas de risque par GET,
si la condition est bonne...
 
Car la var est dépendante de ou tu te connectes...

Reply

Marsh Posté le 08-08-2005 à 18:40:42    

Je te déconseille $_GET pour les informations persos.
Perso j'utilise seulement pour la navigation genre.
?module=Forums
?module=Forums&act=write&forum_id=54
 
A part ça les informations sur l'utilisateur sont enrengistré dans la session.
session_start();
 
Par défault si l'utilisateur n'est pas connecté via le formulaire d'indentification il aura ça.
$_SESSION['connected'] = 0;
$_SESSION['pseudo']      = 'Invite';
 
Un utilisateur connecté aura des informations rempli via un formulaire $_POST et on verifiera qu'elle corresponde bien avec la base de donnée sinon bien sur ça enrengistre pas et ça laisse comme si l'utilisateur n'était pas connecté.
 
$_SESSION['connected'] = 1;
$_SESSION['pseudo']      = $_POST['pseudo'];
$_SESSION... d'autres infos genre l'id, groupe etc...

Reply

Marsh Posté le 08-08-2005 à 19:23:40    

Mais si pas de formulaire sa fonctionne pas?

Reply

Marsh Posté le 08-08-2005 à 20:26:55    

ben le GET c'est tout ce qui est dans l'url ou passé en GET par formulaire
et le POST c'est tout ce qui est passé par le formulaire.
 
Après à toi de voir ce qui te convient le mieux

Reply

Marsh Posté le 08-08-2005 à 20:39:57    

Mais sa je l'ai fait...
 
et sa marche nickel...non ce que je veux savoir
c'est quoi faire dans un fichier qui recoit cet variable...
 
if(!isset($_GET['NOMSESSION']))
    redirection vers page principal de l'admin et message d'erreur qui va avec.  
Ce n'est pas suffisant...

Reply

Marsh Posté le 08-08-2005 à 20:49:14    

Bah c'est pas comme ça que ça fonctionne.
Le $_GET c'est pas un formulaire de vérification a part si tu veux avoir des url de 40km de long et même c'est pas fais pour.

Reply

Marsh Posté le 08-08-2005 à 20:56:33    

Sur que non, dans ton exemple sans POST je suis foutu...et je sais que c'est pas vrai.
 
Pas grave pour l'url de 100 m de long, c'est la partie admin.
Mais logiquement une Session expire aprés un certain moment...et elle est en correspondance avec le systéme d'ou tu te logue...
 
Donc logiquement en marquant n'importe quoi dans le GET sa devrai pas marcher...
 
Mais moi j'y arrive pas à faire ça...
 
Vous voyez de quoi je parle quand même (ouais pas fait la faute)
 
....

Reply

Marsh Posté le 08-08-2005 à 21:17:57    

les sessions c'est très securisé.
Il y a que 3 manière de se logger sur la session de quelqun.
 
1. Pirater le serveur pour voir la session sur le dd.
2. Faille dans PHP
2. Faille dans ton code et récuperer la session.
 
Ensuite tu te log sur la session en faisant http://....?session=LASESSION
 
Perso je trouve ça suffisament securisé...
 
 
 
Enfin j'ai compris ce que tu veux dire mais la session n'expire pas tant que tu es actif.
Et au pire tu peux faire un cookie qui recrée la session si elle expire si l'utilisateur a demandé qu on ce souvienne de lui a chaque visite.
 
Maintenant je vais te donner un exemple tout bête d'une section admin.
 

Code :
  1. <?php
  2. $LOGIN = 'Test';
  3. $PASSWORD = md5('Pass');
  4. if ( !isset($_POST['Connexion']) )
  5. {
  6. echo '
  7. <form method="post" action="'.$_SERVER['PHP_SELF'].'">
  8. Login : <input type="text" name="login" size="20" /><br />
  9. Password : <input type="pass" name="password" size="20" /><br />
  10. <input type="submit" name="Connexion" value="Connexion" />
  11. </form>
  12. ';
  13. }
  14. else
  15. {
  16. if ( $LOGIN == $_POST['login'] && $PASSWORD == md5($_POST['password']) )
  17. {
  18.   echo 'Auhentification OK, tu peux afficher ta zone d\'admin ici';
  19. }
  20. else
  21. {
  22.   echo 'Connexion Refusé';
  23. }
  24. }
  25. ?>


Message édité par Masenko le 08-08-2005 à 21:18:30
Reply

Marsh Posté le 08-08-2005 à 21:17:57   

Reply

Marsh Posté le 08-08-2005 à 21:40:04    

Oui dacord mais ton exemple ne marche que sur une page?
 
Non...
une fois passé ça, si je tape un url qui se trouve aprés cette page, comment la page de cet url vérifie que je viens de ce test ou de quelque part d'autre.
 
Bien sur je sais que une fois connecté, si tu ne quitte pas ta fenêtre ou que tu n'est pas partie par un truc du style déconnexion, qui détruit les variables, et ben tu garde accés au module.
 
Non moi mon probléme c'est quand un gars viens de l'exterieur direct sur un lien à l'intérieur de la zone protégé.
 
Bien sur j'ai fait en sorte que si il tape le lien sans la bonne variable, il est rejeté, mais si il tape le nom de la variable, il rentre, quelques qoit la valeur de la variable.
 
Comment empêcher cela.

Reply

Marsh Posté le 08-08-2005 à 21:44:32    

Ouais en faite je viens de me rendre compte que j'avais simplement fait un formulaire de connexion là.
Je refais et je te montre.
Voilà donc dans cette exemple si l'utilisateur tappes dans le formulaire login : Test et password : Pass il sera sur la zone d'admin car ce sera enrengistré dans la session comme quoi si admin = 1 alors il a acces a la zone d'admin.
 

Code :
  1. <?php
  2. session_start();
  3. if ( $_SESSION['admin'] != 1 )
  4. {
  5. $LOGIN = 'Test';
  6. $PASSWORD = md5('Pass');
  7. if ( !isset($_POST['Connexion']) )
  8. {
  9.   echo '
  10.   <form method="post" action="'.$_SERVER['PHP_SELF'].'">
  11.   Login : <input type="text" name="login" size="20" /><br />
  12.   Password : <input type="pass" name="password" size="20" /><br />
  13.   <input type="submit" name="Connexion" value="Connexion" />
  14.   </form>
  15.   ';
  16. }
  17. else
  18. {
  19.   if ( $LOGIN == $_POST['login'] && $PASSWORD == md5($_POST['password']) )
  20.   {
  21.    $_SESSION['admin'] = 1;
  22.    header("Location: ".$_SERVER['PHP_SELF']."" );
  23.    exit();
  24.   }
  25.   else
  26.   {
  27.    echo 'Connexion Refusé';
  28.   }
  29. }
  30. }
  31. else
  32. {
  33. echo 'Wha! Ma zone d\'admin est magnifique';
  34. }
  35. ?>

Reply

Marsh Posté le 08-08-2005 à 21:58:10    

$_SESSION['admin']
il se ballade dans toutes mes pages?
 
Parce que là ton truc m'avance pas plus , non?

Reply

Marsh Posté le 08-08-2005 à 22:07:35    

Oui il se ballade partout tant que au dessus de chaque page il est simplement écrit session_start();
 
C'est enrengistré dans ta session que admin est égal à 1 sur le serveur.
 
Pour que tu sois plus eclairé voilà le contenu de ta session lorsque tu as passé le formulaire avec succès :
admin|i:1;
 
Pi tu peux bien voir que tu as beau actualisé ta page après le formulaire et si t'as bien mis les infos t'as ça non stop "Wha! Ma zone d'admin est magnifique".
 
Si tu supprimes la session ou alors si tu en recrées une autre tu auras de nouveau le formulaire

Reply

Marsh Posté le 08-08-2005 à 22:11:01    

bon vais retester ton truc adapté à mon truc.

Reply

Marsh Posté le 08-08-2005 à 22:19:34    

Merci d'avoir usé de ton temps avec moi,
sa marche.
 
Au plaisir...

Reply

Marsh Posté le 08-08-2005 à 22:25:33    

De rien, bonne continuation dans ton truc et si t'as besoin d'aide la notification par mail est activé :pt1cable:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed