[php]Inloggen wil niet lukken

Gestart doorJvdw7 reacties49 weergaven

8 berichten · pagina 1 van 1

Jvdw

Lid · Topicstarter

Berichten
4.321
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
hoi, anton had een loginvoorbeeldje voormij gemaakt maar dat wil dus niet lukken. Hij zegt steeds dat ik de naam en password verkeerd ingeef terwijl ik zeker weet dat het juist is.
Iemand enig idee? Anton keek ook alsadley
(functie)
[COLOR= #0000BB]<?php[/COLOR]
[COLOR= #007700]function[/COLOR] logincheck[COLOR= #007700]([/COLOR][COLOR= #0000BB]$username[/COLOR][COLOR= #007700]=[/COLOR][COLOR= #DD0000][/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$password[/COLOR][COLOR= #007700]=[/COLOR][COLOR= #DD0000][/COLOR][COLOR= #007700]) {[/COLOR] [COLOR= #FF8000]// Functie aanmaken[/COLOR]
    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$username[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000][/COLOR] [COLOR= #007700]||[/COLOR] [COLOR= #0000BB]$password[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000][/COLOR][COLOR= #007700]) {[/COLOR]
        [URL="http://www.php.net/return"]return[/URL] FALSE[COLOR= #007700];
    }[/COLOR] [URL="http://www.php.net/else"]else[/URL] [COLOR= #007700]{[/COLOR]
        [COLOR= #FF8000]// Nu kijken of gegevens kloppen[/COLOR]
        [COLOR= #0000BB]$habbo[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_real_escape_string"]mysql_real_escape_string[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$username[/COLOR][COLOR= #007700]);[/COLOR]
        [COLOR= #0000BB]$password[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/md5"]md5[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/md5"]md5[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]lolsdg255sd6sditraadeenhackernooit[/COLOR][COLOR= #007700].[/COLOR][URL="http://www.php.net/sha1"]sha1[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$password[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]lol[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$password[/COLOR][COLOR= #007700])).[/COLOR][COLOR= #DD0000]ssgf56sdg56[/COLOR][COLOR= #007700]);[/COLOR]
        [COLOR= #0000BB]$checksql[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_fetch_assoc"]mysql_fetch_assoc[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT COUNT(id) AS total, id FROM leden WHERE habbo = "[/COLOR] [COLOR= #007700].[/COLOR] [COLOR= #0000BB]$habbo[/COLOR] [COLOR= #007700].[/COLOR] [COLOR= #DD0000]" AND wachtwoord = "[/COLOR] [COLOR= #007700].[/COLOR] [COLOR= #0000BB]$password[/COLOR] [COLOR= #007700].[/COLOR] [COLOR= #DD0000]" LIMIT 1"[/COLOR][COLOR= #007700]));[/COLOR]
        [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$checksql[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]total[/COLOR][COLOR= #007700]] >[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700]) {[/COLOR]
            [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$checksql[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]id[/COLOR][COLOR= #007700]];
        }[/COLOR] [URL="http://www.php.net/else"]else[/URL] [COLOR= #007700]{[/COLOR]
            [URL="http://www.php.net/return"]return[/URL] FALSE[COLOR= #007700];
        }
    }
}[/COLOR]
?>
(inloggen)
[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_SERVER[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]REQUEST_METHOD[/COLOR][COLOR= #007700]] ==[/COLOR] [COLOR= #DD0000]POST[/COLOR][COLOR= #007700]) {[/COLOR] [COLOR= #FF8000]// Kijken of form verzonden is[/COLOR]
    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/isset"]isset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]username[/COLOR][COLOR= #007700]]) && ![/COLOR][URL="http://www.php.net/empty"]empty[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]username[/COLOR][COLOR= #007700]]) &&[/COLOR] [URL="http://www.php.net/isset"]isset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]password[/COLOR][COLOR= #007700]]) && ![/COLOR][URL="http://www.php.net/empty"]empty[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]password[/COLOR][COLOR= #007700]])) {[/COLOR]
        [COLOR= #0000BB]$id[/COLOR] [COLOR= #007700]=[/COLOR] logincheck[COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]username[/COLOR][COLOR= #007700]],[/COLOR] [COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]password[/COLOR][COLOR= #007700]]);[/COLOR]
        [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$id[/COLOR] [COLOR= #007700]!=[/COLOR] FALSE[COLOR= #007700]) {[/COLOR]
            [COLOR= #0000BB]$_SESSION[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]id[/COLOR][COLOR= #007700]] =[/COLOR] [COLOR= #0000BB]$id[/COLOR][COLOR= #007700];[/COLOR]
            [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]Je bent succesvol ingelogd.<br /><br />[/COLOR][COLOR= #007700];
        }[/COLOR] [URL="http://www.php.net/else"]else[/URL] [COLOR= #007700]{[/COLOR]
            [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]De combinatie van gebruikersnaam en wachtwoord is incorrect.<br /><br />[/COLOR][COLOR= #007700];
        }
    }[/COLOR][URL="http://www.php.net/else"]else[/URL][COLOR= #007700]{[/COLOR]
        [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]Je hebt geen gebruikersnaam of wachtwoord ingevuld!<br /><br />[/COLOR][COLOR= #007700];
    }
}[/COLOR] [COLOR= #FF8000]// Einde kijken of form verzonden is[/COLOR]
?>
<form method="post">
<input type="text" name="username"><br />
<input type="password" name="password"><br />
<button>Inloggen</button>
</form>
Alvast bedankt voor degene die me kan helpenbiggrin
0
Berichten
4.912
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
if($checksql[total] > 0) {

moet je nog tellen met mysql_num_rows denk ik./
0
Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Smiegles schreef:
if($checksql[total] > 0) {

moet je nog tellen met mysql_num_rows denk ik./
Neen, hij haalt het uit de database met mysql_fetch_assoc aangezien die het aantal rows berekent met MySQL ipv PHP wat veel sneller is, hierdoor kan ik ook meteen het ID ophalen indien de gebruiker bestaat.

@Jvdw Ik help je morgen wel ofzo, dan debug ik. Ik moest daarstraks nodig weg.
0
Jvdw

Lid · Topicstarter

Berichten
4.321
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Antonn schreef:
Eerdere citaten tonen
Smiegles schreef:
if($checksql[total] > 0) {
moet je nog tellen met mysql_num_rows denk ik./

Neen, hij haalt het uit de database met mysql_fetch_assoc aangezien die het aantal rows berekent met MySQL ipv PHP wat veel sneller is, hierdoor kan ik ook meteen het ID ophalen indien de gebruiker bestaat.

@Jvdw Ik help je morgen wel ofzo, dan debug ik. Ik moest daarstraks nodig weg.
Oke tywink
0
Berichten
6.485
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Er zitten sowieso een aantal slordigheden in het script.

Login.php
1. Controleren of een array waarde niet leeg is, dan weet je gelijk of de array waarde bestaat. Is dus dubbelop.

2. regel 5 kan gewoon zijn if(!$id)

logincheck()
1. leeg defineren heeft geen zin, je gebruikt de functie alleen als de waarden daadwerkelijk zijn ingevuld. (daarvoor heb je de controle met die !empty())

2. Je hebt een hele uitgebreide functie om de md5() heen. (het boeid trouwens niet om meerdere md5() over een string te gooien. Het is ook netter om per user een salt te gebruiken. En de pepper voor iedereen te gebruiken.

3. Je doet de fetch functie direct over de query. Dit is niet netjes omdat er mysql errors kunnen voorkomen. Daarom kan je het beste eerst de query doen, kijken of de resultaten kloppen (met mysql_error()). En dan pas de query fetchen.

Over de fout zelf, kunnen volgens mij 2 dingen zijn.

1. Er wordt een andere hash gegeneeerd bij registreren. (of je hebt teweinig tekens in je DB, daardoor komen ze er maar half in)

2.De query klopt niet. Dit kan je dus vinden met die mysql_error().
0
Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rogier schreef:
Er zitten sowieso een aantal slordigheden in het script.

Login.php
1. Controleren of een array waarde niet leeg is, dan weet je gelijk of de array waarde bestaat. Is dus dubbelop.

2. regel 5 kan gewoon zijn if(!$id)
logincheck()
1. leeg defineren heeft geen zin, je gebruikt de functie alleen als de waarden daadwerkelijk zijn ingevuld. (daarvoor heb je de controle met die !empty())

2. Je hebt een hele uitgebreide functie om de md5() heen. (het boeid trouwens niet om meerdere md5() over een string te gooien. Het is ook netter om per user een salt te gebruiken. En de pepper voor iedereen te gebruiken.

3. Je doet de fetch functie direct over de query. Dit is niet netjes omdat er mysql errors kunnen voorkomen. Daarom kan je het beste eerst de query doen, kijken of de resultaten kloppen (met mysql_error()). En dan pas de query fetchen.

Over de fout zelf, kunnen volgens mij 2 dingen zijn.

1. Er wordt een andere hash gegeneeerd bij registreren. (of je hebt teweinig tekens in je DB, daardoor komen ze er maar half in)

2.De query klopt niet. Dit kan je dus vinden met die mysql_error().

Ik wou niet echt een script voor hem maken, maar eerder hem leren hoe te scripten dus ik probeerde duidelijk te zijn want sommige dingen uitleggen dat duurt wel even...

Ik ben wel foutafhandeling vergeten bij de query ja, maar toen ik deze in de DB heb uitgevoerd deed deze het perfect. Ik heb al deels gedebugt maar kon niets vinden

toevoeging op 21 oktober 2012, 12:54:04:
Ohh, en ook heel slim om je salts enzo openbaar te maken emo
toevoeging op 21 oktober 2012, 13:20:04:
Fixed; moest == zijn ipv = bij de if. Enorm dom foutje, heel lang voor moeten debuggen voor zon klein script.
0
Berichten
6.485
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
left-hand comparison pompom
0
Jvdw

Lid · Topicstarter

Berichten
4.321
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Antonn schreef:
Eerdere citaten tonen
Rogier schreef:
Er zitten sowieso een aantal slordigheden in het script.
Login.php
1. Controleren of een array waarde niet leeg is, dan weet je gelijk of de array waarde bestaat. Is dus dubbelop.

2. regel 5 kan gewoon zijn if(!$id)

logincheck()
1. leeg defineren heeft geen zin, je gebruikt de functie alleen als de waarden daadwerkelijk zijn ingevuld. (daarvoor heb je de controle met die !empty())

2. Je hebt een hele uitgebreide functie om de md5() heen. (het boeid trouwens niet om meerdere md5() over een string te gooien. Het is ook netter om per user een salt te gebruiken. En de pepper voor iedereen te gebruiken.

3. Je doet de fetch functie direct over de query. Dit is niet netjes omdat er mysql errors kunnen voorkomen. Daarom kan je het beste eerst de query doen, kijken of de resultaten kloppen (met mysql_error()). En dan pas de query fetchen.

Over de fout zelf, kunnen volgens mij 2 dingen zijn.

1. Er wordt een andere hash gegeneeerd bij registreren. (of je hebt teweinig tekens in je DB, daardoor komen ze er maar half in)

2.De query klopt niet. Dit kan je dus vinden met die mysql_error().

Ik wou niet echt een script voor hem maken, maar eerder hem leren hoe te scripten dus ik probeerde duidelijk te zijn want sommige dingen uitleggen dat duurt wel even...

Ik ben wel foutafhandeling vergeten bij de query ja, maar toen ik deze in de DB heb uitgevoerd deed deze het perfect. Ik heb al deels gedebugt maar kon niets vinden

toevoeging op 21 oktober 2012, 12:54:04:
Ohh, en ook heel slim om je salts enzo openbaar te maken emo
toevoeging op 21 oktober 2012, 13:20:04:
Fixed; moest == zijn ipv = bij de if. Enorm dom foutje, heel lang voor moeten debuggen voor zon klein script.
hartelijk bedanktwink
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren