PHP + verlinken bei includen......

baeckerjunge

Erfahrenes Mitglied
Ahoi,
ich habe momentan nen "Block" vorm Kopf ich komme nicht weiter....
Auf meiner hp include ich alles per PHP
hier das script......

PHP:
<?php
$action = $_GET["action"];
if (!isset($action)) { $action = "main"; }
$action = "./include/".$action.".php";
include ($action);
?>
Die Dateien werden aus dem Ordner include geholt, wie muss nun die verlinkung aussehen wenn ich im Ordner include weiter unterordner habe?

Eine normale Verlinkung auf eine Datei im Ordner include sieht so aus:

index.php?action=main

die addy http://www.baeckerjunge-online.de/index.php
 
Vielleicht index.php?action=ordner1/main

Hab allerdings keine Ahnung ob das funktioniert, da ich nicht weiß, ob der '/' irgendwie umgewandelt wird.
Wenn das der Fall ist, musst du eben für den jeweiligen Unterordner eine neue Variable festlegen (statt action).
 
splits Version sollte klappen.

Ich würde das verlinken aber nicht über GET-Variablen steuern. Denn falls jemand diese manipuliert (naja, einfach einen anderen Wert eintragen), dann kommt er vielleicht an Daten dran, die er nicht sehen sollte.

Nur so als Einwand.
 
Einfach datei.php?action=datei, und die Datei muss dann in include/datei.php existieren!

Ein Paar kleinere Sicherheitshinweise:
PHP:
<?php
/* hier könntest du beipielsweise einen Pfad abfiltern, wodurch nur Dateinamen includet werden können, der einzige Nachteil, du kannst keine Unterordner nutzen */
$action = basename($_GET['action']); 
if (!isset($action) || empty($action) || !file_exists($action)) {
    $action = 'main';
} 
include('./include/' . $action . '.php');
?>
Ein weiterer Ansatz wäre folgender:
PHP:
<?php
/* in das Array kommen die Dateinamen die gestattet werden sollen */
$allowed = array('ordner/datei');

$action = $_GET["action"]; 
if (!in_array($action, $allowed)) {
    die('Zugriff verweigert!');
}

if (!isset($action) || empty($action) || !file_exists($action)) {
    $action = 'main';
} 
include('./include/' . $action . '.php'); 
?>
 
Jo, die Methode mit dem Array finde ich auch am Besten. So mach's ich immer:
PHP:
<?php
    $seiten = array();
    $seiten['news'] = "include/news.php";
    $seiten['info'] = "include/info.php";
    //...
?>
Danach wird über die "index.php" geprüft ob die übergebene "action" erlaubt ist, wenn das der Fall ist, wird die Datei included:
PHP:
<?php
    if(isset($_GET[action]) AND isset($seiten[$_GET[action]])) {
        include($seiten[$_GET['page']]);
    }
    else {
        include($seiten['news']);
    }
?>
 
Zuletzt bearbeitet:
Du könntest aber auch eine Funktion erstellen wie diese:

PHP:
function inc($inc_link)
{
        $inc_link=str_replace("http://","",$inc_link);
        $inc_link=str_replace("ftp://","",$inc_link);
        $inc_link=str_replace("www.","",$inc_link);
        $inc_link=str_replace("..","",$inc_link);
        return $inc_link;
}

$action=inc($_GET['action']);

if(@file_exists($action))include($action);
else echo "Datei Existiert nicht!";
dies wäre auch eine möglichkeit.
 
Eure Ideen sind gut davon unabhängig habe ich mal nachgeacht *g*

Könnte ich nicht eine blub.php im Ordner include hinterlegen in welcher dann
die Hauptseite aus dem Unterordner per header eingefügt wird?
 
Sicher...
Aber ich versteh nicht so ganz wo der Nutzen dabei ist. Du brauchst ja trotzdem eine zweite Variable für den Unterordner, oder wie hast du dir das vorgestellt?
 
Also nach einer längeren kreativen Pause habe ich mal was versucht.... :)

ich möchte auf meiner HP ein Bildergallerisscript was in einem Unterordner ist includen.

ich habe jetzt im "include" Ordner die

galerie2.php
PHP:
<table width="780" height="350">
<tr>
<td width=300 valign="top">
<table width=300>
<tr>
<td width=100>
<table>
<tr><td><a href="fotos/galerie1/index.php"><img src="./include/bilder/tobiklein.jpg" width="100" height="60" alt="Tobi Privat" border="0"></a></td></tr>
</table>
</td>
<td width=200>
<table>
<tr><td height="60"><a href="#">Tobi Privat</a></td></tr>
</table></td>
</tr>
</table>
<td valign="top" width=480>
<?php require("./include/fotos/galerie2/index.php"); ?>
</td>
</tr>
</table>
Mein Problem ist jetzt dass die Bilder nicht angezeigt werden wenn ich die erste Version angucke, andererseits des Script......

bäckerjunge
 
Zuletzt bearbeitet:
Zurück