eviltoken
Goto Top

PHP Session Timeout nach Source IP gefiltert

Hallo Zusammen,

ich betreibe eine Webseite die von externen und internen Benutzern genutzt wird.
Die Webseite nutzt PHP Sessions. Momentan laufen die Session nicht ab bzw. enden erst nach
einem Tag. Somit muss sich der Benutzer am nächsten Tag neu anmelden.
Das ist auch soweit ok für den internen Bereich aber für extern eher nicht.

Nun die Frage:
Kann man ein Session Timeout definieren der nur bei externen Benutzern greift?
Die internen Benutzer sollen weiterhin Tagessession haben, sodass sie erst nach einem Tag
sich neu anmelden müssen.
Die allgemeinen Einstellungen dazu findet man ja in der php.ini aber ob man das nach Source IP
filtern kann ist nicht ersichtlich.

Vielen Dank im Voraus

Gruß EvilToken

Content-ID: 166230

Url: https://administrator.de/contentid/166230

Ausgedruckt am: 21.11.2024 um 22:11 Uhr

dog
dog 13.05.2011 um 14:17:48 Uhr
Goto Top
<?php

	function ip_in_net($net,$ip) {
		list($net,$bits) = explode('/',$net);  
		$mask = 0;
		for($i=0;$i<$bits;$i++) {
			$mask |= 1<<(31-$i);
		}
		$netNum = ip2long($net);
		$ipNum = ip2long($ip);
		
		return ($netNum == ($ipNum&$mask));
	}

	#...
	session_name('meineseite');  
	
	$localNets = array('10.0.0.0/8');  
	
	$ipIsLocal = false;
	foreach($localNets as $net)
		if(ip_in_net($_SERVER['REMOTE_ADDR'],$net))  
			$ipIsLocal = true;
			
	if(!$ipIsLocal)
		session_set_cookie_params(0);
	
	session_start();
	
	

?>

(ungetestet und aus dem Kopf)
EvilToken
EvilToken 13.05.2011 um 14:30:03 Uhr
Goto Top
Hi dog,

wow, das ging schnell.
Vielen Dank!
Hab ich das den richtig verstanden?
Wenn ich Einstellungen in der PHP.ini mache und diese dann im PHP Code der Webseite ändere
wird letzteres übernommen?

Gruß EvilToken
dog
dog 13.05.2011 um 21:21:35 Uhr
Goto Top
Bei den INI-Optionen steht jeweils dabei, welche zur Laufzeit überschrieben werden können.