J'ai un problème de logique avec les sessions

J'ai un problème de logique avec les sessions - PHP - Programmation

Marsh Posté le 21-03-2003 à 17:01:22    

Supposons que mon appli est la suivante :
 
- formulaire "connexion.php" qui appel "login.php"
- si les paramètres sont bon j'enregistre la valeur d'une variable appellé "$id" et je redirige sur "ok.php"
- sinon je redirige vers "non.php"
 
Dans mon "login.php" je test si les paramètres sont bons :
- si c'est bon je fais un session_start() et ensuite sur toutes les pages que "ok.php" va rediriger j'ai besoin de ma variable "$id" donc je dois tester à chaque fois si ma session est bien active.
 
Comment tester si une session est active?
J'ai fait :
 

if (isset(session_id()))

 
 
et aussi
 

(if session_id()=="" )

 
 
mais ça marche pas
 
Je pourrai éventuellement faire :

if (isset($id))


 
mais le pb c'est que dans ce cas il suffira de mettre &$id=... dans l'url pour que ça passe.
 
Comment faire.?

Reply

Marsh Posté le 21-03-2003 à 17:01:22   

Reply

Marsh Posté le 21-03-2003 à 17:37:01    

si test ok =>  
{
  $id=...
  session_start();
  session_register("id" );
}
 
if(!session_is_registered("id" ))
{  
  => non
}


Message édité par art_dupond le 21-03-2003 à 17:40:11

---------------
oui oui
Reply

Marsh Posté le 21-03-2003 à 17:40:46    

art_dupond a écrit :

si test ok =>  
{
  session_start();
  session_register("id" );
}
 
if(!session_is_registered("id" ))
{  
  => non
}
 
 


 
ok j'ai essayé ça et ça marche mais ça me pose un pb puisque si (dans un cas extrême) le type saisie dans l'url à la fin "...&id=..." là il va passer

Reply

Marsh Posté le 21-03-2003 à 17:41:14    

normalement non ca passera pas


---------------
oui oui
Reply

Marsh Posté le 21-03-2003 à 17:45:56    

art_dupond a écrit :

normalement non ca passera pas


 
ah ok je v essayer
mais ds mon cas ça marche si je mets le SESSION_START() au tout début de mon fichier index.php mais je me demande si c normal de créer une session dès le début sans avoir identifier avant.
 
Mon pb étant que je peux pas metttre le SESSION_START() sur chacun de mes fichiers puisque ds mon index.php je fais mon include dans une partie de mon tableau d'un fichier php. Donc je suis obligé de le mettre en en tete de mon index.php

Reply

Marsh Posté le 21-03-2003 à 17:52:37    

a.php
¯¯¯¯¯
<?
session_start();
if($ok==1)
{
 $youp = 5;
 session_register("youp" );
}
?>
<a href="b.php">b</a>
 
b.php
¯¯¯¯¯
 
<?
session_start();
if(!session_is_registered("youp" ))  
{  
  Header("Location: c.php" );
}
 
echo $youp;
?>
<a href="destroy.php">destroy session</a>
 
c.php
¯¯¯¯¯
crot
 
destroy.php
¯¯¯¯¯¯¯¯¯¯¯
<?
session_start();
session_destroy();
Header("Location: a.php" );
?>


 
 
j'ai testé avec ca et ca passe pas avec la variable dans l'url.
 
pour initialiser $youp il faut mettre a.php?ok=1
 
mais si tu fais b.php?youp=8 ca marche pas
 
 
enfin je sais pas si c'est clair, mais j'suis un peu pressé là. J'espère que ca pourra quand meme t'aider


---------------
oui oui
Reply

Marsh Posté le 24-03-2003 à 11:05:12    

art_dupond a écrit :

a.php
¯¯¯¯¯
<?
session_start();
if($ok==1)
{
 $youp = 5;
 session_register("youp" );
}
?>
<a href="b.php">b</a>
 
b.php
¯¯¯¯¯
 
<?
session_start();
if(!session_is_registered("youp" ))  
{  
  Header("Location: c.php" );
}
 
echo $youp;
?>
<a href="destroy.php">destroy session</a>
 
c.php
¯¯¯¯¯
crot
 
destroy.php
¯¯¯¯¯¯¯¯¯¯¯
<?
session_start();
session_destroy();
Header("Location: a.php" );
?>


 
 
j'ai testé avec ca et ca passe pas avec la variable dans l'url.
 
pour initialiser $youp il faut mettre a.php?ok=1
 
mais si tu fais b.php?youp=8 ca marche pas
 
 
enfin je sais pas si c'est clair, mais j'suis un peu pressé là. J'espère que ca pourra quand meme t'aider


 
ok merci je v tester ça de suite :)

Reply

Marsh Posté le 24-03-2003 à 17:46:05    

apparemment il faut faire comme ca maintenant :
 
 
 

<?php
session_start();
// Use $HTTP_SESSION_VARS with PHP 4.0.6 or less
if (!isset($_SESSION['count'])) {
    $_SESSION['count'] = 0;
} else {
    $_SESSION['count']++;
}
?>
 
 
<?php
session_start();
// Use $HTTP_SESSION_VARS with PHP 4.0.6 or less
unset($_SESSION['count']);
?>

 
 


---------------
oui oui
Reply

Marsh Posté le 24-03-2003 à 17:55:58    

art_dupond a écrit :

apparemment il faut faire comme ca maintenant :
 
 
 

<?php
session_start();
// Use $HTTP_SESSION_VARS with PHP 4.0.6 or less
if (!isset($_SESSION['count'])) {
    $_SESSION['count'] = 0;
} else {
    $_SESSION['count']++;
}
?>
 
 
<?php
session_start();
// Use $HTTP_SESSION_VARS with PHP 4.0.6 or less
unset($_SESSION['count']);
?>

 
 
 


 
oui j'ai vu ça et je l'ai essayé mais je me heurte à un problème qui est décrit ici : http://forum.hardware.fr/forum2.ph [...] h=&subcat=

Reply

Sujets relatifs:

Leave a Replay

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