Normale PHP Verlinkung funktioniert nicht!

Onkel-Timo

Mitglied
Hi Leute,

habe ich was vergessen oder einfach nur einen Fehler gemacht?

PHP:
<font size="2" face="Verdana, Arial"><a href="index.php?content=home"><b>Home</a></font><br>
<font size="2" face="Verdana, Arial"><a href="index.php?cmd=news"><b>News</a></font><br>
<font size="2" face="Verdana, Arial"><a href="index.php?content=martin"><b>Martin</a></font><br>
<font size="2" face="Verdana, Arial"><a href="index.php?content=music"><b>Music</a></font><br>
<font size="2" face="Verdana, Arial"><a href="index.php?content=rollenspiele"><b>Rollenspiele</a></font><br>
<font size="2" face="Verdana, Arial"><a href="index.php?content=links"><b>Links</a></font><br>

und

PHP:
<?PHP

if(isset($content))
{
$file = "content/".$content.".htm";
include($file);
}
?>

Ich verzweifel hier vor, die Datein liegen alle im Ordner "content" auf dem server!

Was könnte falsch sein


Danke shconmal
 
Fehler nummer 1: register_globals in der PHP.INI deaktivieren.
Ist es nicht aktiviert würde sich dein schlechter Stil auch umsetzen lassen. (icht böse gemeint, nur konstruktive Kritik).
Ist dieser Parameter aktiviert, hat das zur Folge das z.B. der Parameter test der übergeben wird als Variable $test im Script vorhanden ist. So wie du es mit content versuchst. Das birgt a) Risiken und ist b) schlechter Stil, da es dafür die globalen Arrays $_POST, $_GET und $_REQUEST gibt.

Dies heisst konrekt das du in diesem Fall mit $_GET auf deine Variablen zugreifen musst, da sie per GET übermittelt werden.
Würdest du ein Formular abschicken und die Methode Post verwenden, musst du die Variablen mit $_POST auslesen. Kann es sein, dass Variablen sowohl per POST als auch GET ankommen, mit $_REQUEST, da es die Kombination von $_POST und $_GET ist.

Nun der neue Code:

PHP:
<?php

if(isset($_GET['content']))
{
$file = "content/".$content.".htm";
include($file);
}
?> 

//Folgendes wäre aber kürzer und würde einen Fehler vermeiden, wenn die Datei nicht existiert, falls einer am Parameter rumspielt:

<?php

$file = "content/".$_GET['content'].".htm";
if( is_file($file) )
    require($file); //Bricht im vgl. zu Include ab, wenn die Datei nicht eingebunden weraden kann, include gibt nur eine warning
else
    die("Datei existiert nicht oder was auch immer für eine Fehlermeldung");
?>
 
Tja, verrate doch mal, was genau passiert. Kommt ne Fehlermeldung oder passiert einfach nur nichts?

Dann kannste einmal probieren, anstatt

PHP:
if(isset($content))...

PHP:
if(isset($_GET['content']))...

zu benutzen. Und wenn das auch nicht geht, dann ist es IMMER eine gute Idee, sich mal selber ein paar Testausgaben zu erstellen. So kannste Dir zum Beispiel mal mit echo($_GET['content']) den Wert von content ausgeben lassen und schauen, ob der angekommen ist. usw...usf...

Edit: Ooooops, sind ja alle ganz eifrig hier...
 
danke, und jetzt habe ich noch ne frage, wenn ich jetzt auf die Seite drauf gehe, dann erscheint sofort 'Die Datei existeriert nicht', Home.htm soll ja auch angezeigt werden wenn die seite geöffnet wird, fehlt da ein befehl?

wie gesagt, bin ein absoluter Newbie im PHP :) Hätte dann auch noch eine Frage...

Folgendes: Hier wenn man auf Rollenspiele klickt kommen in der Mitte 3 weitere Verlinkungen die im gleichen Fenster erscheinen sollen, da weiß ich garnicht wie ich das angehen soll!?

Aber danke nochmal für die Hilfe bis jetzt, ist sehr gut =)
 
Zurück