Pb authentification php/mysql

Fermé
himurafred - 24 mai 2006 à 11:02
griese Messages postés 139 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 27 février 2008 - 7 juin 2006 à 12:11
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
A voir également:

1 réponse

griese Messages postés 139 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 27 février 2008 119
7 juin 2006 à 12:11
Salut,
Attends, si j'ai bien compris, l'authentification marche bien la première fois. mais pas quand la personne se trompe de login ou de mot de passe, ça marche plus du tout, c'est ça ?
Voilà le code que j'utilise moi et qui marche :
<?
session_start();
$_SESSION['user']=$_POST['user'];
$_SESSION['passwd']=$_POST['passwd'];
?>
<body>
<?$connexion=mysql_connect('','login','passe') or die ('impossible de se connecter, veuillez ré-essayer');
$db = mysql_select_db('mabase', $connexion) or die ('La base de données ne peut pas être sélectionnée');
if($connexion) {
$query="SELECT * FROM utilisateur WHERE login='".$_SESSION['user']."';";
$result=mysql_query($query);
$ligne = mysql_fetch_array($result, MYSQL_ASSOC);
// je controle si les champs sont vides.
if (($_SESSION['user'] == '') or ($_SESSION['passwd'] == ''))
echo"veuillez saisir un login et un mot de passe";
//je réaffiche le formulaire.
}
else {
//je contrôle si le mot de passe correspond avec celui présent dans la base
if (($_SESSION['passwd']=="".$ligne['mdp'].""))
{
echo"Bienvenue";
}
else {
echo"Erreur d'authentification";
//je réaffiche le formulaire de saisie
}
}

Voilà, j'espère que ça va pouvoir t'aider à résoudre ton problème. Bonne chance.
2