Hallo
<?php
$verzeichnis = array (
"portfolio/ordner_1/",
"portfolio/ordner_2/",
"portfolio/ordner_3/"
);if ($_GET) {
$link = $_GET["link"];
$name = $_GET["name"];
}
`$_GET`{:.language-php} ist bei Aufruf eines Skripts über einen HTTP-Request immer gesetzt. Ob `$_GET["link"]`{:.language-php} oder `$_GET["name"]`{:.language-php} gesetzt sind, ist trotzdem nicht sicher (nach dem hier vorgestellten Code).
> ~~~php
for ($zaehler = 0; $zaehler < count($verzeichnis); $zaehler++) {
> // Verzeichnisnamen extrahieren!
>
> $verzeichnisname = explode("/", $verzeichnis[$zaehler]);
$verzeichnisname
enthält nun jeweils:
$verzeichnisname[0] = "portfolio";
$verzeichnisname[1] = "ordner_1";
$verzeichnisname[2] = "";
$verzeichnisname = $verzeichnisname[1];
// Generiere Linknamen: Lösche erste 3 Zeichen und ersetze _ durch Leerzeichen
$verzeichnisname = substr(str_replace("_", " ", $verzeichnis[$zaehler]), 10, -1);
1\. Woher kommt `$verzeichnis`{:.language-php}? Sollte da nicht `$verzeichnisname`{:.language-php} bzw. `$verzeichnisname[1]`{:.language-php} (Wozu umherkopieren, wenn es auch direkt nutzbar ist?) stehen?
2\. Der Unterstrich wird durch ein Leerzeichen ersetzt (wie gewollt).
3\. Die Ursprungszeichenkette "ordner\_1" hat nur 8 Zeichen. Deine Anwendung von substr gibt aber eine Zeichenkette von Position 10 bis zum vorletzten Zeichen zurück, die es nicht geben kann, da die Zeichenkette dafür zu kurz ist.
4\. Deine Aufgabe "Lösche erste 3 Zeichen und ersetze \_ durch Leerzeichen" würde bei richtiger Anwendung "ner\_1" ausspucken. Ist \*das\* gewollt?
> ~~~php
else {
> // Link zum Verzeichnis setzen
> echo '<li> ';
> echo "<a href=\"" . $_SERVER["PHP_SELF"] . "?link=$verzeichnisname\">";
> echo ucwords($verzeichnisname) . "</a></li>\n";
> }
> }
Benutze $_SERVER["SCRIPT_NAME"]
statt $_SERVER["PHP_SELF"]
, maskiere $verzeichnisname
im Parameterteil der URL mit urlencode
und mit htmlspecialchars
im Linktext.
echo "<li><a href="" . $_SERVER["SCRIPT_NAME"] . "?link=" . urlencode($verzeichnisname) . "">" . htmlspecialchars(ucwords($verzeichnisname)) . "</a></li>\n";
Tschö, Auge
--
Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
Terry Pratchett, "Wachen! Wachen!"
ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
Veranstaltungsdatenbank Vdb 0.3
Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
Terry Pratchett, "Wachen! Wachen!"
ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
Veranstaltungsdatenbank Vdb 0.3