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?
      
 if(mysql_select_db("database", $connect)){
            $pass_check = mysql_query("SELECT COUNT(*) FROM persons WHERE name = {$name} AND password = {$pass}");
            $count = mysql_result($pass_check,0); 
             if(!mysql_query($count)){
                 echo 'Error: Could not select:' . mysql_error();
                 echo '<br/>';
            }  
            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!';
        }



Ik heb de quotes eruit gehaald. Voor foutafhandeling heb ik dit: mysql_error(); en het volgende script:

<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);

function error($iLevel, $sMessage, $sFile, $iLine)
{
    $aLevels = array(
                2 => 'WARNING',
                8 => 'NOTICE',
                256 => 'FATAL ERROR',
                512 => 'WARNING',
                1024 => 'NOTICE' );
    
    if(array_key_exists($iLevel, $aLevels))
    {
        $sLevel = $aLevels[$iLevel];
    }
    else
    {
        $sLevel = 'ONBEKENDE FOUT';
    }
    
    echo 'Er is een fout opgetreden!<br />';
    echo 'Foutsoort: '.$sLevel.'<br />';
    echo 'Foutmelding: '.$sMessage.'<br />';
    echo 'Bestand: '.$sFile.'<br />';
    echo 'Regel: '.$iLine.'<br />';
    
    if($iLevel == 256)
    {
        echo 'Script wordt gestopt...';
        exit();
    }            
}
set_error_handler('error');
?> 




Ik blijf dezelfde fout houden...

[size=xsmall]Toevoeging op 22/07/2011 15:04:33:[/size]

Owhnee, ik krijg deze foutmelding... zat met verkeerde bestand in de weer...

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


Deze foutmelding heb ik al 2 uur dus ik zou niet weten hoe ik dit moet oplossen.
Ja, maar wat krijg je nu dan als je mijn code gebruikt?

Gebruik dit eens en vertel me dan eens exact wat er op het scherm staat?

$query = "SELECT COUNT(*) as count FROM person WHERE name = $name AND password = $pass";
echo $pass . $name . '<br/>';
$result = mysql_query($query);
$row = mysql_fetch_array($result);
echo 'aantal rijen = ';
var_dump($row[0]);
die();
Ozzie php, bij aantal rijen krijg ik niks op het scherm.

[size=xsmall]Toevoeging op 22/07/2011 15:08:57:[/size]

Er is een fout opgetreden!
Foutsoort: WARNING
Foutmelding: mysql_fetch_array() expects parameter 1 to be resource, boolean given
Bestand: C:\xampp\htdocs\logtest\testcount2.php
Regel: 7
aantal rijen = NULL
je zou toch echt IETS moeten zien... aangezien het een var_dump is. Kopieer eens letterlijk wat er op het scherm staat?

Je moet dat stukje van mij direct na deze regel zetten he?

if(mysql_select_db("database", $connect)){
Nogmaals, kijk naar je foutafhandeling. Echo de uitgevoerde query als je query mislukt. Dan zie je pas wat er fout gaat! De fout zit op dit moment in de uitgevoerde query...
$query = "SELECT COUNT(*) as count FROM person WHERE name = $name AND password = $pass";
echo $query;
die();

Wat zegt ie nu?
@Ozzie: geef als test query dan wel het goede voorbeeld (alias en quotes):

<?php
$query = "SELECT COUNT(*) as aantal FROM person WHERE name = '".$name."' AND password = '".$pass."'";
?>
Is alias 'count' niet goed? En de variabelen tussen quotes.. hmm ja, daarom heb ik dat allemaal in een class met functies staan :)

if(isset($_POST['submit'])){
$query = "SELECT COUNT(*) as aantal FROM person WHERE name = '".$name."' AND password = '".$pass."'";

echo $pass . $name . '<br/>';
$result = mysql_query($query);
$row = mysql_fetch_array($result);
echo 'aantal rijen = ';
var_dump($row[0]);
die();
 }



Error:

Er is een fout opgetreden!
Foutsoort: WARNING
Foutmelding: mysql_fetch_array() expects parameter 1 to be resource, boolean given
Bestand: C:\xampp\htdocs\logtest\testcount2.php
Regel: 8
aantal rijen = NULL

De alias 'count' is in ieder geval niet handig omdat het ook een functienaam is...

Reageren