Ik ben pas een half jaartje bezig met PHP en heb nu enige ervaring opgedaan. Maar ik had een vraag betreffende een inlogsysteem wat ik aan het opzetten ben. Ik wil graag een functie erin toevoegen dat als je na 3 inlogpogingen niet de juiste combinatie van username en password hebt weten in te voeren dat dan je account voor 30 minuten geblokkeerd wordt.
Alleen ik heb echt geen idee hoe ik zo'n functie op moet bouwen. Heeft iemand hier ervaring mee of weet iemand een tutorial want via google kan ik niks vinden qua tuts of scripts waar het in voorkomt.
NB, ik draai nog op een oudere versie van php, namelijk 4.4.4.
het is een TIMESTAMP veld deze word automatisch geupdate als er veranderingen aan worden gebracht. Dat is wat ik wil. En nou moet ik ervoor zorgen dat ik een 2e veld heb dat DATE of DATETIME of misschien zelfs als het mogelijk is een TIMESTAMP met 5min (voor de ban tijd) erbij en dat als de 2 tijden niet gelijk zijn een gebruiker niet kan inloggen. Natuurlijk als het 2e tijd veld minder dan het TIMESTAMP veld is de gebruiker wel kan inloggen. Ik zit hier nog even op te puzzelen.
Ok voor degene die geinteresseerd is.
Deze code heb ik gebruikt om de mijn tijd2 (ik heb ook een tijd maar dat is de timestamp) te updaten.
"UPDATE login SET tijd2 = NOW() + INTERVAL 5 MINUTE";
Nu moet ik een controle maken die de tijden naast mekaar legt dat als degene weer probeert in te loggen binnen de tijd er een bericht komt met het duurt nog zoveel min en anders een bericht dat degene weer kan inloggen.
Nou ik ben na wat andere dingen gedaan te hebben toch eindelijk verder gekomen.
Dit is nu mijn probleem:
<?php
$sql = mysql_query("SELECT * FROM tabel WHERE ip='".$_SERVER['REMOTE_ADDR']."'");
$rows = mysql_fetch_array($sql);
$time = $rows['tijd'];
$pogingen = $rows['poging'];
if($pogingen == 3)
{
if(time() <= $time)
{
print "U kunt nog niet inloggen";
die();
}
elseif($time > time())
{
$query = ("UPDATE tabel SET poging='0' WHERE ip='".$_SERVER['REMOTE_ADDR']."'");
?>
Ik wil ervoor zorgen dat de tijd gecontroleerd word.
Dus als tijd "nu" kleiner is dan de tijd in de database (gedaan met interval 5 minute)
Dan kan die persoon niet inloggen.
Maar als het aantal pogingen ook 3 is maar de tijd "nu" is groter dan de tijd in de database moet het aantal pogingen weer teruggezet worden naar 0 en word de rest van de code uitgevoerd zodat die persoon kan inloggen.
Ik ben al een tijd bezig maar het lukt niet.
Heeft iemand hier ervaring mee en kan die persoon mij helpen?
Nogmaals, kijk eens naar mijn link. Daar staat het antwoord wat je zoekt, DATETIME in mySQL zorgen ervoor dat je geen PHP hoeft te gebruiken, als je m een true of false laat teruggeven kan je daarna met een if-else de melding bepalen.
1: kijk met sql statement of tijd in database + interval 5 minuten overeenkomt met NOW();
2. als dat zo is -> return true; als het niet zo is -> return false;
3. schrijf if-else, als $waarde = true echo het login form en zet pogingen terug naar 0. als $waarde = false echo U moet 5 minuten wachten;
Tipje: Gebruik geen die(); is niet erg netjes. Een goede foutafhandeling heeft geen die(); nodig...