login probleem
mijn code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$login = mysql_fetch_object($resultaat);
$login->Password;
$login->Username;
$wachtwoord = $_POST['wachtwoord'];
if(md5($wachtwoord) == $login->Password)
{
echo "U bent succesvol ingelogd, een moment.. <meta http-equiv='refresh' URL='index.php'>";
}
else
{
echo "Uw wachtwoord en gebruikersnaam komen niet overeen, klik <a href='login.php'>hier</a> om nogmaals te proberen.";
}
?>
$login = mysql_fetch_object($resultaat);
$login->Password;
$login->Username;
$wachtwoord = $_POST['wachtwoord'];
if(md5($wachtwoord) == $login->Password)
{
echo "U bent succesvol ingelogd, een moment.. <meta http-equiv='refresh' URL='index.php'>";
}
else
{
echo "Uw wachtwoord en gebruikersnaam komen niet overeen, klik <a href='login.php'>hier</a> om nogmaals te proberen.";
}
?>
Hij gaat dus steeds naar de else, ookal klopt het wachtwoord wel.
Edit:
Bericht buiten code-tags gezet
Gewijzigd op 31/08/2013 12:22:44 door - Ariën -
zo controleer ik als eerste welke waarde php krijgt.
Als dat hetzelfde is dan kun je verder kijken
Ik zie dat $login->Password niets geeft, dit vind ik eigenlijk raar, aangezien de naam van het wachtwoord in de database Password is, en de waarde zou dus het wachtwoord moeten zijn, of zie ik dit verkeerd?
en waarom staan regel 2 en 3 er? die doen toch niets... zet daar anders een echo voor?
Waar controleer je of de $_POST-waarde bestaat?
Waarom variabele kopiëren (regel 5)?
md5 is niet de meest veilige manier om te beveiligen.
Die lijken me inderdaad niets te doen :)
Mijn resultaat is alsvolgt:
Code (php)
1
2
3
2
3
$sql = 'SELECT Username FROM users WHERE Username="'.$gebruikersnaam.'"';
$resultaat = mysql_query($sql) OR die ('Kon geen verbinding maken met MySQL');
$resultaat = mysql_query($sql) OR die ('Kon geen verbinding maken met MySQL');
Ik dacht wel dat dit correct was.
De post-waarde bestaat in dit geval, maar ik heb inderdaad de controle er nog niet in gezet ;)
Ik kopieer de waarde omdat ik niet graag met post-waardes verder werk ;)
Dat md5 niet de beste beveiliging is is mij al gezegd, dit pas ik later nog aan, maar eerst wil ik dit werkende krijgen, want ik heb al door dat de fout niet in de md5 zit
Gewijzigd op 31/08/2013 12:38:10 door Kristof Hendrickx
Een beter manier van foutafhandeling is dit:
http://www.phphulp.nl/php/tutorial/data-verwerking/foutafhandeling-query-sql/735/
die() moet je nooit gebruiken, want waarom moet je script direct stoppen? nergens voor nodig...
"Want als wij iets fout doen, dan gaan wij toch ook niet dood?"
Dat lijkt mij wel anders is "password" zo overbodig.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$sql = "SELECT Username,
Password
FROM
users
WHERE Username='".$gebruikersnaam."'
AND
Password = '".md5($Password)."'";
?>
$sql = "SELECT Username,
Password
FROM
users
WHERE Username='".$gebruikersnaam."'
AND
Password = '".md5($Password)."'";
?>
Gewijzigd op 31/08/2013 12:42:21 door Bart V B
- Aar - op 31/08/2013 12:39:12:
Nee, als mysql_query() mislukt, dan heeft dat niks te maken met 'Kon geen verbinding maken met MySQL'. Er is wel een verbinding, maar de query kon niet uitgevoerd worden. De reden daarvan kan je krijgen door mysql_error() te gebruiken.
Een beter manier van foutafhandeling is dit:
http://www.phphulp.nl/php/tutorial/data-verwerking/foutafhandeling-query-sql/735/
die() moet je nooit gebruiken, want waarom moet je script direct stoppen? nergens voor nodig...
"Want als wij iets fout doen, dan gaan wij toch ook niet dood?"
Een beter manier van foutafhandeling is dit:
http://www.phphulp.nl/php/tutorial/data-verwerking/foutafhandeling-query-sql/735/
die() moet je nooit gebruiken, want waarom moet je script direct stoppen? nergens voor nodig...
"Want als wij iets fout doen, dan gaan wij toch ook niet dood?"
Dit wist ik wel maar was voor het testen de snelste oplossing, dit ging ik zeker nog aanpassen ;)
Maar in principe kan ik hier toch wel met een die functie werken als ik het doe zoals de reactie hier vlakboven, dit geeft een error als gebruikersnaam of wachtwoord niet overeenkomen, daar moet ook het script stoppen omdat het toch niet meer moet doen dan inloggen, ok, er kunnen ook andere errors zijn, maar die errors duiken dacht ik enkel op als er iets aan de code of aan de database aangepast word, dit hoeven de gebruikers toch niet te weten?
Gebruikers zullen wel klagen als ze met de juiste gegevens toch niet ingelogd raken gok ik :)
Gewijzigd op 31/08/2013 12:54:59 door Kristof Hendrickx
Je vraagt idd alleen een Username op, Password enzo kan hij dus niet vinden. Zie post van Bart V B
En ik denk dat dit inderdaad is zoals jullie zeggen :)
Ik heb er eerst nog een controle of de gebruikersnaam bestaat in staan en dan heb ik het gedaan met de reactie van Bart V :)
Aan allen bedankt :)
Gewijzigd op 31/08/2013 13:10:10 door Kristof Hendrickx
Kristof Hendrickx op 31/08/2013 12:34:28:
Kristof Hendrickx op 31/08/2013 12:46:48:
Maar in principe kan ik hier toch wel met een die functie werken
Niet dus. or die gebruik je (bijna) nooit in een script.
Door het hele script af te breken, voorkom je dat ook de rest van je pagina wordt geladen. Denk aan bv voettekst, etc.
Gebruik daarnaast mysqli.
Kristof Hendrickx op 31/08/2013 12:34:28:
Ik kopieer de waarde omdat ik niet graag met post-waardes verder werk ;)
Wat is dat nou voor argument? En waarom werk je niet graag met POST-waarden?
En hoe weet jij verderop in je script of iets een gebruikersinvoer is of een variabele uit het script? Je loopt daardoor ook tegen een (mogelijk) beveiligingsrisico aan.
Kristof Hendrickx op 31/08/2013 12:34:28:
Dat md5 niet de beste beveiliging is is mij al gezegd, dit pas ik later nog aan,
Kristof Hendrickx op 31/08/2013 12:46:48:
Dit wist ik wel maar was voor het testen de snelste oplossing, dit ging ik zeker nog aanpassen ;)
Je doet dingen dus graag (drie- of vierdubbel)? Kun je namelijk straks weer alle bestanden nalopen. En moet je opnieuw controleren of alles werkt.
Lijkt me erg inefficiënt.
Het quoten van complete teksten is wat zinloos. Maakt je topic onnodig lang.
Gewijzigd op 31/08/2013 13:21:44 door Obelix Idefix