Authentification redirection

Bonjour,

j'ai crée un script php qui permet une redirection vers un page différente selon l'utilisateur. Quand chaque utilisateur rentre son login et son mot de passe, il arrive bien à sa page.
Mais si j'entre un mauvais mot de passe ou un mauvais login, j'obtiens çà:

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 2 in /mnt/140/sdb/1/c/nom_du_site/checklogin.php on line 21
mauvais nom ou mauvais mot de passe

Voici mon script

<?php
$host="localhost"; // Host name
$username="XXXXX"; // Mysql username
$password="XXXXXX"; // Mysql password
$db_name="XXXXXX"; // Database name
$tbl_name="membres"; // Table name

// Connect to server and select databse.
$link=mysql_connect("$host", "$username", "$password")or die("connexion impossible");
mysql_select_db("$db_name")or die("impossible de se connecter à la base de données");

// username and password sent from signup form
$myusername=$_POST['myusername'];
$mypassword= $_POST['mypassword'];

$encrypted_mypassword=md5($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$encrypted_mypassword'";
$result=mysql_query( $sql);

$destination= mysql_result ($result,"destination");

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row

if($count>0) {
session_register("myusername");
session_register("mypassword");
$_SESSION['auth'] = 1;
setcookie("myusername", $_POST['myusername']);
header("location:$destination");
}
else {
echo ("mauvais nom ou mauvais mot de passe");
}

?>

Merci de votre aide
Configuration: Windows XP
Firefox 3.0.1

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour

    Normal, s'il n'y a aucun résultat à mysql_query, tu ne peux pas extraire de résultat avec mysql_result.

    Tu devrais utilser mysql_result qu'après avoir testé if ($count>0). D'ailleurs, tu n'en as pas besoin avant. D'ailleurs, tu as oublié un paramètre : $destination= mysql_result ($result,0,"destination");
    1. Salut

      cette ligne au milieu de ton code

      $destination= mysql_result ($result,"destination");

      coupe la et met la ici

      if($count>0) {
      $destination= mysql_result ($result,"destination");
      session_register("myusername");
      session_register("mypassword");
      $_SESSION['auth'] = 1;
      setcookie("myusername", $_POST['myusername']);
      header("location:$destination");
      }

      tu ne doit faire un mysql_result que si c'est bon et non pas tous le temps
      1. Merci beaucoup à tous les 2. Mon problème est résolu :)))