Salut à tous
Voila, j'ai un petit pb de comprenette.
J'essaie de mettre en place un espace membre à base de mysql.
J'ai donc récupéré sur le net un script (je suis pas encore assez calé
pour tout écrire moi même) et je l'ai adapté à mon site.
La version actuelle est visible sur
http://kvmas.net
Cela marche plutôt bien, mais les visiteurs sont obligés de ce logger
à chaque visite.
J'ai donc commencé une étude des cookies.
Hélas, cela ne fonctionne pas très bien, disons, pas à 100%.
J'ai bien pigé qu'au moment du premier log, il fallait poser deux
cookies 1 login et 1 pass.
J'ai modifié mon script d'accueil pour qu'il vérifie si le cookie
existe sur la machine du visiteur.
Hélas, en fait j'ai remarqué qu'il y avait 4 cookies enregistrés.
et surtout un PHPSESSID qui semblet-il est la cause des problèmes.
Je n'ai pas vraiment compris les infos que ce cookies contenait ni de
quelle manière il interagissait avec mes cookies login pass. J'ai
juste compris qu'il était crée par php et la fonction session_start()
J'ai relevé également que sa durée de vie était assez courte.
Toujours est-il qu'il arrive que lorsque le script merde, j'obtiens le
truc très bête qui me dit qu'il n'y a ni invité ni membre connecté,
mais qui me salue en me disant que je suis loggé...???
Donc, existe-il un moyen simple de supprimer ce cookie PHPSESSID, où
du moins de savoir ce qu'il fait réellement.
Je vous mets ci dessous un extrait de mon script. En sachant que les
pages protégées sont appelées en include à la fin, et contiennent:
<?
session_start();
if(!session_is_registered("pass"))
{
echo "Cette section est réservée aux membres<p>Vous n'êtes pas
enregistré? <a href='?page=915/forminscr.php'>faite le
ici</a><p>Vous êtes enregistré?Identifiez vous <a
href='?pg=login'>ici</a>";}
elseif(session_is_registered("pass"))
{
include ("Config/config.php");
include ("915/session.php");
?>
Voila le script figurant sur ma page d'index.
<?
ini_set('session.use_trans_sid', false);
ini_set('session.use_only_cookies', false);
session_start();//démarrage de la session
include("Config/config.php");
$date=date("dmY");
$heure=date("Hi");
if(isset($ck)){echo "$ck";}
if($cook=='deco'){ //demande de deconnexion
if (session_is_registered("login")) {//si on est loggé
include("Config/config.php");//on met le statut online a 'non'
mysql_db_query("$db_b","UPDATE $db_table SET online='non' WHERE
login='$login'",$db_link);
ob_start();
setcookie("pseudo","",time()-90000,"/");
setcookie("passw","",time()-90000,"/");
setcookie("pseudo","");
setcookie("passw","");
session_unset();
session_destroy(); // destruction de la session
header("Location: index.php");
ob_end_flush();
exit;
}
}
if($cook=='cook'){// poser les 2 cookies en sortant de
l'enregistrement
setcookie("pseudo",$login,time()+86400);
setcookie("passw",$pass,time()+86400);
}
// nettoyage des tables log et invite
mysql_db_query("$db_b","UPDATE $db_table SET online='non' WHERE
(substring(lastlog,1,8))!='$date'",$db_link);
mysql_db_query("$db_b","DELETE FROM $db_tmptb WHERE
date!=$date",$db_link);
$result= mysql_db_query("$db_b","SELECT heure FROM $db_tmptb WHERE
date=$date",$db_link);
while ($row = mysql_fetch_array($result, MYSQL_BOTH))
{
if ($heure-$row[0]>=1)
{
mysql_db_query("$db_b","DELETE FROM $db_tmptb WHERE date=$date
AND heure='$row[0]'",$db_link);
}
}
if (session_is_registered("login"))
{
$sessid=session_id();
session_unregister("invite");
mysql_db_query("$db_b","DELETE FROM $db_tmptb WHERE
sessid='$sessid'",$db_link);
session_unregister("invite");//par précaution lol
}
$result1= mysql_db_query("$db_b","SELECT (substring(lastlog,12,4))
FROM $db_table WHERE (substring(lastlog,1,8))=$date",$db_link);
while ($row = mysql_fetch_array($result1, MYSQL_BOTH))
{
if ($heure-$row[0]>=5)
{
mysql_db_query("$db_b","UPDATE $db_table SET online='non' WHERE
(substring(lastlog,1,8))=$date AND
(substring(lastlog,12,4))='$row[0]'",$db_link);
}
}
$result=mysql_db_query("$db_b","SELECT online FROM $db_table WHERE
online='non' AND login='$login'",$db_link);
while ($row = mysql_fetch_array($result, MYSQL_BOTH))
{
if (session_is_registered("login"))
{
mysql_db_query("$db_b","UPDATE $db_table SET online='oui' WHERE
(substring(lastlog,1,8))=$date AND login='$login' AND
online='$row[0]'",$db_link);
}
}
if (!session_is_registered("login"))
{
$temp=$HTTP_COOKIE_VARS[pseudo];
$temp2=$HTTP_COOKIE_VARS[passw];
if($temp==""){
session_register("invite");
}
elseif($temp!=""){
$login=&$temp;
$pass=&$temp2;
$ip=$REMOTE_ADDR;
$host=gethostbyaddr($ip);
$log=date("dmY à Hi | ");
$log.=$ip." | ".$host;
session_register("login"); //on enregistre le login
dans la session
session_register("pass"); //on enregistre le pass
dans la session
$sessid=session_id();
session_unregister("invite");
mysql_db_query("$db_b","DELETE FROM $db_tmptb WHERE
sessid='$sessid'",$db_link);
mysql_db_query("$db_b","UPDATE
$db_table SET date='$date' WHERE login='$login'",$db_link);//on ecrit
la date
mysql_db_query("$db_b","UPDATE $db_table SET
heure='$heure'WHERE login='$login'",$db_link);//et l'heure
mysql_db_query("$db_b","UPDATE
$db_table SET ip='$ip'WHERE login='$login'",$db_link);//et l'ip
mysql_db_query("$db_b","UPDATE $db_table SET
lastlog='$log'WHERE login='$login'",$db_link);//et l'ip
header("Location:
http://192.168.0.1/Apinc2/index.php?ck=ko");
exit;
}
}
if (session_is_registered("invite"))
{
$sessid=session_id();
$date=date("dmY");
$heure=date("Hi");
$req=mysql_db_query("$db_b","select sessid from $db_tmptb where
sessid='$sessid'",$db_link);
$result=mysql_fetch_array($req);
if ($result==NULL || empty($result))
{
mysql_db_query("$db_b","INSERT INTO $db_tmptb
(`sessid`,`date`,`heure`) VALUES
('$sessid','$date','$heure')",$db_link);
}
}
?>
<!--debut index original-->
<html>
<head>
<title>*radiologie hôtel-dieu*</title>
<?php
$pid=$_GET['pid'];
$did=$_GET['did'];
include ("Php1/header.inc.php");
//if($pid==Art || $pid==Gal)
if($pid==Art)
{
include ("Php1/center4.inc.php");
}
elseif($pid==Gal)
{
include ("Php1/center3.inc.php");
}
else
{
include ("Php1/center.inc.php");
}
include ("Php1/footer.inc.php");
?>
</body>
</html>
Si vous avez une idée de ce qui merde, je suis preneur.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Frederic BISSON
Hélas, en fait j'ai remarqué qu'il y avait 4 cookies enregistrés. et surtout un PHPSESSID qui semblet-il est la cause des problèmes. Je n'ai pas vraiment compris les infos que ce cookies contenait ni de quelle manière il interagissait avec mes cookies login pass. J'ai juste compris qu'il était crée par php et la fonction session_start() Toujours est-il qu'il arrive que lorsque le script merde, j'obtiens le truc très bête qui me dit qu'il n'y a ni invité ni membre connecté, mais qui me salue en me disant que je suis loggé...??? Donc, existe-il un moyen simple de supprimer ce cookie PHPSESSID, où du moins de savoir ce qu'il fait réellement. Je crois que tu t'emberlificotte les ficelles.
Le mécanisme des sessions de PHP permet de conserver des variables entre deux accès à ton serveur web par la même personne sur le même navigateur. La seule chose à faire est d'appeler session_start() en tout début de script, c'est lui qui va positionner le cookie PHPSESSID. Il s'agit tout simplement d'un identifiant qui permet à PHP de savoir quel lot de variables il doit positionner pour le script.
Pour faire court : 1er script------------------------------- session_start(); $_SESSION['nomutilisateur']='robert'; 2ème script------------------------------ session_start(); echo $_SESSION['nomutilisateur']; -----------------------------------------
Avec ce système, tu n'as plus du tout à te soucier des cookies ou à les manipuler. Les sessions de PHP sont capables de se débrouiller même si les cookies sont interdits par le navigateur.
@+
Frédéric BISSON
Hélas, en fait j'ai remarqué qu'il y avait 4 cookies enregistrés.
et surtout un PHPSESSID qui semblet-il est la cause des problèmes.
Je n'ai pas vraiment compris les infos que ce cookies contenait ni de
quelle manière il interagissait avec mes cookies login pass. J'ai
juste compris qu'il était crée par php et la fonction session_start()
Toujours est-il qu'il arrive que lorsque le script merde, j'obtiens le
truc très bête qui me dit qu'il n'y a ni invité ni membre connecté,
mais qui me salue en me disant que je suis loggé...???
Donc, existe-il un moyen simple de supprimer ce cookie PHPSESSID, où
du moins de savoir ce qu'il fait réellement.
Je crois que tu t'emberlificotte les ficelles.
Le mécanisme des sessions de PHP permet de conserver des variables entre
deux accès à ton serveur web par la même personne sur le même
navigateur. La seule chose à faire est d'appeler session_start() en tout
début de script, c'est lui qui va positionner le cookie PHPSESSID.
Il s'agit tout simplement d'un identifiant qui permet à PHP de savoir
quel lot de variables il doit positionner pour le script.
Pour faire court :
1er script-------------------------------
session_start();
$_SESSION['nomutilisateur']='robert';
2ème script------------------------------
session_start();
echo $_SESSION['nomutilisateur'];
-----------------------------------------
Avec ce système, tu n'as plus du tout à te soucier des cookies ou à les
manipuler. Les sessions de PHP sont capables de se débrouiller même si
les cookies sont interdits par le navigateur.
Hélas, en fait j'ai remarqué qu'il y avait 4 cookies enregistrés. et surtout un PHPSESSID qui semblet-il est la cause des problèmes. Je n'ai pas vraiment compris les infos que ce cookies contenait ni de quelle manière il interagissait avec mes cookies login pass. J'ai juste compris qu'il était crée par php et la fonction session_start() Toujours est-il qu'il arrive que lorsque le script merde, j'obtiens le truc très bête qui me dit qu'il n'y a ni invité ni membre connecté, mais qui me salue en me disant que je suis loggé...??? Donc, existe-il un moyen simple de supprimer ce cookie PHPSESSID, où du moins de savoir ce qu'il fait réellement. Je crois que tu t'emberlificotte les ficelles.
Le mécanisme des sessions de PHP permet de conserver des variables entre deux accès à ton serveur web par la même personne sur le même navigateur. La seule chose à faire est d'appeler session_start() en tout début de script, c'est lui qui va positionner le cookie PHPSESSID. Il s'agit tout simplement d'un identifiant qui permet à PHP de savoir quel lot de variables il doit positionner pour le script.
Pour faire court : 1er script------------------------------- session_start(); $_SESSION['nomutilisateur']='robert'; 2ème script------------------------------ session_start(); echo $_SESSION['nomutilisateur']; -----------------------------------------
Avec ce système, tu n'as plus du tout à te soucier des cookies ou à les manipuler. Les sessions de PHP sont capables de se débrouiller même si les cookies sont interdits par le navigateur.
@+
Frédéric BISSON
DD
On 25 Aug 2004 21:05:51 GMT, Frederic BISSON wrote:
Avec ce système, tu n'as plus du tout à te soucier des cookies ou à les manipuler. Les sessions de PHP sont capables de se débrouiller même si les cookies sont interdits par le navigateur.
D'accord avec toi, mais comme le cookie PHPSESSID ne dure pas dans le temps, les visiteurs sont obligés de se relogger à chaque nouvel accès. Ce qui ne règle pas mon problème. Merci tout de même pour ta visite. DD
On 25 Aug 2004 21:05:51 GMT, Frederic BISSON <zigazou@free.fr> wrote:
Avec ce système, tu n'as plus du tout à te soucier des cookies ou à les
manipuler. Les sessions de PHP sont capables de se débrouiller même si
les cookies sont interdits par le navigateur.
D'accord avec toi, mais comme le cookie PHPSESSID ne dure pas dans le
temps, les visiteurs sont obligés de se relogger à chaque nouvel
accès. Ce qui ne règle pas mon problème.
Merci tout de même pour ta visite.
DD
On 25 Aug 2004 21:05:51 GMT, Frederic BISSON wrote:
Avec ce système, tu n'as plus du tout à te soucier des cookies ou à les manipuler. Les sessions de PHP sont capables de se débrouiller même si les cookies sont interdits par le navigateur.
D'accord avec toi, mais comme le cookie PHPSESSID ne dure pas dans le temps, les visiteurs sont obligés de se relogger à chaque nouvel accès. Ce qui ne règle pas mon problème. Merci tout de même pour ta visite. DD
Frederic BISSON
D'accord avec toi, mais comme le cookie PHPSESSID ne dure pas dans le temps, les visiteurs sont obligés de se relogger à chaque nouvel accès. Ce qui ne règle pas mon problème. Combien de temps dure-t-il chez toi ?
@+
Frédéric BISSON
D'accord avec toi, mais comme le cookie PHPSESSID ne dure pas dans le
temps, les visiteurs sont obligés de se relogger à chaque nouvel
accès. Ce qui ne règle pas mon problème.
Combien de temps dure-t-il chez toi ?
D'accord avec toi, mais comme le cookie PHPSESSID ne dure pas dans le temps, les visiteurs sont obligés de se relogger à chaque nouvel accès. Ce qui ne règle pas mon problème. Combien de temps dure-t-il chez toi ?
@+
Frédéric BISSON
DD
On 26 Aug 2004 22:34:09 GMT, Frederic BISSON wrote:
Combien de temps dure-t-il chez toi ?
A vrai dire je ne sais pas trop te répondre, je sais uniquement que si l'on se reconnecte dans les minutes qui suivent, c'est bon, mais plus d'une heure après, c'est foutu. Voici un extrait du php.ini de mon hébergeur. Apparemment, s.cookie_lifetime est à 0, ce qui semble bien.
Directive Local Value Master Value session.auto_start Off Off session.bug_compat_42 On On session.bug_compat_warn On On session.cache_expire 180 180 session.cache_limiter nocache nocache session.cookie_domain no value no value session.cookie_lifetime 0 0 session.cookie_path / / session.cookie_secure Off Off session.entropy_file no value no value session.entropy_length 0 0 session.gc_divisor 100 100 session.gc_maxlifetime 1440 1440 session.gc_probability 1 1 session.name PHPSESSID PHPSESSID session.referer_check no value no value session.save_handler files files session.save_path /var/export_common/http_sessions/ /var/export_common/http_sessions/ session.serialize_handler php php session.use_cookies On On session.use_only_cookies Off Off session.use_trans_sid Off Off
DD
On 26 Aug 2004 22:34:09 GMT, Frederic BISSON <zigazou@free.fr> wrote:
Combien de temps dure-t-il chez toi ?
A vrai dire je ne sais pas trop te répondre, je sais uniquement que si
l'on se reconnecte dans les minutes qui suivent, c'est bon, mais plus
d'une heure après, c'est foutu.
Voici un extrait du php.ini de mon hébergeur.
Apparemment, s.cookie_lifetime est à 0, ce qui semble bien.
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /var/export_common/http_sessions/
/var/export_common/http_sessions/
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid Off Off
On 26 Aug 2004 22:34:09 GMT, Frederic BISSON wrote:
Combien de temps dure-t-il chez toi ?
A vrai dire je ne sais pas trop te répondre, je sais uniquement que si l'on se reconnecte dans les minutes qui suivent, c'est bon, mais plus d'une heure après, c'est foutu. Voici un extrait du php.ini de mon hébergeur. Apparemment, s.cookie_lifetime est à 0, ce qui semble bien.
Directive Local Value Master Value session.auto_start Off Off session.bug_compat_42 On On session.bug_compat_warn On On session.cache_expire 180 180 session.cache_limiter nocache nocache session.cookie_domain no value no value session.cookie_lifetime 0 0 session.cookie_path / / session.cookie_secure Off Off session.entropy_file no value no value session.entropy_length 0 0 session.gc_divisor 100 100 session.gc_maxlifetime 1440 1440 session.gc_probability 1 1 session.name PHPSESSID PHPSESSID session.referer_check no value no value session.save_handler files files session.save_path /var/export_common/http_sessions/ /var/export_common/http_sessions/ session.serialize_handler php php session.use_cookies On On session.use_only_cookies Off Off session.use_trans_sid Off Off
DD
Frederic BISSON
Combien de temps dure-t-il chez toi ? Apparemment, s.cookie_lifetime est à 0, ce qui semble bien.
J'ai la même chose chez moi (je n'ai pas regardé à fond, mais je crois
que toutes les valeurs que tu m'as données sont les valeurs par défaut).
As-tu le même phénomène sur des navigateurs/machines différentes ?
@+
Frédéric BISSON
Combien de temps dure-t-il chez toi ?
Apparemment, s.cookie_lifetime est à 0, ce qui semble bien.
J'ai la même chose chez moi (je n'ai pas regardé à fond, mais je crois
que toutes les valeurs que tu m'as données sont les valeurs par défaut).
As-tu le même phénomène sur des navigateurs/machines différentes ?
Combien de temps dure-t-il chez toi ? Apparemment, s.cookie_lifetime est à 0, ce qui semble bien.
J'ai la même chose chez moi (je n'ai pas regardé à fond, mais je crois
que toutes les valeurs que tu m'as données sont les valeurs par défaut).
As-tu le même phénomène sur des navigateurs/machines différentes ?
@+
Frédéric BISSON
DD
On 26 Aug 2004 22:34:09 GMT, Frederic BISSON wrote:
Combien de temps dure-t-il chez toi ?
Oups, je t'avais envoyé une réponse, mais l'est pas passée!
Donc, a priori le phpsessid figure bien dans mes cookies, mais si je me reconnecte dans les 3 ou 4 minutes, tout va bien, je suis toujours enregistré comme membre, par contre passé le quart d'heure, je dois me relogger.
Cela peut-il provenir de l'emploi des anciennes syntaxes, comme session_is_registered, et session_register ?
Dans le post qui s'est perdu j'avais posté un extrait du php.ini de mon fai qui utilise php4.3.8 et dont le cookie_lifetime est à 0.
DD
On 26 Aug 2004 22:34:09 GMT, Frederic BISSON <zigazou@free.fr> wrote:
Combien de temps dure-t-il chez toi ?
Oups, je t'avais envoyé une réponse, mais l'est pas passée!
Donc, a priori le phpsessid figure bien dans mes cookies, mais si je
me reconnecte dans les 3 ou 4 minutes, tout va bien, je suis toujours
enregistré comme membre, par contre passé le quart d'heure, je dois me
relogger.
Cela peut-il provenir de l'emploi des anciennes syntaxes, comme
session_is_registered, et session_register ?
Dans le post qui s'est perdu j'avais posté un extrait du php.ini de
mon fai qui utilise php4.3.8
et dont le cookie_lifetime est à 0.
On 26 Aug 2004 22:34:09 GMT, Frederic BISSON wrote:
Combien de temps dure-t-il chez toi ?
Oups, je t'avais envoyé une réponse, mais l'est pas passée!
Donc, a priori le phpsessid figure bien dans mes cookies, mais si je me reconnecte dans les 3 ou 4 minutes, tout va bien, je suis toujours enregistré comme membre, par contre passé le quart d'heure, je dois me relogger.
Cela peut-il provenir de l'emploi des anciennes syntaxes, comme session_is_registered, et session_register ?
Dans le post qui s'est perdu j'avais posté un extrait du php.ini de mon fai qui utilise php4.3.8 et dont le cookie_lifetime est à 0.
DD
DD
On 30 Aug 2004 19:46:02 GMT, Frederic BISSON wrote:
As-tu le même phénomène sur des navigateurs/machines différentes ?
Voui, et désolé de ne pas avoir pu reprendre le thread dès lundi. Je m'en sors actuellement en posant deux cookies autres que le cookie de session, ce qui provoque quelques gags mais je n'ai pas encore trouvé la raison, ce que j'ai vu par contre c'est que dans les propriétés de phpsessid l'expiration est en "1970". Pourtant, très théoriquement d'après les docs diverses, ce phpsessid doit cesser d'exister dès la fermeture du browser.
On 30 Aug 2004 19:46:02 GMT, Frederic BISSON <zigazou@free.fr> wrote:
As-tu le même phénomène sur des navigateurs/machines différentes ?
Voui, et désolé de ne pas avoir pu reprendre le thread dès lundi.
Je m'en sors actuellement en posant deux cookies autres que le cookie
de session, ce qui provoque quelques gags mais je n'ai pas encore
trouvé la raison, ce que j'ai vu par contre c'est que dans les
propriétés de phpsessid l'expiration est en "1970".
Pourtant, très théoriquement d'après les docs diverses, ce phpsessid
doit cesser d'exister dès la fermeture du browser.
On 30 Aug 2004 19:46:02 GMT, Frederic BISSON wrote:
As-tu le même phénomène sur des navigateurs/machines différentes ?
Voui, et désolé de ne pas avoir pu reprendre le thread dès lundi. Je m'en sors actuellement en posant deux cookies autres que le cookie de session, ce qui provoque quelques gags mais je n'ai pas encore trouvé la raison, ce que j'ai vu par contre c'est que dans les propriétés de phpsessid l'expiration est en "1970". Pourtant, très théoriquement d'après les docs diverses, ce phpsessid doit cesser d'exister dès la fermeture du browser.