Hallo,
Ik ben bezig met mijn eerste (!) phpscript waarbij ik gebruik maak van mysql. Het is de bedoeling dat het registreer/inlogscript wordt. Het probleem zit in de encryptie met md5. Zien jullie wat ik verkeerd doe? Ik hoop dat de onderstaande gegevens voldoende zijn.
(Ik weet dat er nu nog dubbele emails kunnen bestaan in de database, en dat ik niet controleer of het wel echt een emailadres is. Dit komt later.)
register_action.php
login_action.phpPHP Code:
<?php
include('config.php');
// Haal de gegevens op uit het registratieformulier
$email=$_POST['email'];
$wachtwoord=$_POST['wachtwoord'];
// Encrypt het wachtwoord met md5
$wachtwoord_veilig=md5($wachtwoord);
// Zet de gegevens in de database
$sql="INSERT INTO $tbl_name(email, wachtwoord)VALUES('$email', '$wachtwoord_veilig')";
$result=mysql_query($sql);
if($result){
echo "<h2>register_action.php</h2><br /><p>Registreren gelukt. Je email is $email en je wachtwoord is: $wachtwoord <a href=\"login.php\">Login</a></p>";
}
else {
echo "<h2>register_action.php</h2><br /><p>Registreren mislukt.</p>";
}
mysql_close();
?>
PHP Code:
<?php
include('config.php');
// Haal gegevens op uit het loginformulier
$email=$_POST['email'];
$wachtwoord=$_POST['wachtwoord'];
// Encrypt het wachtwoord met md5
$wachtwoord_veilig=md5($wachtwoord);
// Controleer de gegevens
$sql="SELECT * FROM $tbl_name WHERE email='$email' and wachtwoord='$wachtwoord_veilig'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1){
session_register("email");
session_register("wachtwoord");
header("location:login_success.php");
}
else {
echo "<h2>login_action.php</h2><br /><p>Je email of wachtwoord klopt niet. <a href=\"login.php\">Klik hier om terug te gaan.</a></p>";
}
?>
- Inlogsysteem probleem
-
01-04-2010, 14:45 #1
- Berichten
- 359
- Lid sinds
- 17 Jaar
Inlogsysteem probleem
-
01-04-2010, 14:49 #2
- Berichten
- 51
- Lid sinds
- 17 Jaar
Beste J de boer,
Als je sessions wilt gebruiken moet je wel session_start(); boven aan de pagina zetten.
PHP Code:<?php
session_start();
include('config.php');
// Haal gegevens op uit het loginformulier
$email=$_POST['email'];
$wachtwoord=$_POST['wachtwoord'];
// Encrypt het wachtwoord met md5
$wachtwoord_veilig=md5($wachtwoord);
// Controleer de gegevens
$sql="SELECT * FROM $tbl_name WHERE email='$email' and wachtwoord='$wachtwoord_veilig'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if(
$count==1){
session_register("email");
session_register("wachtwoord");
header("location:login_success.php");
}
else {
echo
"<h2>login_action.php</h2><br /><p>Je email of wachtwoord klopt niet. <a href=\"login.php\">Klik hier om terug te gaan.</a></p>";
}
?>
-
01-04-2010, 14:53 #3
- Berichten
- 21
- Lid sinds
- 15 Jaar
// Controleer de gegevens
$sql="SELECT * FROM $tbl_name WHERE email='$email' and wachtwoord='$wachtwoord_veilig'";
zou ik
// Controleer de gegevens
$sql="SELECT * FROM $tbl_name WHERE email='". mysql_real_escape_string($email)."' and wachtwoord='$wachtwoord_veilig'";
van maken
Aanpassing: Hetzelfde geldt voor de insert query.. En het is misschien een idee om een salt aan het wachtwoord toe te voegen.
-
01-04-2010, 15:05 #4
- Berichten
- 95
- Lid sinds
- 19 Jaar
php.net/get_magic_quotes_gpc -- check of dit aan staat, zo ja:
php.net/stripslashes -- of dje dit wel of niet gebruikt, altijd:
php.net/mysql_real_escape_string -- zoals hierboven vermeld, veiligheid voor alles, maar belangrijk
php.net/session_start -- vergeet dit nite boven je pagina'st e zetten (beste in config.php)
php.net/fprintf of sprintf om je queries overzichtelijker te maken
-
01-04-2010, 15:16 #5
- Berichten
- 359
- Lid sinds
- 17 Jaar
Bedankt voor de tips, ik heb het een en ander gewijzigd. Aan config.php heb ik session_start(); toegevoegd en ik heb mysql_real_escape_string erbij gezet. Het inloggen wil echter nog steeds niet lukken. Het registeren gaat prima; het e-mailadres en het gecodeerde wachtwoord komen netjes in de database. Wanneer ik wil inloggen geeft het script aan dat ik het verkeerde wachtwoord of emailadres heb ingevoerd. Wat doe ik verkeerd?
-
01-04-2010, 15:23 #6
- Berichten
- 21
- Lid sinds
- 15 Jaar
$count=mysql_num_rows($result);if(
$count==1){
Als je zegt dat het email adres vaker voor kan komen, kan het dan niet zijn dat $count hoger is dan 1?
-
01-04-2010, 15:25 #7
- Berichten
- 359
- Lid sinds
- 17 Jaar
Dat kan wel, maar nu heb ik maar één rij in mijn database en toch geeft hij dezelfde melding.
(Bij het verwijderen van de md5encryptie werkt het script wel)
-
01-04-2010, 15:31 #8
- Berichten
- 257
- Lid sinds
- 15 Jaar
Ik zou gewoon even zelf debuggen. De regels met de query echo-en en die handmatig op de database (PHPMyAdmin?) loslaten. Kijken wat het resultaat dan is etc.
-
01-04-2010, 15:37 #9
- Berichten
- 1.001
- Lid sinds
- 16 Jaar
J. de Boer, staat het wachtwoord wel opgelagen als MD5 in de database?
-
01-04-2010, 15:39 #10
- Berichten
- 359
- Lid sinds
- 17 Jaar
Ja, het registreren gaat prima. Ik controleer in phpmyadmin of de gegevens in de tabel kloppen, maar vervolgens werkt het inloggen niet.
-
02-04-2010, 09:05 #11
- Berichten
- 95
- Lid sinds
- 19 Jaar
JEZUS!
Waar leer jij programmeren? Het jaar 2001?
session_register("email")'
session_register("wachtwoord");
php.net/session_register -- this function has been deprecated (isniegoemeerhe!).
$_SESSION['email'] = $email;
$_SESSION['wachtwoord'] = $wachtwoord_veilig; (nooit wachtwoord opslaan, maar als je het doet, sla dan de hashed versie op)
Wat lukt niet met inloggen?
- Hij stuurt je niet door naar login_success.php
- Op login_success.php bestaat je sessie niet meer? (gebruik je daar wel session_start?)
- Wat geeft var_dump ($_SESSION) weer op alle pagina's diej e gebruikt (zet dit in je config.php)
- Wat geeft var_dump ($_COOKIE) weer op alle pagina's die je gebruikt (zet dit in je config.php)
- al gekeken naar php.net/ini_set (voornamelijk, session.use_cookie, session.gc_maxlifetime en meer.. op http://www.php.net/manual/en/session.configuration.php)
-
02-04-2010, 16:12 #12
- Berichten
- 155
- Lid sinds
- 18 Jaar
Jezus heeft niet leren programmeren, god gaf hem die gave ;-)
daarnaast is het zijn eerste script zoals er staat!
-
03-04-2010, 06:54 #13
- Berichten
- 208
- Lid sinds
- 15 Jaar
Kijk eens wat er uit de query komt. Wat returnt hij voor aantal rijen. Misschien is het aantal rijen wel iets heel anders dan dat jij denkt. Gewoon proberen en denken waar de fout zou kunnen zitten.
-
03-04-2010, 07:15 #14
- Berichten
- 240
- Lid sinds
- 15 Jaar
Hoe groot is het veld 'wachtwoord' (varchar type waarschijnlijk) in je tabel? Als die minder dan 32 is, gaat bij de registratie alles goed omdat het wachtwoord wordt ingekort, maar kun je hem niet meer selecteren omdat het dan niet meer dezelfde waarde is.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic