Amelioration d'une verif de connection avec des sessions

Signaler
Messages postés
104
Date d'inscription
dimanche 23 juillet 2006
Statut
Membre
Dernière intervention
15 août 2009
-
Messages postés
104
Date d'inscription
dimanche 23 juillet 2006
Statut
Membre
Dernière intervention
15 août 2009
-
Salut à tous et bonne année !!
Voila j'ai crée un petit espace membre seul un problème reste la verification de connection.
Quelqun aurait t'il une idée d'amélioration
Et me dire prk se script ne fonctionne t'il pas
Le formulaire
champs login et password
action="verif.php?action=login"

la page de verif


<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="css/good.css" />
</head>





<?php
require "config.php";
if($_GET['action'] == 'login')// login
{
$loginOK = 0; // cf Astuce

if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) )
{
extract($_POST);

$sql = "SELECT id, pseudo, pass FROM membre WHERE pseudo='".$_POST['login']."' AND pass='".$_POST['password']."'";
$req = mysql_query($sql) or die('Erreur SQL :
'.$sql);

if (mysql_num_rows($req) > 0)
{
$data = mysql_fetch_assoc($req);

if ($password == $data['pass'])
$loginOK = 1;
else
$loginOK = 2; // password inccorrect
}
else
$loginOK = 3; // le membre n'existe pas
}
if ( $loginOK == 1 )
{
$_SESSION['login'] = $data['pseudo'];
echo 'Connection Réussi !!
Vous allez être redirigez vers votre profil';
echo '<meta http-equiv=refresh content=3;URL=index_mbr.php>';
}
else
echo 'Une erreur de connection est survenue, veuillez réessayer !';
}
// logout
else if($_GET['action'] == 'logout')
{
session_unset(); // suppression des variables de sessions
session_destroy(); // destruction de la session
echo 'Déconnection Réussi !!
Vous allez être redirigez vers l\'accueil';
echo '<meta http-equiv=refresh content=3;URL=index.php>';
}
?>


</html>

2 réponses

Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
extract($_POST);
>>> A bannir.

$sql = "SELECT id, pseudo, pass FROM membre WHERE pseudo='".$_POST['login']."' AND pass='".$_POST['password']."'";
>>> Mauvaise requète ... >>>> SELECT COUNT(*) FROM .... WHERE login ... AND pass ...

if (mysql_num_rows($req) > 0)
>>> Plus besoin :
>>>> $data = mysql_fetch_row($query);
>>>> if ( (int)$data[0] === 1 ) { // Couple login/password ok

f ($password == $data['pass'])
$loginOK = 1;
else
$loginOK = 2; // password inccorrect
}
else
$loginOK = 3; // le membre n'existe pas
}
>>> Pourquoi refaire une vérif alors que tu l'a déja fait en SQL ?

>>> Bref, des ptits trucs à revoir, tu fais certaines choses en double. Que tu essayes de séparer PHP et HTML, je veux bien mais pas besoin de doubler ton code :)
Messages postés
104
Date d'inscription
dimanche 23 juillet 2006
Statut
Membre
Dernière intervention
15 août 2009

oki alors j'ai refais en m'aidant d'un code qui se trv sur le site mais sa ne m'affiche rien quand je me connecte poutant après je peux allez sur les autres pages protéger
<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="css/good.css" />
</head>





<?php
require "config.php";
if($_GET['action'] == 'log')// login
{
if(eregi("[\^'$()*+<>?#"{}\\]",$_POST['login']) OR eregi("[\^'$()*+<>?#"{}\\]",$_POST['pass']))
{
echo 'Pas de caractères spéciaux';
exit;
}
else
{
$requete=mysql_query("SELECT COUNT(*) FROM membre WHERE pseudo='".$_POST['login']."' AND pass='".$_POST['pass']."'");
$r=mysql_fetch_row($requete);
if($r[0]==1)
{
$_SESSION['login']=$_POST['pseudo'];
echo 'Connection Réussi !!
Vous allez être redirigez vers votre profil';
echo '<meta http-equiv=refresh content=3;URL=index_mbr.php>';
exit;
} } }
else
{
echo 'Vous n\etes pas inscrit.';
}
?>


</html>