pb d'identification

JoyeuxBranleur

Membre émérite
19 Juillet 2001
667
4
39
Saint-Etienne
www.meetyou.fr.st
Je vous explique mon problème, pour se connecter a mon site, il faut s'identifier en interrogeant une base mysql, si on est correctement identifié, je crée un cookie ou des variables de sessions (au choix de l'internaute). Ceci marche très bien dans de nombreux cas mais sur certaines version d'explorer (des versions souvent récentes), on est obligé de baisser la sécurité du navigateur au minimum afin qu'il accepte mes cookie ou des variables de session.
Je pense que ça vient d'une erreur de programmation car sur certain site on peut créer des sessions sans être obligé de baisser la sécurité et ce avec les mêmes navigateur.

Voici le code que j'utilise.

Pour l'ouverture de la session/création du cookie
<font class="small">Code:</font><hr /><pre>
&lt;? header("Cache-Control: no-cache, must-revalidate");
if($PHPSESSID)session_start($PHPSESSID); else session_start();
?&gt;
&lt;?

//connection à la base et selection des elements a afficher
include ("connexion.php");
//test de l'existence de l'utilisateur
$requete="select * from users where pseudo='".$pseudo."' and pwd=PASSWORD('".$pwd."');";
$resultat=mysql_query($requete);


if (mysql_num_rows($resultat)==0)
{

$etat="inconnu";

}
else

{

//creation d'un cookies
$fiche=mysql_fetch_array($resultat);
if ($cookies=='oui')
{
$duree=365*24*60*60; //ca fait un an
setcookie("session[pseudo]",$pseudo,time()+$duree,"/");
setcookie("session[pwd]",$pwd,time()+$duree,"/");
setcookie("session[num]",$fiche['num'],time()+$duree,"/");
if($PHPSESSID)session_start($PHPSESSID); else session_start();
session_register("idpseudo");
session_register("idpwd");
session_register("idnum");
session_register("idcookies");
$idpseudo=$pseudo;
$idpwd=$pwd;
$idnum=$fiche['num'];
$idcookies='1';
}
else
{
if($PHPSESSID)session_start($PHPSESSID); else session_start();
session_register("idpseudo");
session_register("idpwd");
session_register("idnum");
$idpseudo=$pseudo;
$idpwd=$pwd;
$idnum=$fiche['num'];
}
$etat="connu";

}
</pre><hr />
Sur les pages du site:
<font class="small">Code:</font><hr /><pre>
&lt;? header("Cache-Control: no-cache, must-revalidate");
if($PHPSESSID)session_start($PHPSESSID); else session_start();
if ($session[pseudo]!='') $monpseudo=$session[pseudo]; else $monpseudo=$idpseudo;
if ($session[pwd]!='') $monpwd=$session[pwd]; else $monpwd=$idpwd;
if ($session[num]!='') $monnum=$session[num]; else $monnum=$idnum; ?&gt;
</pre><hr />
Dans ce cas si il ya bien une variable de session l’utilisateur voit la page s’afficher, sinon il est renvoyé sur la page d’identification (ce qui arrive avec certains navigateur).