webForumDet fria alternativet

Problem med onlinefunktion

10 svar · 339 visningar · startad av Viking

VikingMedlem sedan maj 20003 652 inlägg
#1
function peopleOnline() {
	if(!empty($HTTP_X_FORWARDED_FOR)) {
		$ip = $HTTP_X_FORWARDED_FOR;
	} elseif(!empty($REMOTE_ADDR)) {
		$ip = $REMOTE_ADDR;
	}

	$old_Time = time() - 300;
	mysql_query("DELETE FROM peopleOnline WHERE time <= '". $old_Time ."'") or die(mysql_error());

	$slct_IP_Query = mysql_Query("SELECT * FROM peopleOnline WHERE ip = '". $ip ."'") or die(mysql_error());
	$num_res_Query = mysql_Num_Rows($slct_IP_Query);
	$current_Time = time();

	if($num_res_Query > 0) {
		mysql_Query("UPDATE peopleOnline SET time = '". $current_Time ."' WHERE ip = '". $ip ."'") or die(mysql_error());
	} else {
		mysql_Query("INSERT INTO peopleOnline VALUES( '". $ip ."', '". $current_Time ."' )") or die(mysql_error());
	}

	$slct_Online_Query = mysql_Query("SELECT * FROM peopleOnline") or die(mysql_error());
	$num_Online_Query = mysql_Num_Rows($slct_Online_Query);

	return $num_Online_Query;
}

Nån som ser något fel? :)

Jag får inget felmeddelande av något slag, det enda som händer är att det inte fungerar, dvs, den returnerar bara "1" hela tiden :q

VikingMedlem sedan maj 20003 652 inlägg
#2

no1?

Johannes\PMedlem sedan jan. 200230 inlägg
#3

jag kan ju ha fel eftersom jag inte läst igenom koden..

men fungerar den inte såhär:

om IP finns som post
....uppdatera posten med ny tid
annars
....lägg till posten

med andra ord: det finns alltid något i tabellen, därför returneras alltid 1 om du/ni sitter och testar scriptet är på samma ip.

Men som sagt, jag kan ju alltid ha fel.
;)

VikingMedlem sedan maj 20003 652 inlägg
#4

Tja, såå dum att jag inte testar från flera IP's är jag inte :e

SPiNMedlem sedan mars 20007 896 inlägg
#5

Det kan inte vara så illa att resultatet från den första SQL-frågan hänger kvar i variabeln $slct_Online_Query
? Den BÖR ju inte göra det, men man kan aldrig lita på datorer och IT. ;)

Prova alltså att byta namn när du kör den sista SQL-frågan. :)

VikingMedlem sedan maj 20003 652 inlägg
#6

Nja, de har ju inte samma namn; $num_Online_Query, $slct_IP_Query... Så det borde ju inte vara det...? :)

SPiNMedlem sedan mars 20007 896 inlägg
#7

Det har du iofs rätt i, men man vet ju aldrig. :e ;)

KimMedlem sedan jan. 20007 697 inlägg
#8

Jag kan ju ha fel, men är PHP verkligen "case insensitive" i funktionsnamn? T.ex. står det mysql_Query() och inte mysql_query() .

Testa att bara använda små bokstäver. Eller hur fungerar det?

SPiNMedlem sedan mars 20007 896 inlägg
#9

PHP är case sensitive på användardefinierade variabler och funktioner har jag för mig, så mySQL_quERY() kan man skriva, men han borde inte kunna skriva POPLeonLine() när han anropar sin funktion.

Inte säker, men jag tror att det är så. :)

VikingMedlem sedan maj 20003 652 inlägg
#10

Hum, det returnerar ju ett resultat, så det borde inte vara problemet... :)

VikingMedlem sedan maj 20003 652 inlägg
#11

Jag gissar att felet sitter här:

[kod]$old_Time = time() - 300;
mysql_query("DELETE FROM peopleOnline WHERE time <= '". $old_Time ."'") or die(mysql_error());[/kod

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)