• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Include Problem

Status
Für weitere Antworten geschlossen.

Ricc220773

Neues Mitglied
Ich includiere in meine index.php den Hauptbereicht, das funktioniert tadellos. Nun möchte ich eine test.php aus einem untergeordneten Ordner includieren und es funktioniert nicht. Varianten wie ../Ordner/test funktionieren nicht.

Include ist folgendermaßen aufgebaut:

Link:
Code:
<a href="index.php?datei=..gb/test">Gästebuch</a>
Aufruf:
Code:
<?php
            if(!isset($_GET['datei'])) 
              {
              include 'Start.php';
              }
            else include basename($_GET['datei']) . '.php';
            ?>
Es wird immer nur nach der Datei im Hauptordner gesucht und natürlich nicht gefunden.
Was mache ich falsch?
 
Für einen untergeordneten Ordner ist der relative Pfad

Code:
gb/test

Was du versucht hast ist ein Zugriff auf einen parallelen Ordner.
 
Das habe ich schon probiert, auch /gb/test. Es kommt jedesmal die Fehlermeldung:

Code:
[B]Warning[/B]:  include(test.php) [[url=http://function.include]webhosting24 - Login[/url]]: failed to open stream: No such file or directory in [B]/home/www/web159/html/hausbau-isorast/index.php[/B] on line [B]113[/B]

[B]Warning[/B]:  include(test.php) [[url=http://function.include]webhosting24 - Login[/url]]: failed to open stream: No such file or directory in [B]/home/www/web159/html/hausbau-isorast/index.php[/B] on line [B]113[/B]

[B]Warning[/B]:  include() [[url=http://function.include]webhosting24 - Login[/url]]: Failed opening 'test.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in [B]/home/www/web159/html/hausbau-isorast/index.php[/B] on line [B]113[/B]
 
Gerade erst gesehen: dadurch

Code:
basename($_GET['datei']) . '.php';

bleibt von

gb/test

nur

test

übrig. Folglich versucht er eine Datei "test.php" in dem aktuellen Verzeichnis zu includen. Geht natürlich nicht wenn diese nicht existiert.

Btw. solltest Du aber diese Methode dringend überdenken, da die ziemlich unsicher ist. Hilfestellungen dazu findest Du im Forum.
 
Wenn der Ordner untergeordnet ist:
Code:
include "./Ordner/Datei"

Der Ordner steht also im selben Verzeichnis wie Dein Skript.
Der erste Punkt ("./Ordner") bedeutet "aktuelles Verzeichnis".
 
Naja, auch daraus kann man was lernen. Codeschnipsel von irgendweoher zusammensuchen muss irgendwann in die Hose gehen, wenn man sie nicht versteht. Jetzt mal so ganz neutral betrachtet, ist auch in der Aussage eine Hilfe drin.
 
....aber nur so kann man lernen.

Nein. gerade so kann man nichts lernen. Wenn man einfach so Code zusammensucht, lernt man rein garnichts. Du pappst alles zusammen, probierst aus und wenn es funktioniert, bist du glücklich. Wenn du wirklich was lernen willst, schau dir ein entsprechendes Tutorial an und schreibe deine Codes selber.
 
Nein. gerade so kann man nichts lernen.

Also ich für mich lerne, indem ich Codeschnipsel oder auch anderes nehme und versuche es für mich anzupassen. Dadurch verstehe ich wie sie funktionieren. Was ist daran falsch. Threadi und Kratzbaum haben versucht zu helfen und daraus kann man lernen.

In etlichen Beiträgen hier wird zum Bau einer HP empfohlen ein fertiges Layout zu nehmen und es anzupassen um daraus zu lernen. Einerseits wird diese Lernmethode hier angepriesen und in meinem Beispiel für falsch erklärt.

Desweiteren funktioniert keine der hier genannten Beispiele (trotzdem Danke für die Hilfe). Obwohl von den Helfern wahrscheinlich einer so und einer so gelernt hat. Welche Lernmethode ist da nun richtig???
 
Hättest du wirklich versucht aus den Codeschnipseln zu lernen, hättest du dir erstmal angeschaut was basename() macht. Das hast du scheinbar nicht, weswegen dein Code nicht funktioniert. Das hat threadi dir übrigens versucht zu zeigen, scheinbar hast du den Beitrag ignoriert weil er keine fertige Lösung bot...


Im übrigen habe ich dir einen Link gegeben, der eine gute Methode [Whitelist] zeigt, den hast du dir scheinbar nicht angeschaut...
 
Nur weil ich nicht die Zeit habe (Schichtarbeit, Hausbau, Familie) alles sofort umzusetzen, heißt das noch lange nicht, dass ich die Beiträge nicht lese und angebotene Links nicht ansehe. Das unterstellst Du nur.

Ich habe threadis Beitrag nicht ignoriert. Falls es Dir entgangen ist, habe ich danach nicht weiter nachgefragt, sondern wollte wie empfohlen die Methode überdenken und mich über andere Möglichkeiten informieren.

Nur weil Du (wahrscheinlich) mehr Zeit hast Dich mit dem Thema zu beschäfftigen, musst Du anderen nicht unterstellen, dass sie sich nur fertiges zusammensuchen. Ich finde Dein Verhalten arrogant und für ein Forum, welches helfen soll, unpassend. Wozu gibt es ein Forum, wenn man bei einer Frage runtergemacht wird?
In meinem beantworte ich auch Fragen, die man sicher irgendwo erlesen könnte. Im Gegensatz zu Dir, freue ich mich, wenn ich anderen helfen kann.
 
Also ich für mich lerne, indem ich Codeschnipsel oder auch anderes nehme und versuche es für mich anzupassen. Dadurch verstehe ich wie sie funktionieren. Was ist daran falsch.
Prinzipiell nichts. Aber Du läufst Gefahr, die Zusammenhänge nicht zu verstehen. Beispiele sind außerdem nur selten an die Voraussetzungen angepasst, die bei Dir vorherrschen. Aus Codeschnipseln lernen ist prinzipiell der schnellere Weg, man muss hinterher aber einiges nachholen.

In etlichen Beiträgen hier wird zum Bau einer HP empfohlen ein fertiges Layout zu nehmen und es anzupassen um daraus zu lernen.
Das kann funktionieren, kann aber auch dazu führen, dass Dein Ergebnis zwar funktioniert, aber inhaltliche Mängel aufweist, die Dir niemand erklärt hat.

Welche Lernmethode ist da nun richtig???
Alle die, die hinterher zum richtigen Ergebnis führen :-)
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben