anzeige
Fragen zu php funktionen
Seite: 1 2 3 4
| Autor | Beitrag |
|
Teegee 10.03.10 - 15:42:03 Uhr |
Ich hab mal ne Testzone eingerichtet. http://verdant-meadows.com/test/index/index.php Die Ordnerstruktur sieht folgendermassen aus, wobei ich den Ordner Test als "Root" nehme. test/ mit: test/main.html test/index/ mit: index.php main.html test/index/pages mit: main.html main2.html test/index/pages/intro mit: startup.html test/index/pages/pages2 mit: main.html main2.html Alle Dateien haben folgenden inhalt: In welchem Ordner sie sich befinden ab Ordner "index", also main2.html bei test/index/pages hat folgenden Inhalt: pages/ MAIN Datei startup.html hat "STARTUP" als Inhalt. Wird ein Dokument aufgerufen das nicht exisiert erschein "Fehler". Das mit Basename scheint nun perfekt zu funktionieren, denn wenn man per index.php?file=pages2/main aufruft erscheint der Text pages/ MAIN, wie wenn man nur file=main schreiben würde. Allerdings erscheint beim Aufruf von index.php?file=intro/startup eine Fehlermeldung seitens php wieso??? Quellcode von der index.php:
|
|
SammysHP 10.03.10 - 16:24:30 Uhr |
Immer noch der gleiche Fehler. Du solltest dich nochmal mit dem Kapitel "Variablen" in php beschäftigen ![]()
_________________ www.sammyshp.de |
|
Teegee 10.03.10 - 16:35:05 Uhr |
k jetzt zeigt er mir aber beim aufruf von http://verdant-meadows.com/test/index/index.php nicht mehr STARTUP an sondern Fehler. okey problem ist gelöst. thx
|
|
SammysHP 10.03.10 - 17:24:31 Uhr |
Logisch, sie liegt ja auch im Unterverzeichnis "intro", auf das hast du keinen Zugriff mehr ![]() Denk dran: Du kannst keine Verzeichnisse über den Parameter wechseln! _________________ www.sammyshp.de |
|
Teegee 10.03.10 - 17:32:53 Uhr |
ja ne es ging ja um das includen, wenn nur index.php angegeben ist hätte eben startup angezeigt werden sollen, aber das hab ich jetzt gelöst durch !isset( anstatt !empty( und && 0 != $file) in Zeile 3
|
|
SammysHP 10.03.10 - 17:49:17 Uhr |
Vielleicht ist in der ersten if-Abfrage auch eine explizite Typenüberprüfung notwendig: !== _________________ www.sammyshp.de |
|
Teegee 10.03.10 - 17:58:39 Uhr |
Typenüberprüfung?? |
|
SammysHP 10.03.10 - 18:48:34 Uhr |
(empty($file) && 0 !== $file)
Ich weiß momentan nicht, was php bei empty() prüft. 0 müsste jedenfalls 0, '0', '', NULL sein. _________________ www.sammyshp.de |
|
Teegee 10.03.10 - 20:41:01 Uhr |
okey funktioniert so immernoch, allerdings weiss ich nicht was diese Typenüberprüfung bewirkt, da der Wert in dem Fall ja eh leer ist, und wenn er nicht leer wäre würde weiter unten überprüft werden ob die Datei vorhanden ist oder nicht. Also was macht diese nun genau?? wenn wir gleich dabei sind: Ich kämpfe gegen den gleichen Code. Aber diesmal will ich erreichen, dass er mir bei einer leeren Eingabe (index.php) das gleiche ausgibt wie bei index.php?file=main. Sprich dass die main.html als Standart-Datei festgelegt wird wenn file leer ist. Ich weiss ungefähr wie ich das machen muss und hab hier auch nen Code der das erreicht,
$file = 'pages/'.( ( ! empty( $_GET['file'] ) && strpos( $file, '..' ) === false ) ? $_GET['file'] : 'main' ).'.html';
Aber wie ich den in
einbaue hab ich nicht rausgefunden, mein bestes Ergebnis war dass er mir bei index.php einfach "nichts" angezeigt hat
|
|
Achtzig 11.03.10 - 09:49:47 Uhr |
Also Folgendes funktioniert: index.php
pages/main.html
pages/main2.html
pages/intro/startup.html
Ergebnisse: ? -> MAIN ?file= -> MAIN ?file=main -> MAIN ?file=main2 -> MAIN2 ?file=intro/startup -> STARTUP ?file=.. -> Deine Adresse wurde an meinen Anwalt weitergeleitet! ?file=xyz -> FEHLER ?file=intro -> FEHLER Nachtrag: Was ich noch sagen wollte: basename kannst Du nicht benutzen, da Du auch eine Verzeichnisangabe für startup.html benötigst und basename nur die Datei zurückgibt und die Verzeichnisangabe entfernt. |
- Obige Beiträge stellen keine Äußerung oder Meinung von Pytal oder dessen Betreiber dar -



