In het volgende script ben ik aan een login pagina aan het werken. Ja, encrypten ontbreekt en ja, ik heb geen htmlentities/ mysql_real_escape_string gebruikt. Mij gaat het er even om om een simpele count te doen.


<?php
require_once("header.php");
echo '<br/>';
echo '<br/>';

if(isset($_POST['submit'])){
   if(!empty($_POST['name']) AND !empty($_POST['password'])){
      $name = $_POST['name'];
      $pass = $_POST['password'];
      if (preg_match ('/^[A-Za-z. -]+$/', $name)){
        if(mysql_select_db("database", $connect)){
            $pass_check = mysql_query("SELECT COUNT(*) FROM person WHERE name == '$name' AND password == '$pass'");
            if(!mysql_query($pass_check)){
                 echo 'Error: Could not select:' . mysql_error();
                 echo '<br/>';
            }
            $count = mysql_result($pass_check,0); 
            if ($count == 1) { 
                echo "Het wachtwoord komt overeen.<br/>";
            } elseif ($count ==0 AND !empty($_POST['password'])) {
                echo "Dit wachtwoord bestaat niet.<br/>";
                echo $count;
            }
        }
        else{
          echo 'Couldnt connect to db!';
        }
      }
      else {
        echo 'Didnt used the right characters!';
      }
} 
   else {
      echo 'U dient de verplichte velden in te vullen.';
      $name = FALSE;
      $pass = FALSE;
   }
}
?>

<form action="" method="post">
<table>
<tr>
  <td>Username</td>
  <td><input type="text" name="name" size="20" maxlenght="20"></td>
</tr>
<tr>
  <td>Password</td>
  <td><input type="password" name="password"></td>
</tr>
<tr>
  <td></td>
  <td><input type="submit" name="submit" value="Registreer"></td>
</tr>
</table>
</form>


<?php
echo '<br/>';
echo '<br/>';
echo '<br/>';
echo '<br/>';
echo '<br/>';
require("footer.php");
?>


Dit is mijn foutmelding:

Error: Could not select:Query was empty
Er is een fout opgetreden!
Foutsoort: WARNING
Foutmelding: mysql_result() expects parameter 1 to be resource, boolean given
Bestand: C:\xampp\htdocs\logtest\login.php
Regel: 17
Dit wachtwoord bestaat niet.

Wat doe ik fout?
verander

$pass_check = mysql_query("SELECT COUNT(*) FROM person WHERE name == '$name' AND password == '$pass'");

eens in

$pass_check = mysql_query("SELECT COUNT(*) FROM person WHERE name = $name AND password = $pass");

Bedankt voor de snelle reactie, maar krijg de zelfde foutmelding. Nog andere suggesties?
Hmmm, ben hier ook niet goed in hoor... meestal gewoon even wat proberen.

Probeer dit eens:

$pass_check = mysql_query("SELECT COUNT(*) as count FROM person WHERE name = $name AND password = $pass");
var_dump($pass_check[0]);
exit();

Wat krijg je nu op je scherm te zien?
Als antwoord krijg ik NULL, maar wanneer ik de exit weghaal krijg ik alsnog dezelfde errors.
dat is logisch dat je dan dezelfde errors krijgt....

Maar je query gaat dus fout en levert als resultaat NULL op.
Probeer je query eens in te voeren in PHPMyAdmin en kijk of je dan wel resultaat krijgt.
heb ik zojuist gedaan...

SELECT COUNT(*) FROM persons WHERE name = '{$name}' AND password = '{$pass}'

COUNT(*)
0

Dus de voor de count werkt voor sql wel, maar roep hem niet goed aan dan?
Nee maar dat komt omdat je nu een stuk PHP code in je SQL gooit. Nu matcht ie op name = '{$name}' en password = '{$pass}', voordat de PHP parser die heeft omgezet naar iets anders.

Ik denk dat de fout bij je input ligt.
Ik krijg wel van deze code ook een error binnen.

if(!mysql_query($pass_check)){
echo 'Error: Could not select:' . mysql_error();
echo '<br/>';
}

Wanneer hij niet de query op de $pass_check kan uitvoeren? Of wat houdt dit precies in?

[size=xsmall]Toevoeging op 22/07/2011 13:56:40:[/size]

mijn input? Hoe bedoel je dat?

Als mijn input niet klopt bijv dat een user of pass niet overeenkomt dan moet hij 0 afgeven. Toch?
Maar hij moet toch 1 teruggeven ipv 0? Vul eens een juiste naam en wachtwoord in?
Dat doe ik al de hele tijd.. maar krijg dus die error binnen.

Reageren