login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Probleem met inlogsysteem

Offline Maximke - 30/10/2006 14:02
Avatar van MaximkeNieuw lid Hi, ik ben vandaag begonnen met een inlogsysteem te schrijven. Het registreren lukt goed, en het passwoord wordt dmv volgende code opgelsagen : $passdb = sha1(md5($pass));
$passdb is hetgeen wat in de db terechtkomt, $pass is hetgeen de user heeft infevuld.

Het probleem zit 'm bij het inloggen. Om het passwoord te encrypten gebruik ik
_____________________________________________________

$pass = $_POST['pass'];
$passen = sha1(md5($pass));
_____________________________________________________

en om te kijken of het passwoord klopt gebruik ik
_____________________________________________________

$result = mysql_query("SELECT * FROM users WHERE name = $name");

while($row = mysql_fetch_array($result))
{
$passdb = $row['password'];
}
if ($pass!=$passdb)
{
echo "Non-Succesfull login. Please try again or register!";
}
else
echo "Login Successful!";

_____________________________________________________


Echter, na het inloggen kriijg ik volgende error :
_____________________________________________________

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home2/maximke/public_html/login2.php on line 7
Non-Succesfull login. Please try again or register!

_____________________________________________________

In ieder geval, de username en het passwoord kloppen, daar ben ik zeker van. Is er iemand die de fout kan zien?

P.S.
PHP 4
MySQL 4

7 antwoorden

Gesponsorde links
Offline Dark_Paul - 30/10/2006 14:13
Avatar van Dark_Paul PHP ver gevorderde Zet error_reporting(E_ALL) bovenaan je script en or die(mysql_error()); achter je queries. Vars buiten quotes in je query.
SELECT * FROM users WHERE name = $name wordt
SELECT * FROM users WHERE name='".$name."'
Offline Maximke - 30/10/2006 14:15
Avatar van Maximke Nieuw lid ok, bedankt voor je snelle antwoord, ik zal het nu erin steken...

Maar ik veronderstel dat wat je eerst typt gewoon een middel is om alle bugs/errors te tonen? In ieder geval, tzou handig zijn aangezien ik soms wl wat slordig ben met php code 
Offline Dark_Paul - 30/10/2006 14:21
Avatar van Dark_Paul PHP ver gevorderde error_reporting(E_ALL) wil zeggen dat al je errors worden getoond, zodat je gemakkelijker kan debuggen.
mysql_error(); geeft de reden waarom je query niet werkt. Dan kan je dus zien wat je fout hebt gedaan.verder is het ook slim om veel if-else statements te zetten, en daar een echo in te zetten, zodat je aan de hand van die echo gemakkelijk kan zien waar het fout gaat.
Offline Maximke - 30/10/2006 14:22 (laatste wijziging 30/10/2006 14:38)
Avatar van Maximke Nieuw lid Ik krijg nu een fout bij het registreren
_______________________________________
Notice: Undefined variable: dbname in /home2/maximke/public_html/registered2.php on line 23
_______________________________________

$dbname wordt voor het eerst gebruikt in
_______________________________________

$result = mysql_query("SELECT * FROM users WHERE name='.$name.'") or die(mysql_error());

while($row = mysql_fetch_array($result))
{
$dbname = $row['name'];
}

_______________________________________

En de regel waarop de error slaat :
_______________________________________
elseif ($name == $dbname )
{
echo "This name already has been used";
include "register2.php";
}
Offline Analog - 30/10/2006 14:38
Avatar van Analog HTML interesse heb je die $pass wel eerst gecodeerd met md5 voor je kijkt of hij hetzelfde is?
Offline Maximke - 30/10/2006 14:41 (laatste wijziging 30/10/2006 14:42)
Avatar van Maximke Nieuw lid Analog : ja dat heb ik gedaan. Ze worden zo in de db opgeslaan :

$pass = $_POST['pass'];
$passdb = sha1(md5($pass));

En ze worden zo na de login gecontroleerd :

$name = $_POST['name'];
$pass = $_POST['pass'];
$passen = 'sha1(md5($pass))';
$result = mysql_query("SELECT * FROM users WHERE name='.$name.'") or die(mysql_error());

while($row = mysql_fetch_array($result))
{
$passdb = $row['password'];
}
if ($passen != '$passdb')
{
echo "Non-Succesfull login. Please try again or register!";
}
else
echo "Login Successful!";
Offline Thomas - 30/10/2006 14:53 (laatste wijziging 30/10/2006 14:54)
Avatar van Thomas Moderator Gebruik eens code-tags.

Je bent een quote-paar vergeten.

Vergelijk:
  1. <?php
  2. $result = mysql_query("SELECT * FROM users WHERE name='.$name.'") or die(mysql_error());
  3. ?>


met
  1. <?php
  2. $result = mysql_query("SELECT * FROM users WHERE name='".$name."'") or die(mysql_error());
  3. ?>


Ik raad je aan snel een editor met syntax highlighting ("kleurtjes") te gaan gebruiken.

Deze oplossing is overigens niet erg veilig.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.314s