webForumDet fria alternativet

Vad gör jag för fel nu då?

PHP

4 svar · 173 visningar · startad av fredriksk

Medlem sedan maj 2001211 inlägg
Frågan#1

Halloj!

Nu har jag slitit med detta en hel dag utan att förstå vad jag gör fel.

Jag håller på att bygga en "automatisk urloggningsfunktion" Jag har därför byggt nedanstående lilla funktion för att kolla om användaren har passerat tiden den får vara inloggad. I korthet går funktionen till så här. (ursäkta röran med alla tmp variabler och print satser. de har använts för testning och felsökning).

1. $user_array innehåller bla info om hur lång tid användaren får vara inloggad innan han skall loggas ur. $timer är en timestamp som sätts av en annan funktion (så här: $timer = time(); ) och är global.

2. Om användaren besöker en sida anropas funktionen och om användaren är inom tidsintervallet så retuneras sant annars falskt.

så här ser funktionen ut:

	function check_timer(){
		global $timer, $user_array;
		
		$ttl = $user_array["time_to_live"];
		$tmp = $timer + $user_array["time_to_live"];
		
		print "tmp=".$tmp."<br>";
		print "time=".time()."<br>";

		//Om tiden inte gått ut nollställs timern och sant retuneras	
		if(time() < $tmp){
			$timer = time();
			return true;
		}

		//om tiden har gått ut retuneras falskt
		else{
			return false;
		}
	return false;
	}

Ovanstående fungerar inte. Men om jag gör så här:

	function check_timer(){
		global $timer, $user_array;
		
		$ttl = $user_array["time_to_live"];
		$tmp = $timer + $user_array["time_to_live"];
		
		print "tmp=".$tmp."<br>";
		print "time=".time()."<br>";

		//Om tiden inte gått ut nollställs timern och sant retuneras	
		if(time() < $timer + 60){
			$timer = time();
			return true;
		}

		//om tiden har gått ut retuneras falskt
		else{
			return false;
		}
	return false;
	}

så loggas användaren ut efter 60 sekunder....

Hur kommer detta sig?

Medlem sedan aug. 2001153 inlägg
#2

Vad gör timer funktionen?
Skall det inte stå time() ist för timer()?

Medlem sedan maj 2001211 inlägg
#3

så sant. Visst skall det stå time() och inte timer()
Jag har ändrat det i första inlägget...

Medlem sedan maj 2001211 inlägg
#4

hur kan det vara skillnad på en variabel med värdet 60 och att skriva 60?

Tänker på raden som heter:

if(time() < $tmp){
$timer = time();
return true;
}

Medlem sedan aug. 2001153 inlägg
#5

Ändra till
if(time() < ($timer + $user_array["time_to_live"])) {

Och titta ifall det funkar? Jag hittar inte nåt fel iaf :/

255 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)