GET Variable wird ignoriert?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
frieder
Mitglied
Beiträge: 836
Registriert: 06.03.2004 21:36
Wohnort: Gifhorn

GET Variable wird ignoriert?

Beitrag 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...)
Mit freundlichen Grüßen
Frieder
Ex-1. April Admin von phpBB.de :D
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag 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
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
frieder
Mitglied
Beiträge: 836
Registriert: 06.03.2004 21:36
Wohnort: Gifhorn

Beitrag 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 ;) )
Mit freundlichen Grüßen
Frieder
Ex-1. April Admin von phpBB.de :D
Benutzeravatar
jue
Mitglied
Beiträge: 14
Registriert: 14.03.2004 22:20
Wohnort: Wuppertal
Kontaktdaten:

register_globals oder spezieller Forum Code

Beitrag 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!!!
Benutzeravatar
Fabse
Mitglied
Beiträge: 1401
Registriert: 02.06.2003 15:10
Wohnort: Klagenfurt
Kontaktdaten:

Beitrag 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
Dave
Mitglied
Beiträge: 2085
Registriert: 25.05.2003 15:03
Wohnort: Wuppertal

Beitrag 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:
Benutzeravatar
jue
Mitglied
Beiträge: 14
Registriert: 14.03.2004 22:20
Wohnort: Wuppertal
Kontaktdaten:

Setzen von register_globals auf off in common.php

Beitrag 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
Benutzeravatar
konne
Mitglied
Beiträge: 250
Registriert: 26.08.2004 15:30
Kontaktdaten:

Beitrag 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?
weisnet
Mitglied
Beiträge: 81
Registriert: 07.03.2005 20:45

Beitrag 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?
Benutzeravatar
konne
Mitglied
Beiträge: 250
Registriert: 26.08.2004 15:30
Kontaktdaten:

Beitrag 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.
Antworten

Zurück zu „Coding & Technik“