Hallo PHP'ers,

Ik heb een php applicatie gemaakt, maar wil deze uiteraard ook beveiligen.

Mijn beveiliging bestaat uit:

- Ten eerste een IP Check. Als je op een bepaald ip adres zit is inloggen niet nodig.
- Als je niet op dit IP adres zit, wordt je dooorverwezen naar login.php
- Als je correct inlogt, wordt je sessie gestart en wordt je doorverwezen naar index.php

Mijn probleem: Als je dus buiten het onbeveiligde IP adres zit, en wil inloggen, kom je prima op de login pagina, maar, als je klikt op inloggen, is de session start blijkbaar te sloom voor de page refresh?

Is het echt zo dat een session aanmaken zo sloom is of zit er een fout in mijn pagina?
En hoe kan ik dit eventueel oplossen?

Groetjes Feiko

P.S. Hieronder bijgevoegd gedeeltelijk de code van iptest.php en login.php.

login.php:
<? if ($naaminputc==$naamdbc) {	

	mysqli_query($con,"INSERT INTO Logins (naam, login_id, ip, date, correct) VALUES ('$naaminputc', '$code', '$clientip', '$datum', 'ja')");
            $_SESSION['luser'] = $naaminputc;
            $_SESSION['start'] = time();
            $_SESSION['expire'] = $_SESSION['start'] + (30 * 60);
            header('Location: http://xxxxxx.nl/index.php');
		
        } ?>


iptest.php
<? $clientip = $_SERVER['REMOTE_ADDR'];
if($clientip !='xx.xx.x.xxx'){


	$now = time(); 

   session_start();

    if (!isset($_SESSION['luser'])) {
      header('Location: http://www.xxxxxxx/login.php');
  }

       elseif ($now > $_SESSION['expire']){
           session_destroy();
           header('Location: http://www.xxxxxx/login.php');
       }
        else {}


} ?>


[size=xsmall]Toevoeging op 16/06/2015 16:11:35:[/size]

Comment: Ik heb het ook geprobeerd met de HTML Refresh (<META HTTP-EQUIV="refresh" CONTENT="5; URL=http://www.xxxxxx.nl/index.php">;)

En bij 5 seconden werkte het op de pc, maar op een smartphone nog niet. Verder is dit een ontzettend irritante manier, omdat je bij een login lang moet wachten, en gebruikers dan geirriteerd raken en het nog een keer proberen etc.

Dus als iemand een andere oplossing heeft, zou fantastisch zijn.
@Johan K & Randy Flujowa: Zover ik weet zijn sessions uniek en gelden deze niet voor een heel netwerk. Ik doe alleen een enkele check of het IP adres 1 bepaald adres is, omdat de applicatie hier dagelijks wordt gebruikt en inloggen simpelweg onhandig zou zijn.

@Thomas: Uiteraard gebruik ik geen framesets, maar bedankt voor de tip, slordig dat ik dit over het hoofd heb gezien. Het lijkt nu beter te werken, maar heb er alsnog een vertraging van 1 seconde op zitten omdat een directe redirect nog 'te snel' is blijkbaar.. In ieder geval bedankt, werkt al een stuk soepeler.

Feiko Ritsema op 16/06/2015 16:19:05

Als iemand correct inlogt wordt hij doorverwezen naar index.php, waar de iptest.php wordt ge'include. Dan vervolgens wordt de gebruiker gelijk weer doorverwezen naar login.php..

Er zit een logicafout in je redenatie en daardoor in de flow van je applicatie. Als iemand correct inlogt, is die hele IP-test overbodig: je hebt dat vaste IP-adres immers opgenomen om nu juist te voorkomen dat vanaf dat IP-adres moet worden ingelogd.

Ik denk dat je de hele structuur moet omwerken. Zet om te beginnen eens alles in één bestand, zodat je logica kunt uitbouwen in één overzichtelijk if/elseif/else.

Reageren