Sessions encore et toujours

Sessions encore et toujours - PHP - Programmation

Marsh Posté le 20-06-2003 à 16:09:42    

Salut,
 
voila j'ai quelques questions pour sur les sessions:
 
- l'id de session est-il créé automatiquement ou fait-il le définir ?
- Où sont stockées toutes les variables de sessions au niveau serveur ? et faut-il purger ces variables ensuites pour libérer ces ressources ?
- peut-on définir manuellement dans le script si les variables de sessions seront stockées dans un cookies ou transmises dans l'url ?
 
Je débute vers les sessions...
 
Par avance, merci.

Reply

Marsh Posté le 20-06-2003 à 16:09:42   

Reply

Marsh Posté le 20-06-2003 à 16:30:35    

c'est écrit dans la doc


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 21-06-2003 à 15:11:13    

moi ej galere depuis 1 semaine avec les sessions, y a aucune doc ou tutorial qui marche vraiment a fond
 

Reply

Marsh Posté le 21-06-2003 à 16:24:12    

http://www.phpdebutant.org/article69.php
Y'a vraiment rien de compliqué et je pense que ce tuto est assez simple. Après si vous y arrivez c'est un problème de compréhension :o

Reply

Marsh Posté le 21-06-2003 à 16:34:12    

non il marche pas bien le code (g déja essayé)
 
le session_id passe mal , faut l'envoyé en manuel comem ceci :  
 
afficher.php?PHPSESSID=273b08b29f13d6ba4d6338e029d309ad7

Reply

Marsh Posté le 21-06-2003 à 16:37:15    

:heink: Le passage de l'id de session par url ou pas dépend de ta configuration server
 
Edit: Après, libre à toi de vouloir le forcer en url...


Message édité par RiderCrazy le 21-06-2003 à 16:38:02
Reply

Marsh Posté le 21-06-2003 à 16:47:30    

et tu connais le parametre en question ??? :??:

Reply

Marsh Posté le 21-06-2003 à 16:49:21    

Code :
  1. [Session]
  2. ; Handler used to store/retrieve data.
  3. session.save_handler = files
  4. ; Argument passed to save_handler.  In the case of files, this is the path
  5. ; where data files are stored. Note: Windows users have to change this
  6. ; variable in order to use PHP's session functions.
  7. session.save_path = c:\WINNT\Temp
  8. ; Whether to use cookies.
  9. session.use_cookies = 1
  10. ; This option enables administrators to make their users invulnerable to
  11. ; attacks which involve passing session ids in URLs; defaults to 0.
  12. ; session.use_only_cookies = 1
  13. ; Name of the session (used as cookie name).
  14. session.name = PHPSESSID
  15. ; Initialize session on request startup.
  16. session.auto_start = 0
  17. ; Lifetime in seconds of cookie or, if 0, until browser is restarted.
  18. session.cookie_lifetime = 0
  19. ; The path for which the cookie is valid.
  20. session.cookie_path = /
  21. ; The domain for which the cookie is valid.
  22. session.cookie_domain =
  23. ; Handler used to serialize data.  php is the standard serializer of PHP.
  24. session.serialize_handler = php
  25. ; Define the probability that the 'garbage collection' process is started
  26. ; on every session initialization.
  27. ; The probability is calculated by using gc_probability/gc_dividend,
  28. ; e.g. 1/100 means 1%.
  29. session.gc_probability = 1
  30. session.gc_dividend    = 1000
  31. ; After this number of seconds, stored data will be seen as 'garbage' and
  32. ; cleaned up by the garbage collection process.
  33. session.gc_maxlifetime = 1440
  34. ; PHP 4.2 and less have an undocumented feature/bug that allows you to
  35. ; to initialize a session variable in the global scope, albeit register_globals
  36. ; is disabled.  PHP 4.3 and later will warn you, if this feature is used.
  37. ; You can disable the feature and the warning seperately. At this time,
  38. ; the warning is only displayed, if bug_compat_42 is enabled.
  39. session.bug_compat_42 = 0
  40. session.bug_compat_warn = 1
  41. ; Check HTTP Referer to invalidate externally stored URLs containing ids.
  42. ; HTTP_REFERER has to contain this substring for the session to be
  43. ; considered as valid.
  44. session.referer_check =
  45. ; How many bytes to read from the file.
  46. session.entropy_length = 0
  47. ; Specified here to create the session id.
  48. session.entropy_file =
  49. ;session.entropy_length = 16
  50. ;session.entropy_file = /dev/urandom
  51. ; Set to {nocache,private,public,} to determine HTTP caching aspects.
  52. ; or leave this empty to avoid sending anti-caching headers.
  53. session.cache_limiter = nocache
  54. ; Document expires after n minutes.
  55. session.cache_expire = 180
  56. ; trans sid support is disabled by default.
  57. ; Use of trans sid may risk your users security.
  58. ; Use this option with caution.
  59. ; - User may send URL contains active session ID
  60. ;   to other person via. email/irc/etc.
  61. ; - URL that contains active session ID may be stored
  62. ;   in publically accessible computer.
  63. ; - User may access your site with the same session ID
  64. ;   always using URL stored in browser's history or bookmarks.
  65. session.use_trans_sid = 0
  66. ; The URL rewriter will look for URLs in a defined set of HTML tags.
  67. ; form/fieldset are special; if you include them here, the rewriter will
  68. ; add a hidden <input> field with the info which is otherwise appended
  69. ; to URLs.  If you want XHTML conformity, remove the form entry.
  70. ; Note that all valid entries require a "=", even if no value follows.
  71. url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

Reply

Marsh Posté le 21-06-2003 à 16:50:22    

dans php.ini, tu as un paragraphe avec tous ce qui concerne les session (tu fais une recherche  :o)... le paramètre en question: session.use_trans_sid (0 ou 1)

Reply

Marsh Posté le 21-06-2003 à 16:50:50    

ben la il est a 0 je vais essayé a 1 pour voir

Reply

Marsh Posté le 21-06-2003 à 16:50:50   

Reply

Marsh Posté le 21-06-2003 à 16:51:51    

NemoHP a écrit :

[Session]
[...]
; trans sid support is disabled by default.
; Use of trans sid may risk your users security.
; Use this option with caution.
; - User may send URL contains active session ID
;   to other person via. email/irc/etc.
; - URL that contains active session ID may be stored
;   in publically accessible computer.  
; - User may access your site with the same session ID
;   always using URL stored in browser's history or bookmarks.
session.use_trans_sid = 1
[...]

Reply

Marsh Posté le 21-06-2003 à 16:52:47    

bingo ca marche, enfin ca fais passer l'id dans l'url
 
merci
 
je vais si y a pas moyen de faire passer l'id en cacher

Reply

Marsh Posté le 21-06-2003 à 16:55:07    

Citation :

; Use of trans sid may risk your users security.

C'est assez explicite quand même non... et juste en dessous il te dit pourquoi [:spamafote] Alors pourquoi vouloir passer l'id de session en paramètre d'url ??

Reply

Marsh Posté le 21-06-2003 à 16:56:47    

je c mais j'arrive pas autrement je comprend pas pourquoi il veut pas en mode 0
 
c chelou

Reply

Marsh Posté le 21-06-2003 à 16:59:15    

tu fais comment pour le recuperer l'id ?? balance ton code

Reply

Marsh Posté le 21-06-2003 à 17:22:08    

le fichier index.php demande un login et un password
 
ensuite envoie les donner a login.php (vérifie le login et le password, si valide créer un session et lance indexlog.php:
 

Code :
  1. <?
  2. //ob_start();
  3. // Connexion au serveur
  4. include("connex.php" );
  5. if (isset($login) && isset($password) && $login!="" && $password!="" )
  6. {
  7.   //definition du jeux d'enregistrement
  8.   $SQL="SELECT *
  9.   FROM membre
  10.   WHERE login='".$login."'
  11.   AND pass='".$password."'";
  12.   $Rs = mysql_query($SQL) or die('Erreur SQL !<br>'.$SQL.'<br>'.mysql_error());
  13.   // test de validité du login et du password
  14.   if (mysql_num_rows($Rs)==1)
  15.   {
  16.     //login valide
  17.     $tab=mysql_fetch_array($Rs);
  18.     session_start();  // on démarre une session
  19.     // On enregistre nos variables dans session
  20.     session_register("membre" );
  21.     session_register("mdp" );
  22.     session_register("id_session" );
  23.     session_register("adresse_ip" );
  24.     // On remplie les variables
  25.     $membre=$tab['login'];
  26.     $mdp=$tab['pass'];
  27.     $id_session=session_id();
  28.     $adresse_ip=getenv("REMOTE_ADDR" );
  29.     // redirection  sur la page privée
  30.     header ("location: indexlog.php?".session_name()."=".session_id() );
  31.     //header ("location: indexlog.php" );
  32.   }
  33.    else
  34.   {
  35.   //redirection vers le formulaire d'acces
  36.   header("location: index.php?error=1" );;
  37.   }
  38. }
  39. else
  40. {
  41.   //redirection vers le formulaire d'acces
  42.   header("location: index.php?error=2" );
  43. }
  44. ?>


 
 
indexlog.php : (vérifie à chaque chargement la session)

Code :
  1. <?
  2. // Adresse IP du visiteur de la page
  3. $REMOTE_ADDR=getenv("REMOTE_ADDR" );
  4. if ( isset($membre) && isset($mdp) && isset($id_session) && $adresse_ip==$REMOTE_ADDR)
  5. //if ( $login!="" && $id_session!="" && $adresse_ip==$REMOTE_ADDR)
  6. {
  7.   echo "membre valide";
  8. }
  9. else
  10. {
  11.   //echo "membre non-valide";
  12.   header("location: index.php" );;
  13. }
  14. [...]
  15. [reste de la page ...]
  16. [...]
  17. ?>


 
 
le probleme est que l'identifiant ne passe pas sauf , si on le rajoute a l'url comme expliquer plus haut
 
(je aprle aussi en mettant l'option a 0 bien sur)
 

Reply

Marsh Posté le 21-06-2003 à 17:24:42    

NemoHP a écrit :

le fichier index.php demande un login et un password
 
ensuite envoie les donner a login.php (vérifie le login et le password, si valide créer un session et lance indexlog.php:
 

Code :
  1. <?
  2. //ob_start();
  3. // Connexion au serveur
  4. include("connex.php" );
  5. if (isset($login) && isset($password) && $login!="" && $password!="" )
  6. {
  7.   //definition du jeux d'enregistrement
  8.   $SQL="SELECT *
  9.   FROM membre
  10.   WHERE login='".$login."'
  11.   AND pass='".$password."'";
  12.   $Rs = mysql_query($SQL) or die('Erreur SQL !<br>'.$SQL.'<br>'.mysql_error());
  13.   // test de validité du login et du password
  14.   if (mysql_num_rows($Rs)==1)
  15.   {
  16.     //login valide
  17.     $tab=mysql_fetch_array($Rs);
  18.     session_start();  // on démarre une session
  19.     // On enregistre nos variables dans session
  20.     session_register("membre" );
  21.     session_register("mdp" );
  22.     session_register("id_session" );
  23.     session_register("adresse_ip" );
  24.     // On remplie les variables
  25.     $membre=$tab['login'];
  26.     $mdp=$tab['pass'];
  27.     $id_session=session_id();
  28.     $adresse_ip=getenv("REMOTE_ADDR" );
  29.     // redirection  sur la page privée
  30.     header ("location: indexlog.php?".session_name()."=".session_id() );
  31.     //header ("location: indexlog.php" );
  32.   }
  33.    else
  34.   {
  35.   //redirection vers le formulaire d'acces
  36.   header("location: index.php?error=1" );;
  37.   }
  38. }
  39. else
  40. {
  41.   //redirection vers le formulaire d'acces
  42.   header("location: index.php?error=2" );
  43. }
  44. ?>


 
 
indexlog.php : (vérifie à chaque chargement la session)

Code :
  1. <?
  2. // on démarre une session
  3. session_start(); 
  4. // Adresse IP du visiteur de la page
  5. $REMOTE_ADDR=getenv("REMOTE_ADDR" );
  6. if ( isset($membre) && isset($mdp) && isset($id_session) && $adresse_ip==$REMOTE_ADDR)
  7. //if ( $login!="" && $id_session!="" && $adresse_ip==$REMOTE_ADDR)
  8. {
  9.   echo "membre valide";
  10. }
  11. else
  12. {
  13.   //echo "membre non-valide";
  14.   header("location: index.php" );;
  15. }
  16. [...]
  17. [reste de la page ...]
  18. [...]
  19. ?>


 
 
le probleme est que l'identifiant ne passe pas sauf , si on le rajoute a l'url comme expliquer plus haut
 
(je aprle aussi en mettant l'option a 0 bien sur)
 
 

Reply

Marsh Posté le 21-06-2003 à 17:25:45    

j'avais oublié de copié collé session start, met dans mon code il y est bien sur

Reply

Marsh Posté le 21-06-2003 à 17:32:49    

benh pour récuperer l'id dans de sessions dans t'as page, c'est pas $id_session mais $_SESSION[id_session]. pareil pour mdp et membre
Ensuite je mettrais ça sur ta premiere page:

Code :
  1. // On remplie les variables  
  2.    $membre=$tab['login'];
  3.    $mdp=$tab['pass'];
  4.    $id_session=session_id();
  5.    $adresse_ip=getenv("REMOTE_ADDR" );
  6.    // On enregistre nos variables dans session  
  7.    session_register("membre" );
  8.    session_register("mdp" );
  9.    session_register("id_session" );
  10.    session_register("adresse_ip" );

C'est inversé car il vaut mieux définir tes variables pour les mettre en varaible de session avant de définir tes variables de sessions.

Reply

Marsh Posté le 21-06-2003 à 18:12:14    

Code :
  1. Notice: Use of undefined constant id_session - assumed 'id_session'

 
 
ca marche pas ca me donne ca
 
qd je mais ca :
 

Code :
  1. $id_session=$_SESSION[id_session];

Reply

Marsh Posté le 21-06-2003 à 18:12:36    

masi de toute facon mes variables ont en global ON pour le moment

Reply

Marsh Posté le 21-06-2003 à 18:14:53    

j'ai mis comme ca
 

Code :
  1. <?
  2. // Adresse IP du visiteur de la page
  3. $REMOTE_ADDR=getenv("REMOTE_ADDR" );
  4. $id_session=$_SESSION[id_session];
  5. $membre=$_SESSION[membre];
  6. $mdp=$_SESSION[mdp];
  7. $adresse_ip=$_SESSION[adresse_ip];
  8. if ( isset($membre) && isset($mdp) && isset($id_session) && $adresse_ip==$REMOTE_ADDR)
  9. //if ( $login!="" && $id_session!="" && $adresse_ip==$REMOTE_ADDR)
  10. {
  11.   echo "membre valide";
  12. }
  13. else
  14. {
  15.   //echo "membre non-valide";
  16.   header("location: index.php" );;
  17. }
  18. ?>

Reply

Marsh Posté le 21-06-2003 à 18:17:35    

normal que ca marche pas (cause variables global on)... sinon, je sais pas comment on fait quand elles sont à 'on'... dsl

Reply

Marsh Posté le 21-06-2003 à 18:19:30    

Sinon, à la place de $_SESSION[mdp] & co, essaie $HTTP_SESSION_VARS[mdp]

Reply

Marsh Posté le 21-06-2003 à 18:22:13    

idem marche pas
 
bon de toute facon la je quitte mon taff je rattaque sa mardi
 
merci quand emme  :hello:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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