sven32
Goto Top

PHP - Automatisierte Navigationsleiste

Hallo zusammen,

ich habe vor einigen Wochen mal mit der Automatisierung einiger Homepagebereiche
begonnen und hatte mir vorgenommen endlich mal eine automatisierte Navigationsleiste
für meine verschiedenen online Projekte zu erstellen.

Grundsätzlich war die Idee, dass per PHP ein Ordner
[ nennen wir ihn mal Subpages ]
ausgelesen wird und die vorhandenen PHP Dateien verlinkt werden.
Bis dahin habe ichs auch hinbekommen

Hier das Ergebnis [ Script 1 ]

<html>

<head>

<title>Script 1</title>

</head>

<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">  

<table border="0" width="100%" cellspacing="0" cellpadding="0" height="100%">  
<tr>
<td bgcolor="#666666" height="50" align="center">  
		
<?php
$verzeichnis = openDir("Subpages");  
while ($file = readDir($verzeichnis)) {
if ($file != "." && $file != "..") {  
if (strstr($file, ".php")) {  
$name = explode(".", $file);  
echo "<a style='color:#FFFFFF; text-decoration: none;' href=\"Subpages/$file\">$name</a>\n";  
}
}
}
closeDir($verzeichnis);
?> 
		
</td>
</tr>
<tr>
<td bgcolor="#F0F0F0"></td>  
</tr>
</table>

</body>

</html>

Allerdings wollte ich, wenn ich nun schon mal dabei bin noch
die Möglichkeit automatische Includes hinzufügen,
ein Script dafür habe ich auch

Folgendes [ Script 2 ]

<html>

<head>

<title>Script 2</title>

</head>

<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">  

<table border="0" width="100%" cellspacing="0" cellpadding="0" height="100%">  
<tr>
<td bgcolor="#666666" height="50" align="center">  
		
<a class="link" href="Script 2.php?id=page1">Page1</a>  
<a class="link" href="Script 2.php?id=page2">Page2</a>  
		
</td>
</tr>
<tr>
<td bgcolor="#F0F0F0">  


<?php

switch($_GET['id']) {  
default:
include('Subpages/Page1.php');  

break; case "page2":  
include('Subpages/Page2.php');  

}
?>

</td>
</tr>
</table>

</body>

</html>

Nun hatte ich vor das ganze zu verbinden,
leider ist es mir bisher noch nicht "erfolgreich" gelungen, diese Idee umzusetzen,
hat jemand von euch vielleicht eine Idee wie ich vorgehen kann.

Content-Key: 273515

Url: https://administrator.de/contentid/273515

Printed on: April 19, 2024 at 14:04 o'clock

Member: Arano
Solution Arano Jun 02, 2015 updated at 17:11:26 (UTC)
Goto Top
Hallo Sven,

Solch ein Include musst du aber auch absichern !
Sonst wäre es möglich über die Manipulation der Links an z.B. Systemdateien, Passwörter, Config-Files zu kommen.
Stelle also sicher, das nur die Dateien includiert werden, die auch erwünscht sind !

Na im Prinzip, musst du doch nur die generierten Links vom ersten Script so anpassen, das sie nicht mehr die Datei selber aufrufen sondern dessen Namen als Parameter weitergeben.

Bedenke, das die so includierten Dateien kein HTML.-Grundgerüst mehr enthalten dürfen, da diese nun in der ersten Datei steht. Somit haben alle "Subpages" das gleiche Grundgerüst / Design

Leerzeichen in Datei- und Verzeichnisnamen solltest du NIEMALS verwenden ! funktioniert zwar manchmal, aber IMMER FUNKTIONIEREN tut es ohne.
Genau so Groß- und Kleinschreibung, da vertippt man sich gerne und sucht ewig nach dem Fehler - nervige Sache das *g*

Folgendes ist NICHT getestet, einfach getippt !
Fehler dürfen als "Übung" selber behoben werden :-P

<!DOCTYPE>
<html>
  <head> ... </head>
  <body>


<?php

$SUBDIR = './subpages';  


// wenn eine seite aufgerufen wird, includiere sie
if( isset($_GET['page']) )  
{
    // zumindest überprüfen ob die gerufenen Seite in unserem Verzeichnis als Datei existiert !
    $strFilepath = $SUBDIR.'/'.$_GET['page'].'.php';  
    if( file_exist($strFilepath) )
    {
        // seite scheint zu existieren, also kann includiert werden.
        include $strFilepath;
    }
    else
    {
        // falsche aufrufe werden einfach mit nem 404 quittiert
        header("HTTP/1.1 404 Not found");  
        exit;
    }
}
// wenn KEINE seite aufgerufen wird, zeige linkliste
else
{
    // lese verzeichnis aus und generiere Links !
    $resVerz = opendir( $SUBDIR );
    if( is_resource($resVerz) )
    {
        while( $strFile=readdir($resVerz) )
        {
            if( '.'==$strFile || '..'==$strFile || '.php'!=substr($strFile,-4) )  
                continue;
            
            $strFilename = substr( $strFile, 0, -4 );
            echo '<a href="'.$SERVER['PHP_SELF'].'?page='.$strFilename.'">'.$strFilename.'</a><br>';  
        }
    }
    else
    {
        echo 'Oops... Verzeichnis kann nicht gelesen werden !'  
    }
}



?>


  </body>
</html>


~Arano
Member: Sven32
Sven32 Jun 02, 2015 updated at 17:11:08 (UTC)
Goto Top
Nabend Arano,

erst einmal vielen Dank für deine Hilfe und vor allem für die gute Dokumentation,
es ist meiner Meinung nach immer gut wenn man etwas nicht nur kopieren sondern auch
nachvollziehen und verstehen kann.

Das mit dem HTML-Grundgerüst ( bzw. mit den entsprechenden Unterseiten ) hatte ich schon für mein bisheriges Script angepasst, aber vielen Dank für die anderen Tipps, da werde ich auf jeden Fall in Zukunft verstärkt drauf achten.

Mit freundlichen Grüßen
Sven