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-Key: 166230

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

Printed on: April 19, 2024 at 11:04 o'clock

Member: dog
dog May 13, 2011 at 12:17:48 (UTC)
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)
Member: EvilToken
EvilToken May 13, 2011 at 12:30:03 (UTC)
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
Member: dog
dog May 13, 2011 at 19:21:35 (UTC)
Goto Top
Bei den INI-Optionen steht jeweils dabei, welche zur Laufzeit überschrieben werden können.