Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/10/2006, 16h59   #1
Membre confirmé
 
Avatar de linar009
 
Inscription : juillet 2006
Messages : 497
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 497
Points : 271
Points : 271
Par défaut Perte de variables dans une session SSL

Bonjour,

J'ai un petit souci avec mon site PHP :
Lorsque que je le faisais tourner en HTTP classique : aucun problème.
Depuis que je l'ai passé en SSL (sécurisé), mes variables php se perdent à chaque chargement de nouvelle page.
Je ne comprends pas pourquoi, surtout que lorsque je regarde l'ID de ma session à chaque ouverture de page il est identique à chaque fois.

Voici un extrait de mon code PHP:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
session_start();

$erreur = '';

if ($act == 'valid'){
  $sql  = "......";
  $res = pg_fetch_array(pg_query($sql));
  if ($res['niveau'] == ''){
       $erreur = 'Login ou mot de passe incorrect';
  }else{
       $_SESSION['member_login'] = $login;    
       echo "<script>location.href='index2.html'</script>";
   }
}else{
  echo "<script>if (self != top)top.location.href='';</script>";
  session_unset();
  session_destroy();
}
?>
Le problème est que la valeur de ma variable $act est perdue à chaque fois, donc le script passe toujours par la partie en rouge.

Et voici la partie HTML de ma page:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<HTML>
<HEAD>
<META content="text/html; charset=windows-1252" http-equiv=Content-Type>
<META HTTP-EQUIV="Expires" CONTENT="0">
<LINK href="class-style/ie4v2.css" rel=stylesheet type=text/css></link>
<STYLE media="screen" type="text/css">
</STYLE>
</HEAD>
<BODY onload='form1.login.focus();'>
<DIV id=layer2>
<DIV id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<CENTER>
<FORM name='form1' ACTION='<?php echo $PHP_SELF; ?>' METHOD=POST>
  <INPUT TYPE='hidden' NAME='act' VALUE='valid'>
 
  <TABLE  style='table-layout:fixed' class='std' cellspacing='0'>
    <COLGROUP>
    <COL width='170'>
    <COL width='170'>
    <TR>
      <TH class='left' colspan=2>Identification</TH>
    </TR>
    <TR>
      <TD class='left'>Identifiant : </TD>
      <TD><INPUT TYPE='text' SIZE=30 NAME='login'></TD>
    </TR>
    <TR>
      <TD class='left'>Mot de passe : </TD>
      <TD><INPUT TYPE='password' SIZE=30 NAME='passe'></TD>
    </TR>
    <TR>
      <TD class='left' colspan=2 style='TEXT-ALIGN:center'><input type='image' src='images/b_valid.gif'></TD>
    </TR>
  </TABLE>
</FORM>
<FONT COLOR='#FF0000'><?php echo $erreur; ?></FONT>
</CENTER>
</BODY>
</HTML>
J'espère avoir été clair.

Merci par avance.
__________________
Je n'ai pas participé à de nombreuses courses de spermatozoïdes, mais j'ai donné de nombreux départs...
linar009 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2006, 17h25   #2
Membre confirmé
 
Avatar de linar009
 
Inscription : juillet 2006
Messages : 497
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 497
Points : 271
Points : 271
Je tiens à préciser également que je suis passé de la version 4 à 5 de PHP. Mais normalement les scripts PHP4 sont entièrement compatibles avec la version 5 ...
__________________
Je n'ai pas participé à de nombreuses courses de spermatozoïdes, mais j'ai donné de nombreux départs...
linar009 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2006, 17h48   #3
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Je ne comprends pas d'où sort la variable $act : si c'est une variable de session c'est $_SESSION['act'] qui doit être utilisé. Votre test deviendrait ainsi :
Code :
1
2
 
if (isset($_SESSION['act']) && $_SESSION['act'] == 'valid') {

Cordialement, Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2006, 08h57   #4
Membre confirmé
 
Avatar de linar009
 
Inscription : juillet 2006
Messages : 497
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 497
Points : 271
Points : 271
Citation:
Envoyé par julp
Je ne comprends pas d'où sort la variable $act : si c'est une variable de session c'est $_SESSION['act'] qui doit être utilisé. Votre test deviendrait ainsi :
Code :
1
2
 
if (isset($_SESSION['act']) && $_SESSION['act'] == 'valid') {
Non ce n'est pas une variable de session, c'est une variable résultant d'un type input caché :

Code :
1
2
<FORM name='form1' ACTION='<?php echo $PHP_SELF; ?>' METHOD=POST>
  <INPUT TYPE='hidden' NAME='act' VALUE='valid'>
__________________
Je n'ai pas participé à de nombreuses courses de spermatozoïdes, mais j'ai donné de nombreux départs...
linar009 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2006, 10h55   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par linar009
Non ce n'est pas une variable de session, c'est une variable résultant d'un type input caché :
Dans ce cas il faut utiliser le tableau super global $_POST et la condition deviendrait :
Code :
1
2
 
if (isset($_POST['act']) && $_POST['act'] == 'valid') {
Vous programmez avec les register_globals à On (cf phpinfo) ?


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2006, 13h09   #6
Membre confirmé
 
Avatar de linar009
 
Inscription : juillet 2006
Messages : 497
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 497
Points : 271
Points : 271
Citation:
Envoyé par julp
Vous programmez avec les register_globals à On (cf phpinfo) ?
Oui aucun souci j'ai bien positionné le register_global à ON dans mon php.ini.
Mais pourriez-vous me dire pourquoi cela fonctionnait avant et plus maintenant ?
Je ne pense pas qu'il s'agisse d'un problème de passage par le tableau $_POST

J'ai une info supplémentaire pour vous :

Code :
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /baseweb/top.php:1) in /baseweb/www/page.php on line 3
En tout cas merci pour votre aide.
__________________
Je n'ai pas participé à de nombreuses courses de spermatozoïdes, mais j'ai donné de nombreux départs...
linar009 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2006, 13h31   #7
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par linar009
J'ai une info supplémentaire pour vous :
Code :
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /baseweb/top.php:1) in /baseweb/www/page.php on line 3
Cette erreur vous informe que vous envoyez des données au client (texte, HTML, ...) avant d'envoyer/modifier les en-têtes HTTP. Cette erreur est abordée par la FAQ PHP. En gros, session_start() doit être placé en tout tout début de script. Le code HTML donné ci-dessus précède-t-il le code PHP donné également ci-dessus ?

Si vous passez dans le else, je doute que ce soit lié aux sessions en elles-mêmes sauf éventuellement leur configuration (voir le tutoriel donné ci-dessous).

Note :
  • La fonction session_unset est dépréciée voir l'article concernant les sessions.
  • Il est recommandé de mettre les register globals à Off


Cordialement, Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2006, 12h51   #8
Membre confirmé
 
Avatar de linar009
 
Inscription : juillet 2006
Messages : 497
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 497
Points : 271
Points : 271
ok merci pour toutes ces informations !
__________________
Je n'ai pas participé à de nombreuses courses de spermatozoïdes, mais j'ai donné de nombreux départs...
linar009 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h07.


 
 
 
 
Partenaires

Hébergement Web