Seite 1 von 2

session_pagestart()

Verfasst: 10.02.2003 20:23
von theangel
Hallo zusammen, hab ein kleines Problem mit session_pagestart(); wenn ich das ganze auf eigenen, Forums-Externen Seiten einsetze...

So funktioniert es ohne Probleme:

Code: Alles auswählen

$userdata = session_pagestart($user_ip, PAGE_HOME);
So allerdings nicht:

Code: Alles auswählen

$phpbbsite = $HTTP_GET_VARS["site"];
if ($phpbbsite == "")
$phpbbsite = "PAGE_HOME";
$userdata = session_pagestart($user_ip, $phpbbsite);
Obwohl die Variabel phpbbsite ja auch lediglich "PAGE_HOME" enthält, welches ich in viewonline.php, constans.php und der language-Datei auch korrekt definiert habe.

Fehlermeldung:

Code: Alles auswählen

phpBB : Critical Error 

Error updating sessions table

DEBUG MODE

SQL Error : 1054 Unknown column 'PAGE_HOME' in 'field list'

UPDATE phpbb_sessions SET session_time = 1044904808, session_page = PAGE_HOME WHERE session_id = '21ac28c53fb36389cdf01e209eefb4aa'

Line : 267
File : /home/sites/site190/web/forum/includes/sessions.php
Hat vielleicht schon jemand Erfahrung mit dem bedienen der Funktion session_pagestart(); über Variabeln und stand vor dem gleichen Problem?

Gruss
Basti

Verfasst: 10.02.2003 20:39
von PhilippK
$phpbbsite muss ein Integer-Wert und kein String sein...

Gruß, Philipp

Verfasst: 10.02.2003 21:37
von theangel
Versteh ich nicht, wieso funktioniert dann Beispiel 1?

Verfasst: 10.02.2003 21:42
von PhilippK
Weil in Beispiel 1 PAGE_HOME eine Konstante ist, die dann wiederrum ein Integer-Wert ist. Man achte auf den feinen Unterschied mit den Anführungszeichen...

Gruß, Philipp

Verfasst: 10.02.2003 22:40
von theangel
Wenn ich dich und php.net richtig verstanden habe, gibt es dafür also keine Problemlösung um das ganze per Varibeln zu steuern?

Verfasst: 10.02.2003 23:23
von PhilippK
Versuch's mal der Art:

Code: Alles auswählen

define ('PAGE_HOME', 12345);

if ( isset($HTTP_GET_VARS['site'])
{
    $phpbbsite = intval($HTTP_GET_VARS['site']);
}
else
{
    $phpbbsite = PAGE_HOME;
}

$userdata = session_pagestart($user_ip, $phpbbsite);
Gruß, Philipp

Verfasst: 11.02.2003 11:16
von theangel
Hmm... da durch intvar der Wert der Variabel immer auf 0 gesetzt wird wenn es sich dabei nicht um eine Zahl handelt, klappt das leider auch nicht... so wird immer angegeben, man würde sich im Forum-Index befinden.

Ich versteh aber auch noch immer nicht, wieso z.B.

Code: Alles auswählen

$userdata = session_pagestart($user_ip, TEST);
Funktioniert und...

Code: Alles auswählen

$phpbbsite = "TEST";
$userdata = session_pagestart($user_ip, $phpbbsite);
Nicht funktioniert... da muss ich es doch einen Weg geben das zu umgehen?

Verfasst: 11.02.2003 11:23
von PhilippK
Setz dich mal mit den Konstanten, String-Werten und Variablen in PHP auseinander - das könnte vielleicht helfen :-) ist eine - wenn auch vermutlich undefinierte - Konstante,

Code: Alles auswählen

"TEST"
hingegen ein String (Zeichenfolge).

Demnach funktioniert z.B.

Code: Alles auswählen

$phpbbsite = TEST; 
$userdata = session_pagestart($user_ip, $phpbbsite);
bzw.

Code: Alles auswählen

$userdata = session_pagestart($user_ip, TEST);
Gruß, Philipp

Verfasst: 11.02.2003 12:36
von theangel
Hab die Lösung gefunden:

Code: Alles auswählen

if (isset($HTTP_GET_VARS['site'])) { 
    $phpbbsite = constant("$HTTP_GET_VARS[site]"); 
} else { 
    $phpbbsite = constant("PAGE_HOME"); 
}

Verfasst: 11.02.2003 14:24
von PhilippK
theangel hat geschrieben:Hab die Lösung gefunden:

Code: Alles auswählen

if (isset($HTTP_GET_VARS['site'])) { 
    $phpbbsite = constant("$HTTP_GET_VARS[site]"); 
} else { 
    $phpbbsite = constant("PAGE_HOME"); 
}
Sorry, aber das scheint mir ehr Zufall zu sein, dass das funktioniert...

Gruß, Philipp