Seite 1 von 2

GET Variable wird ignoriert?

Verfasst: 31.03.2006 22:31
von frieder
Ich plane eine Webseite zu machen, bei der der gesamte Inhalt
aus der MySQL Datenbank geholt wird.

Es wird also eine Variable Inhalt gesetzt, und dann innerhalb des
Dokuments je nach der Variable der passende Inhalt geladen.

Dadurch müßte ich theoretisch mit den Links:
/index.php?inhalt=3
/index.php?inhalt=4

jeweils den Inhalt Nr. 3, bzw. 4 angezeigt bekommen.

Für den Fall, dass Inhalt leer ist habe ich folgenden Code verwendet:

Code: Alles auswählen

if (isset($inhalt)) {
}
else {
$inhalt='1';
}
Auf meinem localhost funktioniert das auch perfekt...
Sobald ich die Sache aber ins Internet lade ist der Inhalt immer
eine undefinierte Variable (Auch wenn ich an die URL ?inhalt=3
anhänge)
Bsp: http://f-philipps.info/f-philipps/index.php

Kann mir da einer einen Tipp geben? Ich find es richtig komisch,
dass es auf meinem PC fehlerfrei läuft... eigentlich müßten
PC und Server auf etwas dem selben Stand sein...

Wenn in der Beschreibung etwas unklar war: Bitte einfach schreiben,
damit ichs dann noch einmal überarbeiten kann, anstatt
das Posting einfach zu übergehen ;)


Edit:
Und ich habe grade eben festgestellt, dass die Seite im IE völlig falsch
angezeigt wird... wenn da jemand einen Tipp hat...
(Benutze den IE nur für phpBB.de, weil ich mich mit dem Opera hier
irgendwie nicht einloggen kann...)

Verfasst: 31.03.2006 22:51
von PhilippK
Hallo,

ich würde mir mal den Artikel zu register_globals auf php.net durchlesen und dann versuchen, auf die GET-Parameter wie unter http://de3.php.net/manual/de/language.v ... perglobals beschrieben mit $_GET zuzugreifen.

Gruß, Philipp

Verfasst: 31.03.2006 23:27
von frieder
Danke! So funktioniert es jetzt endlich...
Ich meld mich dann morgen wieder in einem anderen Thema mit
einem anderen Problem :D (Irgendwas sagt mir, dass es sich
hierbei um das Hochladen von Dateien handeln wird ;) )

register_globals oder spezieller Forum Code

Verfasst: 02.04.2006 23:25
von jue
Hallo,

hatte das gleiche Problem! Mein PHP ist aber sicher so konfiguriert, dass register_globals auf on steht, das kann also nicht der Grund sein! Letzten Endes funktionieren bei mir selbst erstellte php-Dateien ohne Integration in phpBB so, daß ich auf eine mit ?variable=$variable übergebene Variable einfach mit $variable2 = $variable zugreifen kann!

Hab mich erst gewundert, warum das im phpBB nicht funktioniert, bis ich mir mal mehrere phpBB-Dateien ansah!

Da fiel mir der folgende Code auf:

Code: Alles auswählen

if ( !empty($HTTP_GET_VARS[POST_UPD_THEMA_ID_URL]) || !empty($HTTP_POST_VARS[POST_UPD_THEMA_ID_URL]) ) 
{ 
$upd_thema_id = ( !empty($HTTP_GET_VARS[POST_UPD_THEMA_ID_URL]) ) ? intval($HTTP_GET_VARS[POST_UPD_THEMA_ID_URL]) : intval($HTTP_POST_VARS[POST_UPD_THEMA_ID_URL]); 
} 
else 
{ 
$upd_thema_id = ""; 
} 

if ( !empty($HTTP_GET_VARS['upd_thema_kat_id']) || !empty($HTTP_POST_VARS['upd_thema_kat_id']) ) 
{ 
$upd_thema_kat_id = ( !empty($HTTP_GET_VARS['upd_thema_kat_id']) ) ? intval($HTTP_GET_VARS['upd_thema_kat_id']) : intval($HTTP_POST_VARS['upd_thema_kat_id']); 
} 
else 
{ 
$upd_thema_kat_id = ""; 
} 
So ähnlich jedenfalls, hier handelt es sich schon um von mir angepassten Code! Aber das Prinzip wird klar! auf Variablen wird hier mit solchen Konstrukten wie $HTTP_GET_VARS['variable'] zugegriffen!

Bin mir absolut sicher, dass das auf dem gleichen Server mit Nicht-phpbb-PHP-Dateien nicht erforderlich ist. Daher vermute ich, dass dieses Erfordernis durch irgendwelchen phpbb-Code erzeugt wird!

Würde mich mal grundsätzlich interessieren, ob das wirklich so ist!!!

Verfasst: 03.04.2006 14:21
von Fabse
Wenn ich mich recht erinnere wird irgendwo im Code register_globals auf off gesetzt. Kann ich jetzt aber nicht zu 100% sagen. Aber ich bin mir ziemlich sicher.

BTW: $HTTP_GET_VARS ist alt. phpBB 3 basiert dann auch schon auf $_GET

Verfasst: 03.04.2006 20:38
von Dave
common.php
if (@ini_get('register_globals') == '1' || strtolower(@ini_get('register_globals')) == 'on')
{
// PHP4+ path
$not_unset = array('HTTP_GET_VARS', 'HTTP_POST_VARS', 'HTTP_COOKIE_VARS', 'HTTP_SERVER_VARS', 'HTTP_SESSION_VARS', 'HTTP_ENV_VARS', 'HTTP_POST_FILES', 'phpEx', 'phpbb_root_path');

// Not only will array_merge give a warning if a parameter
// is not an array, it will actually fail. So we check if
// HTTP_SESSION_VARS has been initialised.
if (!isset($HTTP_SESSION_VARS) || !is_array($HTTP_SESSION_VARS))
{
$HTTP_SESSION_VARS = array();
}

// Merge all into one extremely huge array; unset
// this later
$input = array_merge($HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS, $HTTP_SERVER_VARS, $HTTP_SESSION_VARS, $HTTP_ENV_VARS, $HTTP_POST_FILES);

unset($input['input']);
unset($input['not_unset']);

while (list($var,) = @each($input))
{
if (!in_array($var, $not_unset))
{
unset($$var);
}
}

unset($input);
}
:wink:

Setzen von register_globals auf off in common.php

Verfasst: 05.04.2006 18:49
von jue
Hallo, an Fabse und Dave aus Wuppertal,

na das ist doch mal ne aufschlussreiche Antwort!

Jetzt weiss ich also endlich, was der Grund für mein stundenlanges Rätseln war, warum sich das so verhält mit dem Auslesen von übergebenen Variablen unter phpBB!!!

Vielen Dank!

jue

Verfasst: 01.04.2007 02:54
von konne
Gast hat geschrieben:common.php
if (@ini_get('register_globals') == '1' || strtolower(@ini_get('register_globals')) == 'on')
{
// PHP4+ path
$not_unset = array('HTTP_GET_VARS', 'HTTP_POST_VARS', 'HTTP_COOKIE_VARS', 'HTTP_SERVER_VARS', 'HTTP_SESSION_VARS', 'HTTP_ENV_VARS', 'HTTP_POST_FILES', 'phpEx', 'phpbb_root_path');

// Not only will array_merge give a warning if a parameter
// is not an array, it will actually fail. So we check if
// HTTP_SESSION_VARS has been initialised.
if (!isset($HTTP_SESSION_VARS) || !is_array($HTTP_SESSION_VARS))
{
$HTTP_SESSION_VARS = array();
}

// Merge all into one extremely huge array; unset
// this later
$input = array_merge($HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS, $HTTP_SERVER_VARS, $HTTP_SESSION_VARS, $HTTP_ENV_VARS, $HTTP_POST_FILES);

unset($input['input']);
unset($input['not_unset']);

while (list($var,) = @each($input))
{
if (!in_array($var, $not_unset))
{
unset($$var);
}
}

unset($input);
}
:wink:
Kann mir mal bitte jemand leicht verständlich erklären, was diese if-Schleife bewirkt und wofür sie demzufolge da ist? Was wäre, wenn man sie weg ließe?

Verfasst: 01.04.2007 11:30
von weisnet
Gast hat geschrieben:
Gast hat geschrieben:common.php
if (@ini_get('register_globals') == '1' || strtolower(@ini_get('register_globals')) == 'on')
{
// PHP4+ path
$not_unset = array('HTTP_GET_VARS', 'HTTP_POST_VARS', 'HTTP_COOKIE_VARS', 'HTTP_SERVER_VARS', 'HTTP_SESSION_VARS', 'HTTP_ENV_VARS', 'HTTP_POST_FILES', 'phpEx', 'phpbb_root_path');

// Not only will array_merge give a warning if a parameter
// is not an array, it will actually fail. So we check if
// HTTP_SESSION_VARS has been initialised.
if (!isset($HTTP_SESSION_VARS) || !is_array($HTTP_SESSION_VARS))
{
$HTTP_SESSION_VARS = array();
}

// Merge all into one extremely huge array; unset
// this later
$input = array_merge($HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS, $HTTP_SERVER_VARS, $HTTP_SESSION_VARS, $HTTP_ENV_VARS, $HTTP_POST_FILES);

unset($input['input']);
unset($input['not_unset']);

while (list($var,) = @each($input))
{
if (!in_array($var, $not_unset))
{
unset($$var);
}
}

unset($input);
}
:wink:
Kann mir mal bitte jemand leicht verständlich erklären, was diese if-Schleife bewirkt und wofür sie demzufolge da ist? Was wäre, wenn man sie weg ließe?
Was ist eine If Schleife?
Ich kenne nur for, while, etc? Seit wann wird ein gewönnliches IF mehrmals ausgeführt?

Verfasst: 02.04.2007 10:06
von konne
weisnet hat geschrieben:Was ist eine If Schleife?
Ich kenne nur for, while, etc? Seit wann wird ein gewönnliches IF mehrmals ausgeführt?
Da hat wohl jemand die Weisheit mit Löffel gefressen.
Dann eben if-Bedingung - aber sonst ändert sich nichts.
Dennoch vielen Dank für deine geistreiche und Frage beantwortende Anmerkung.