pb authentification php/mysql

pb authentification php/mysql - PHP - Programmation

Marsh Posté le 26-05-2006 à 16:04:07    

Bonjour,

 

Voila j'ai créé une page d'authentification pour un site qui vérifié le login et le mot de passe dans une base de donnée mysql. L'authentification se passe bien mais si l'utilisateur se trompe de mot de passe ou de login il revient toujours sur la boite de dialogue lui demandant le mot de passe et le login même si les 2 sont valides.
Je vous donne le code que j'ai réalisé :

 

<?php

 

session_start();
session_register("USER" );
session_register("PASSWD" );

 

function valideuser( $login, $passwd )
{

 

// Connexion et sélection de la base
$link = mysql_connect("serveur", "user", "passe" )or die("Impossible de se connecter" );
mysql_select_db("base" ) or die("Could not select database" );

 

// Exécuter des requêtes SQL
$sql = "Select * from identification where user='".$login."' and password='".$passwd."'";
$result = mysql_query($sql) or die("Query failed" );
$valide = false;
while ($line = mysql_fetch_assoc($result))
{
$valide = true;
}
// Libération des résultats
mysql_free_result($result);

 

if($valide == true)
{
$_SESSION["USER"] = $login;
$_SESSION["PASSWD"] = $passwd;
return true;
}
else
{
return false;
}
// Fermeture de la connexion
mysql_close($link);
}

 


if ( !(isset($_SERVER['PHP_AUTH_USER'])) || ($_POST['ReLog'] == 1 ))
{
header('WWW-Authenticate: Basic realm="Administration"');
header('HTTP/1.0 401 Unauthorized');
echo 'Vous devez vous identifier';
exit;
}
else
{
if ( valideuser ( $_SERVER['PHP_AUTH_USER'] , $_SERVER['PHP_AUTH_PW'] ))
{
include("page.inc.php" );
}
else
{
echo "<h3>Authentification échouée</h3>";
echo "<form action='index.php' method='POST'>\n";
echo "<input type='hidden' name='ReLog' value='1'>\n";
echo "<input type='submit' value='Login'>\n";
echo "</form>\n";
}
}
?>

 

Merci de votre aide

Reply

Marsh Posté le 26-05-2006 à 16:04:07   

Reply

Marsh Posté le 26-05-2006 à 20:41:24    

vois du côté de:
http://fr.php.net/mysql_real_escape_string
sinon les internautes vont s'amuser avec ta base.
 
Essaye plutôt:
select count(*) from identification .....
qui correspond plus à la requête que tu souhaite.
 
fait un
print_r($_POST['ReLog'])
pour vérifier ce que tu as dans la variable.

Reply

Sujets relatifs:

Leave a Replay

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