PHP et les variables de session Probleme

PHP et les variables de session Probleme - PHP - Programmation

Marsh Posté le 29-08-2006 à 16:20:53    

Bonjour a vous,
 
Voila j'utilise apache et php jusqu'a la tout ba bien ... :)
Hormis l'utilisation des variable de session, je m'explique
########################## code utilise sur page 1 #####################
<?php session_start(); ?>
<?
//session_cache_limiter(public);
echo session_id();
$_SESSION["reference"] = "toto";
echo $_SESSION['reference'];
?>  
/////////////////////////////////////////  redirection ////////////////////////////////////////////
/////////////////////////////////////// $vu est gerer par une autre partie du code ///////////
if ($vu == 0) {
;$meta = "<META http-equiv='Refresh' content='7;URL=index.php'>";
$message = "Il semble que vos logins et mot de passe ne soient pas corrects";
}
if ($vu == 1) {
;$meta = "<META http-equiv='Refresh' content='2;URL=../_PagesMembresIndex.php'>";
$message = "Connection en cours...";
}
################################################################
En arrivant sur cette page tout va bien mon numero de session s'affiche ainsi que "toto", de cette page je fais une redirection 'meta refresh", vers page2 alors la ca se complique.
 
c'est la ou rien ne va plus ...  
########################## code utilise sur page 2 #####################
<?php session_start(); ?>
<?
echo session_id();
$titi = $_SESSION['reference'];
echo $titi
?>
################################################################
j obtiens un nouveau ID session et bien entendu je ne retrouve pas toto ....
 
Alors si vous pouviez ...
pour info j'ai teste en href pour evite le meta refresh pareil ....  
 
J'attends vos reponses :)

Reply

Marsh Posté le 29-08-2006 à 16:20:53   

Reply

Marsh Posté le 29-08-2006 à 18:51:12    

et si tu affecte un nom a ta session avec session_name() ca aide pas?

Reply

Marsh Posté le 29-08-2006 à 19:16:46    

Pour te dire non  
Page 1
session_name ("WebsiteID" );
$_SESSION["reference"] = "toto";
Pages 2
session_name ("WebsiteID" );
echo session_name();
echo  $_SESSION['reference'];
 
Resultat identique en revanche si je passe par url avec .strip_tags(SID). cela fontionne, mais cette methode ne m'interesse pas car je ne la trouve pas tres securisée ... car ID peut etre copier d'une station a l'autre et la hop ca me stress ...  :) Merci bonne iniative de ta part. Par contre si je me suis trompe quelque part n'hesite pas a me le dire.


Message édité par DavidCmoi92 le 29-08-2006 à 19:17:20
Reply

Marsh Posté le 29-08-2006 à 20:46:32    

C'est vraiement urgent les gars si quelqu un peut prendre qq minutes de son temps pour m'aider.

Reply

Marsh Posté le 29-08-2006 à 20:58:06    

Je vois pas du tout en quoi ça peut poser problème, est-ce que ta session se créé dans le même répertoire que le fichier suivant ou dans un répertoire parent ?

Reply

Marsh Posté le 29-08-2006 à 21:11:35    

Tu pourrais mettre ton code entre balises ?


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 29-08-2006 à 22:09:31    

Response pour FMC
oui ma sessions se creer bien sur /var/www/sessions/  
en sachant que mon site est stocke sur /var/www/
 
Response pour Dj YeLL
Heuu dans le post, ou tu me parles dans le code, si tu parles du code rassure toi celui ci est bien sous ref <?php  ?>.  
 
la seul soulution que je reconfirme est celle en passant le PHPSESSID dans url.
Sinon comme je l'ai explique, chaque page regenere une session ID. Lorsque je consulte le fichier session 'nano /var/www/XXXXXXXXXX' je retrouve bien mais variable dedans.
 
Mais bon un copier coller et je me retrouve multisession ... pas trop pour moi.

Message cité 1 fois
Message édité par DavidCmoi92 le 29-08-2006 à 22:10:54
Reply

Marsh Posté le 29-08-2006 à 22:28:22    

Essaie d'attribuer ta session à la racine.

Reply

Marsh Posté le 29-08-2006 à 22:47:10    

Pareil pour les sessions a la racine ...  
vous croyez que ca viens du php.ini ?


Message édité par DavidCmoi92 le 29-08-2006 à 22:54:24
Reply

Marsh Posté le 29-08-2006 à 22:54:52    

Pourrait-on voir le code complet de tes 2 pages ?

Reply

Marsh Posté le 29-08-2006 à 22:54:52   

Reply

Marsh Posté le 29-08-2006 à 23:00:43    

page 1
-----------------------------------------------------------
<?php session_start(); ?>
<?
$login   =  $_POST["login"];
$mdp  =  $_POST["mdp"];
$vu   = 0;
 
$_SESSION["reference"]    = "toto";  //sample
echo session_name();            //sample
echo session_id();             //sample
include("__Include/CXINSCRIPTION.php" );
$query   = "SELECT * FROM `inscription`";
$result  = mysql_query($query);
while ($val=mysql_fetch_array($result)){
if (($login == $val["login"]) and ($mdp == $val["mdp"])){
$vu   =  1;
//$_SESSION["reference"]    = $val["reference"];
$_SESSION["email"]     = $val["e-mail"];
$_SESSION["nom"]     = $val["nom"];
$_SESSION["prenom"]    = $val["prenom"];
$_SESSION["adresse"]    = $val["login"];
$_SESSION["cp"]     = $val["code_postal"];
$_SESSION["ville"]     = $val["ville"];
 
}}
if ($vu == 0) {
$meta = "<META http-equiv='Refresh' content='7;URL=index.php?'".strip_tags(SID)."'>";
$message = "Il semblerait que vos logins et mot de passe ne soient pas corrects";
}
if ($vu == 1) {
$meta = "<META http-equiv='Refresh' content='7;URL=_PagesMembresIndex.php'>";
//$meta = "<META http-equiv='Refresh' content='7;URL=_PagesMembresIndex.php?".strip_tags(SID)."'>";
$message = "Connection en cours...";
}
 
?>
reste du code html.
------------------------------ fin page 1
 
Page 2
-------------------------------------------------------------------
<?php session_start(); ?>
<?
echo  $_SESSION['reference']; //sample
echo session_id(); //sample
?>
 
code html
 
          <tr>
            <th class="style3" scope="row"><div align="left">  </div></th>
            <td>&nbsp;</td>
            <td class="style4"><div align="left"><? echo  $_SESSION['email']; ?></div></td>
          </tr>
 
----------------------  fin page 2
 
 
 
 
 
 
 
type de session creer sur le serveur sess_XXXXXXXXXXXXXXXXXXXXXXXXXX


Message édité par DavidCmoi92 le 29-08-2006 à 23:02:32
Reply

Marsh Posté le 30-08-2006 à 09:13:11    

Dois je me resigner a utiliser id dans URL ?

Reply

Marsh Posté le 30-08-2006 à 10:03:33    

J'ai pas regardé ton code donc je suis peut-être à côté de la plaque, mais ton navigateur accepte-t-il les cookies pour le domaine de ton site ?
Parce que ça expliquerait un peu tous tes problèmes :D
 
Fais une pauv' page qui te balance un cookie, et vérifie que ton navigateur l'a accepté.

Reply

Marsh Posté le 30-08-2006 à 10:39:07    

pourquoi tu ouvre ta balise php et tu la referme juste aprés ton session_start() ? ça ne sert à rien !
 
Tu l'ouvre en début de code php, et tu la referme à la fin... m'enfin c'est ce que je fais et les sessions fonctionnent trés bien .. même sans acceptation des cookies..

Reply

Marsh Posté le 30-08-2006 à 10:47:51    

chani_t a écrit :

pourquoi tu ouvre ta balise php et tu la referme juste aprés ton session_start() ? ça ne sert à rien !
 
Tu l'ouvre en début de code php, et tu la referme à la fin... m'enfin c'est ce que je fais et les sessions fonctionnent trés bien .. même sans acceptation des cookies..


 
Les sessions ne peuvent pas fonctionner sans cookies, à moins d'avoir la réécriture activée, dans ce cas Php ajoute tout seul ?PHPSESSIS=xxxxxxxxxxxx derrière tous les liens


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 30-08-2006 à 11:04:18    

chani_t a écrit :

les sessions fonctionnent trés bien .. même sans acceptation des cookies..


si tu acceptes pas les cookies, le SID passe par url, ce que ne veut pas la personne qui a ouvert ce post ...

Reply

Marsh Posté le 30-08-2006 à 12:54:21    

Le passage du SID en url n'est pas super pour le référencement, mieux vaut obliger les utilisateurs à utiliser les cookies. Généralement les cookies de sessions ne sont pas bloqués même si un niveau de sécurité minimum est activé.
 
Et un petit conseil, ton test de mot de passe et login n'est pas "Case Sensitive" et mieux vaut crypter les mots de passe de tes utilisateurs, mais je m'éloigne du sujet.

Reply

Marsh Posté le 30-08-2006 à 22:26:38    

chani_t a écrit :

pourquoi tu ouvre ta balise php et tu la referme juste aprés ton session_start() ? ça ne sert à rien !
 
Tu l'ouvre en début de code php, et tu la referme à la fin... m'enfin c'est ce que je fais et les sessions fonctionnent trés bien .. même sans acceptation des cookies..


 
Pour la balise d'entree je ne sais pas un coup de fatigue certainement et puis comme ca elle est là.
... certainement que les sessions fonctionne mais en passge dans URL ? non ?
Si non je veux bien ta conf php.ini et meme apache.conf qui sait.
 
Merci

Reply

Marsh Posté le 30-08-2006 à 22:27:45    

Djebel1 a écrit :

si tu acceptes pas les cookies, le SID passe par url, ce que ne veut pas la personne qui a ouvert ce post ...


certains suivent ... Merci a eux

Reply

Marsh Posté le 30-08-2006 à 22:28:55    

FMC a écrit :

Le passage du SID en url n'est pas super pour le référencement, mieux vaut obliger les utilisateurs à utiliser les cookies. Généralement les cookies de sessions ne sont pas bloqués même si un niveau de sécurité minimum est activé.
 
Et un petit conseil, ton test de mot de passe et login n'est pas "Case Sensitive" et mieux vaut crypter les mots de passe de tes utilisateurs, mais je m'éloigne du sujet.


 
Merci pour tes tuyaux mais c'est la mission pour la fin ca ... :) Mais agréable de recevoir de bons commentaires et conseils.

Reply

Marsh Posté le 30-08-2006 à 22:29:57    

D'ailleurs pour rebondir sur le session id passé en param d'url, c'est dangereux, et il vaut mieux le desactiver, au risque d'avoir des usurpation de session


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 30-08-2006 à 22:30:03    

FMC a écrit :

Le passage du SID en url n'est pas super pour le référencement, mieux vaut obliger les utilisateurs à utiliser les cookies. Généralement les cookies de sessions ne sont pas bloqués même si un niveau de sécurité minimum est activé.
 
Et un petit conseil, ton test de mot de passe et login n'est pas "Case Sensitive" et mieux vaut crypter les mots de passe de tes utilisateurs, mais je m'éloigne du sujet.


 
Tiens j'ai note cela pourquoi me faire pointer le doigt sur le reference, j'avoue ne pas comprendre.

Reply

Marsh Posté le 30-08-2006 à 22:33:19    

DavidCmoi92 a écrit :

Response pour FMC
oui ma sessions se creer bien sur /var/www/sessions/  
en sachant que mon site est stocke sur /var/www/
 
Response pour Dj YeLL
Heuu dans le post, ou tu me parles dans le code, si tu parles du code rassure toi celui ci est bien sous ref <?php  ?>.  

la seul soulution que je reconfirme est celle en passant le PHPSESSID dans url.
Sinon comme je l'ai explique, chaque page regenere une session ID. Lorsque je consulte le fichier session 'nano /var/www/XXXXXXXXXX' je retrouve bien mais variable dedans.
 
Mais bon un copier coller et je me retrouve multisession ... pas trop pour moi.


 
Ah tiens j'avais pas vu que tu m'avais répondu :D
 
Non je parlais du forum, encore ton code des balises [code = php] et [/ code] (sans les espaces), ça sera plus lisible :)


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 31-08-2006 à 05:21:33    

et au final, c'était un problème de cookie alors ?

Reply

Marsh Posté le 31-08-2006 à 11:13:25    

DavidCmoi92 a écrit :

Tiens j'ai note cela pourquoi me faire pointer le doigt sur le reference, j'avoue ne pas comprendre.


Parce que le référencement c'est quelque chose d'important pour tout site ;) !
 
 
Au niveau des sessions, il faut inclure des paramètres de vérification supplémentaires pour éviter l'usurpation par passage en URL. Moi par exemple, je créé une variable session contenant l'IP au moment du login, ainsi qu'une heure limite de session. Cette heure se met à jour à chaque rafraichissement de page. Et à chaque page je vérifie que la session n'a pas expiré et que l'IP n'a pas changé.

Reply

Marsh Posté le 31-08-2006 à 14:58:14    

Humm pas mal et porquoi pas, en revanche je ne comprends pas toujours pourquoi IDSESSION va me derranger pour mon reference.

Reply

Marsh Posté le 31-08-2006 à 16:30:38    

Parce que Google n'aime pas ça :p ! Tout simplement ! En fait, Google n'aime pas trop les variables dans les URLs, il vaut mieux faire de l'URL Rewriting, mais ça c'est pour un autre forum ;) !

Reply

Marsh Posté le 01-09-2006 à 11:37:29    

FMC a écrit :

Parce que Google n'aime pas ça :p ! Tout simplement ! En fait, Google n'aime pas trop les variables dans les URLs, il vaut mieux faire de l'URL Rewriting, mais ça c'est pour un autre forum ;) !


 
Merci pour les infos.

Reply

Marsh Posté le 01-09-2006 à 11:39:32    

Google gère assez bien jusqu'à 2 params seulement, il me semble.
 
Et l'autre pb aussi, c'est que pour certains bot réferenceurs, index.php?PHPSESSID=015161d65e465f654a654d654ec c'est pas la même page que index.php?PHPSESSID=5d6a846d4818e416d81c46a8
 
etc...


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 01-09-2006 à 11:44:38    

Oui, et du coup si le moteur (en particulier Google), à l'impression que tu fais des doublons de tes pages sous différents noms il va moins t'aimer et plus facilement kicker tes pages.

Reply

Marsh Posté le 01-09-2006 à 18:00:15    

par contre, je me rappelle d'un post où le gars expliquait qu'avec le passage de SID par url, ses pages se retrouvaient indexées sur msn search AVEC le SID, et que quand on suivait les liens, on pouvait parfois se connecter sur le compte d'un utilisateur actuellement log.
Et je n'arrive plus à me rappeler quelle en était la raison (ce n'était pas "simplement" parce que le SID référencé était utilisé au moment où tu cliquais sur le lien, parce que les chances que ça arrive ça ...).
Quelqu'un se souvient de ce post ?

Reply

Marsh Posté le 01-09-2006 à 18:59:17    

Djebel1 a écrit :

par contre, je me rappelle d'un post où le gars expliquait qu'avec le passage de SID par url, ses pages se retrouvaient indexées sur msn search AVEC le SID, et que quand on suivait les liens, on pouvait parfois se connecter sur le compte d'un utilisateur actuellement log.
Et je n'arrive plus à me rappeler quelle en était la raison (ce n'était pas "simplement" parce que le SID référencé était utilisé au moment où tu cliquais sur le lien, parce que les chances que ça arrive ça ...).
Quelqu'un se souvient de ce post ?


 
Voilà la raison :
 
Admettons que tu es sous MSN Search, que tu as http://un.site.com/index.php?PHPSESSID=12345 (j'abrege hein :D )
 
Tu cliques sur ce lien, et tu tombe sur le site, ton SID est donc 12345 ... il ne sert à rien pour le moment, et on s'en fiche... mais tu te créés un comptes, et tu te connectes, tu as donc tjs le SID 12345.
 
5 minutes après, quelqu'un tombe sur le même lien sur MSN Search ... il clique, il se passe quoi si le site n'a pas de protection ? Et bien il récupère la session 12345.
 
Donc si vous utilisez l'ecriture automatique, TOUJOURS penser à regénérer le session_id AVANT de logguer la personne.


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 02-09-2006 à 01:14:20    

ouais mais le truc, c'était surtout qu'avec les liens sur msn search, tu te retrouvais connecté avec un compte, le lendemain avec un autre, le surlendemain avec aucun (tout ça pour la même adresse sur msn search).
 
Donc c'était pas une histoire de 5mn, et la probabilité qu'avec un même  
SID,  on puisse retomber plusieurs fois sur un SID actuellement utilisé, me paraît ben faible. Au final, il y avait une autre explication, mais je retrouve plus le post.

Reply

Marsh Posté le 02-09-2006 à 10:16:28    

Ben ça dépend combien de temps le serveur garde les fichiers de session je suppose


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 03-09-2006 à 02:07:50    

oui mais non le problème, c'est surtout la probabilité de tomber sur un SID  utilisé par différents utilisateurs à différents moments. Je me souviens clairement que ce n'était pas ça le problème, mais je ne me souviens plus ce que c'était :p

Reply

Marsh Posté le 03-09-2006 à 10:59:24    

Ah, j'ai des doutes là ... mais bon, si jamais tu le retrouve, ça m'interesse :jap:


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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