Ik heb een login pagina en telkens als inlog krijg ik Error: Gebruiker niet gevonden!. En die bestaat zeker, query handmatig in php admin doe werkt wel, iemand idee waar fout gaat?

<?php
include ('db.php');
session_start();

$gebruikersnaam = $_POST['gebruikersnaam'];
$wachtwoord = $_POST['wachtwoord'];

if (!$gebruikersnaam or !$wachtwoord)
{
print "Error!!!";
}
else
{
$sql = mysql_query("SELECT * FROM tbl_user WHERE username='$gebruikersnaam'");
$result = mysql_num_rows($sql);
if ($result<1)
{
print "Error: Gebruiker niet gevonden!";
}
else
{
while ($row = mysql_fetch_array($sql))
{
$wachtwoord_db = $row['password'];
$user_id = $row['user_id'];
if ($wachtwoord==$wachtwoord_db)
{
$_SESSION['toegang'] = true;
$_SESSION['loguser_id'] = $user_id;
$_SESSION['gebruiker'] = $gebruikersnaam;
$_SESSION['admin'] = $row['admin'];
echo ("
<frameset cols=180,*>
<frame src=menu.php name=menu>
<frame src=welkom.php name=main>
</frameset>
");
}
else
{
print "Error: Wachtwoord verkeerd!";
}
}
}
}
?>

$sql = mysql_query("SELECT * FROM tbl_user WHERE username='$gebruikersnaam'"); 

vervangen door:

$sql = mysql_query("SELECT * FROM tbl_user WHERE username='" . $gebruikersnaam . "'") or die("Foutmelding: " . mysql_error());

Post de error die je dan krijg.

Hoe heb je de gebruikersnaam opgeslagen in je database? Als gewone leesbare tekst of gecodeerd? Indien gecodeerd, niet vergeten de codering ook op de gebruikersnamen toe te passen die je naar de database verzend.
Kloppen tabelnamen en velden?
Waarom vraag je eerst de gebruiker op en ga je in je php-code pas kijken of het wachtwoord correct is?

Met de volgende query kun je dat in 1x opvragen:
<?php
$query = "
SELECT
COUNT(username) AS aantal,
user_id,
admin
FROM
tbl_user
WHERE
username = '".$gebruikersnaam."',
AND
wachtwoord = '".$wachtwoord."'
";
?>

Deze query voer je uit met mysql_query(). Je controleert of de query is gelukt en vervolgens ga je met mysql_fetch_assoc() de boel fetchen. Wanneer $row['aantal'] gelijk is aan 1, dan heb je een juiste combinatie van userid en wachtwoord opgegeven.

De kolomnaam 'password' kan problemen opleveren. Als ik het goed heb, is dat een verboden woord. Je kunt beter een andere naam kiezen.

Tip: Gebruik SHA1() of MD5() om de wachtwoorden veilig op te slaan in de database. Uiteraard moet je deze functies dan ook gebruiken voor de vergelijking.

Reageren