Problème session - PHP - Programmation
Marsh Posté le 06-04-2009 à 18:07:43
Bon.
Ton code est une catastrophe en terme de sécurité et de performances.
D'abord, pour répondre à ta question. Le problème que tu rencontres vient de register_globals qui est désactivé. Lis ceci et tu sauras quoi faire :
http://fr.php.net/manual/fr/security.globals.php
Ensuite, si tu as pris la peine de lire le lien précédent, tu comprendras qu'il ne faut pas utiliser extract pour des données GET, POST, COOKIE ou SESSION parce que cela simule le comportement de register_global.
Autre chose : tu ne sécurises pas tes variables avant de les utiliser dans une requête, ton site est vulnérable aux injections SQL (faire une recherche google pour en savoir plus).
Utiliser mysql_real_escape_string pour échapper tes données (voir la doc de php, php.net).
Enfin, un problème de quotes :
Code : |
Marsh Posté le 07-04-2009 à 09:44:45
Ok merci Donc apparement il est déconseillé d'activer register_globals?
Marsh Posté le 07-04-2009 à 10:05:17
je suis pas forcement d'accord, car ca devient tres vite illisible (apres ca depend des cas)
Marsh Posté le 07-04-2009 à 10:08:08
oui très, pour des raisons de sécurité et pour d'autres raisons encore (voir cette page http://forum.hardware.fr/hfr/Progr [...] m#t1849860 )
Autre chose : tu n'as qu'un user dans ta table tbl_user ? (je te demande car tu ne vérifies que le premier utilisateur sorti par le SELECT)
Marsh Posté le 07-04-2009 à 10:38:53
ah oui ok pardon.
Mais tu peux faire çà directement :
Code :
|
Et ensuite tu regardes avec mysql_num_rows si tout est ok
Marsh Posté le 06-04-2009 à 18:01:20
Bonjour,
J'ai un petit problème avec les variables enregistrées dans une session, que ce soit chez sfr ou sur xampp. Je m'explique:
Code permettant la connexion:
<?
$db = mysql_connect('localhost', '****, '******');
mysql_select_db('test',$db);
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
extract($_POST);
$sql = "select pwd from tbl_user where login='".$login."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);
if($data['pwd'] != $pass) {
echo '<p>Mauvais login / password. Merci de recommencer</p>';
include('login.htm');
exit;
}
else {
session_start();
$_SESSION['login'] = $login;
echo 'Vous etes bien logué';
echo "$login";
}
}
else {
echo '<p>Vous avez oublié de remplir un champ.</p>';
include('login.htm');
exit;
}
?>
Code de la page réservée aux connectés:
<?
session_start();
if(!isset($_SESSION['login'])) {
echo 'Merci de vous connecter.';
include('login.htm');
}
else
{
echo "Bonjour $login !"; < ----------------------- le problème se situe là
}
?>
Voilà. Donc sur la page réservée aux connectés, lorsque quelqu'un est connecté son pseudo ne s'affiche pas (lorsque j'étais chez un autre hébergeur ça fonctionnait). J'aimerai savoir comment résoudre ce problème, sans avoir à mettre echo "$_SESSION[login]";