Hey allemaal,

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.

Alvast bedankt!
Groet, Justin Streuper
Justin schreef op 09.11.2008 14:11
niet echt een nuttige reactie...

Je vroeg om iets leuks...
aapjuh schreef op 05.11.2008 23:57
Hey Justin,

ik zie dat je al functie's kunt gebruiken. Hier heb ik een iets beter ip getter voor je. Heb het hier ergens op phphulp gevonden.

...


Eigenlijk is die niet zoveel beter. Het enige wat ik nu hoef te doen om jouw een fout ip te geven is mijn browser zo instellen dat hij een header genaamd X-Forwarded-For meestuurt. Minder werk dan een proxy op internet zoeken, en ideaal om te faken dat je iemand anders bent. REMOTE_ADDR kan je daarentegen niet aanpassen. Dat is of je eigen (buiten) ip-adres, of dat van een proxy, maar nooit dat van een al in gebruik door iemand anders genomen ip-adres.

Naar mijn idee is $_SERVER['REMOTE_ADDR'] een betere keuze dan de functie die Aapjuh gaf :)
Ja en buiten dat leek de functie ook heel ingewikkeld en wist ik niet precies wat het voor extra's toevoegde aan de actie $_SERVER['REMOTE_ADDR']. Daarom heb ik ook voor deze methode gekozen. Jammergenoeg deze week tentamens dus heb weinig tijd om aan het script verder te werken, maargoed, na vrijdag weer genoeg tijd :D!
Kun je nu mooi de discussie voeren over hoe nuttig het is om op ip te bannen.
Bankorganisaties als Postbank enz. doen het ook, mede omdat het brutoforcing tegen gaat. En daarnaast wordt je tijdelijk geband, en niet voor altijd, wat is 20 á 30 minuten nou in een mensenleven? ;-).. En buiten dat wil ik wel eens kijken hoe ik zoiets moet maken enzo, dus het is een leerschool en nuttig :-)!
Als je het maar niet doet á la PHPhulp.
Hoe bedoel je 'á la phphulp'?
Hey goedeavond!

Ik ben weer een stukje verder met het script!


<?php
	if ($exist = mysql_query("SELECT ip FROM suspended WHERE ip='".$_SERVER['REMOTE_ADDR']."'")){
	
			if (mysql_num_rows($exist) == 0){
				//Ip adres komt nog niet voor in database
				mysql_query("INSERT INTO suspended (ip,time,count) VALUES ('" .$_SERVER['REMOTE_ADDR']. "', '".date(H.i.s)."', '1')");
		
			}else{
				//IP Adres komt wel voor in database, dus update functie om niet nog een keer erin te plaatsen.
				mysql_query("UPDATE suspended SET count=count+1, time='".date(H.i.s)."' WHERE ip='" .$_SERVER['REMOTE_ADDR']. "'");
			}
		
	}

?>


Maar hoe moet ik nu verder?
Er moet nu zegmaar gekeken worden naar of de count 3 is, zoja, check of de 30 minuten voorbij zijn -> ja, delete record -> nee, geef echo met hoeveel minuten er nog over zijn.

is de count == 0
laat login formulier zien

is count meer dan 0>
Laat aantal pogingen zien die over zijn

dus zo:

<?php

	if -> kijken of de persoon al 3 keer heeft geprobeerd == true	{
  			
			if -> kijk of 30min al om zijn == true
  			{
    		Ga naar :login
  				
				} else {
    				Geef een error dat hij niet in mag loggen door teveel pogingen.
  						}
			
			} else {
  				if -> Kijk of de gegevens correct zijn == true
  				{
    				log in en reset de DB gegevens van het desbetreffende IP
					
  						} else {
    						sla een foutieve login op in de DB met de huidige tijd
  						}
			} 

?>
is het je nog gelukt? ik wil namelijk een zelfde soort iets maken voor een school opdracht. Ik heb forum na forum afgezocht maar geen suc6

Reageren