Problem mit include (PHP 4.1 -> 5.x)

xxxTargetxxx

Grünschnabel
Hallo,

habe bis jetzt immer alles über die Suchfunktion gefunden und auch schon mehrere Varianten probiert, komme aber leider nicht auf mein Ergebniss.

Zum Thema:

Bisher habe ich meine Templates wie folgt über den include Befehl geladen:

<table><tr><td>
<a href="index.php?navi=xy">XY</a>
<a href="index.php?navi=za">ZA</a>
</td></tr>
<tr><td>
<?
if ($navi == "" or $navi == "xy") {include ("pages/xy.php");}
elseif ($navi == "za") {include ("pages/za.php");}
else {include ("pages/cd.php");}
?>
</td></tr>
</table>

Mein Problem ist, dass seit dem ich meinen Server auf PHP 5 updaten lassen habe dieser Befehl so nicht mehr funktioniert. Es wird nun nur noch der erste include Befehl getätig, aber wenn man nun auf ZA klicken würde, würde diese nicht inlcudet werden.

Hab auch schon folgendes probiert:

<?
define("DPFAD", "/mnt/web6/xxxx/xxxxxxxxx/htdocs/ppg/xxxx/");

(...)
elseif ($navi == "za") {include(DPFAD . "pages/za.php");}
?>

Funktioniert aber leider auch nicht, zumindest die Verlinkung nicht.

Hoffe ich hab mein Problem gut erklären können, danke schonmal für Hilfe!!

Gruß Target
 
Zuletzt bearbeitet:
Ich denke das Problem liegt darin, dass bei PHP5 Register Globals auf off gesetzt sind.
Probier doch mal folgendes:

PHP:
<table><tr><td>
<a href="index.php?navi=xy">XY</a>
<a href="index.php?navi=za">ZA</a>
</td></tr>
<tr><td>
<?
if ($_GET['navi'] == "" or $_GET['navi'] == "xy") {include ("pages/xy.php");}
elseif ($_GET['navi'] == "za") {include ("pages/za.php");}
else {include ("pages/cd.php");}
?>
</td></tr>
</table>
 
Danke super für die schnelle Antwort - gleich nach 6min.

Hab es gerade ausprobiert und es funtkioniert.

Kannst du mir noch kurz erläutern, warum man das nun mit $_GET umschreiben muss, bzw. "was der jetzt anders macht" und zudem hab ich öfters schon "Register Globals" gelesen, aber nie wirklich eine Antwort bekommen, was das nun endlich ist...

PS: Wie kann man den Quelltext so einbinden, find hier in dem Fenster auch nichts...
 
Das Umschreiben mit $_GET ist relativ einfach. Wenn du in der Addresszeile des Browsers z.B. stehen hast http://www.domain.de/index.php?navi=xy&bla=zz dann kannst du mit PHP die Variablen navi und bla aus der Addresszeile auslesen. Dies geschieht in diesem Fall mit $_GET.

Um die Variable navi auszulesen mit:
PHP:
$navi = $_GET['navi']
Und bei bla mit:
PHP:
$bla = $_GET['bla']

$_GET steht hierbei dafür eine Variable aus der Addresszeile auszulesen der Name der Variable kommt nach $_GET mit [] Klammern und in einfach Anführungszeichen (s. Beispiel oben)


Register Globals macht Variablen sobald sie einmal definiert worden sind überall gültig für jedes Script das auf dem Server läuft. Bei PHP5 wurde diese Option standartmäßig auf "off" gesetzt, da es eine Sicherheitslücke darstellt wenn Variablen überall, also global, verfügbar sind. Deshalb muss man in PHP5 entweder mit $_GET arbeiten oder bei Formularen bei denen z.B. Passwörter übertragen werden mit $_POST. Dazu mehr findest du im PHP Manual http://www.php.net/manual/de/language.variables.predefined.php

Wie kann man den Quelltext so einbinden, find hier in dem Fenster auch nichts...

Das versteh ich nicht so ganz? Welchen Quelltext möchtest du wo einbinden?
 
Danke, jetzt ist mir damit alles klar! Somit werde ich nun in Zukunft mit $_GET und $_POST arbeiten!

Mit "Wie kann man den Quelltext so einbinden, find hier in dem Fenster auch nichts..." meine ich, dass der Quelltext von dir in den jetztigen Beiträgen farblich dargestellt wird und in einem grauen eingerückten rahmen steht. Genaus wie das Zitat in deinem Beitrag zuvor.

Mein Beispielquelltext steht blos "lasch" im Beitrag und ist schwer zum rauslesen...

Muss nochmal ein großes Lob an diese Community ausschreiben, man findet entweder schnell ein ähnliches und vorallem behobenes Problem oder bekommt schnell Abhilfe! DANKE!!
 
Danke nun bin ich wieder schlauer gworden!

Wenn man es weiß ist es gar nicht mal mehr so schwer ;)

Werden die hier Auto-Archiviert - ansonsten CLOSE
 
Zurück