Les variables de session magiques... [PHP] - PHP - Programmation
Marsh Posté le 22-09-2003 à 04:29:05
Je ne suis pas un pro de PHP, mais es-tu sûr que dans la config de PHP, tu n'as pas register_globals a true. Si c'est le cas, ton $user_id référence directement $_SESSION['user_id'], d'où ton erreur.
Marsh Posté le 22-09-2003 à 04:30:36
verifie dans ton php.ini que "register_globals" est bien à Off
si c'est pas le cas, met le à off.
Citation : ; Whether or not to register the EGPCS variables as global variables. You may |
Marsh Posté le 22-09-2003 à 04:31:08
tiens c'est pas à jour la doc dans ce fichier
Marsh Posté le 22-09-2003 à 04:31:57
en fait tu peux simplement faire un phpinfo() et tu verras ton register_globals
(des fois que t'aurais pas le serveur sous la main)
(dans la section Configuration - PHP Core, la 2e si je ne m'abuse)
edit: comment jme fais griller, j'ai rien vu
ça m'apprendra a vouloir détailler ma reponse
Marsh Posté le 22-09-2003 à 04:34:39
Je viens de modifier le fichier ini sur ma machine (easyphp)
et ca fonctionne correctement, merci
Seulement, je ne sais pas si chez mon futur hébergeur cette option sera à Off...
J'ai essayé avec un ini_set(), mais ca a pas l'air de marcher, je retente pour voir...
Marsh Posté le 22-09-2003 à 04:38:25
Voilà, ca marche nickel.
Le register_globals est à On dans mon .ini
et le fichier test2.php a la tete suivante:
ini_set("register_globals", "Off" ); |
Et ca marche nickel
J'avais pas mis le ini_set() avant le session_start(), c'est pour ca que ca marchait pas.
Merci pour votre aide
Marsh Posté le 22-09-2003 à 04:39:02
gatorette a écrit : Je ne suis pas un pro de PHP, mais es-tu sûr que dans la config de PHP, tu n'as pas register_globals a true. Si c'est le cas, ton $user_id référence directement $_SESSION['user_id'], d'où ton erreur. |
Merci, grace à toi j'ai compris pourquoi ca faisait ca
Marsh Posté le 22-09-2003 à 04:42:13
the real moins moins a écrit : |
Spark a écrit : Merci, grace à toi j'ai compris pourquoi ca faisait ca |
Marsh Posté le 22-09-2003 à 04:45:20
spark >> depuis quelques versions de php, cette option est à off par defaut. tu peux de toutes façons faire comme tu l'as fait, pour etre sur
Marsh Posté le 22-09-2003 à 04:47:31
Oki, merci
C'est quand même cool d'avoir de l'aide à presque 5h du mat
Marsh Posté le 22-09-2003 à 04:48:50
ReplyMarsh Posté le 22-09-2003 à 07:34:34
Donc avec les variables globales à ON ca fait un sacré trou de secu, imaginons qu'une fois une personne loguée sur le site, on enregistre une variable de sessin $login, quelqu'un de malintentioné pourrait tres bien taper page-reservee.php?login=UnNomDeMembreConnu et ainsi acceder aux données reservées ??
Parce que chez mon hebergeur les variables globales sont encore à On à cause de chieurs qui utilisent des scripts tout fait qui reclament le On
Le iniset on m'en a parlé mais je ne sais plus la syntaxe exacte pour mettre les variables globales à off (possible uniquement si le safe_mode est sur Off )
Marsh Posté le 22-09-2003 à 08:26:46
aspegic500mg a écrit : Donc avec les variables globales à ON ca fait un sacré trou de secu, imaginons qu'une fois une personne loguée sur le site, on enregistre une variable de sessin $login, quelqu'un de malintentioné pourrait tres bien taper page-reservee.php?login=UnNomDeMembreConnu et ainsi acceder aux données reservées ?? |
C'est à toi de bien gérer dans ton script en n'utilisant pas de variable nommée $login et en accédant toujours à l'information au travers de $_SESSION['login']. On peut même imaginer que si isset( $_GET['login'] ); alors tu affiches un message méchant...
aspegic500mg a écrit : Parce que chez mon hebergeur les variables globales sont encore à On à cause de chieurs qui utilisent des scripts tout fait qui reclament le On |
Tu as un exemple juste au dessus. J'ose imaginer qu'il est correct.
Marsh Posté le 22-09-2003 à 08:33:31
gatorette a écrit : |
J'utilise toujours les variables $_SESSION['login'], mais un simple blabla.php?login=CeQuOnVeut permet de changer la valeur de $_get mais pas de $_session (var globales à off ou on), j'avais pas vu dans le bout de script qu'il avait mis
Marsh Posté le 22-09-2003 à 04:16:25
Bonjour,
On va prendre un exemple tout con
deux fichiers:
test1.php
<? session_start();
$_SESSION['user_id'] = "123";
?>
<a href="test2.php?user_id=BahViCaAChange">Page2</a>
et son copain test2.php
<?
session_start();
echo "La valeur avant le GET est : ".$_SESSION['user_id']."<br />";
$user_id = $_GET['user_id'];
echo "La valeur apres le GET est: ".$_SESSION['user_id']."<br />";
?>
Et on obtient le résultat suivant quand on clique sur le lien de test1.php
La valeur avant le GET est : 123
La valeur apres le GET est: BahViCaAChange
Vu que je touche par à $_SESSION['user_id'], qqn pourrait m'expliquer pourquoi ma variable de session magique est modifée ?
Comment empêcher celà ?