WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik


Homepage und Webhosting-Forum

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.


Forum » PHP & MySQL » Problem mit Unterverzeichnis und PHP Include » Antworten
Benutzername:
Passwort: Passwort vergessen?
Inhalt der Nachricht: Fett | Kursiv | Unterstrichen | Link | Bild | Smiley | Zitat | Zentriert | Quellcode| Kleiner Text
Optionen: Emailbenachrichtigung bei Antworten
 

Problem mit Unterverzeichnis und PHP Include
von Ori
Die Nacht der lebenden Threads.

Davon abgesehen, sollte der Schnipsel insgesamt so lauten:
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8:
if ( array_key_exists('page', $_GET) && file_exists( $_GET['page'] ) )
{
   include($_GET['page']);
}
else
{
   include('startseite.php');
}
von Xeridar
<?php
if(!isset($_GET['page'])) {
$page = 'startseite.php';
} else {
$page = $_GET['page'];
}
?>
<?php include($page); ?>


SCHLIMMER FEHLER!!!

Die Seite hacke ich innerhalb von 30 Sekunden über ein remote include und hab dann Vollzugriff auf deinen Server.

Du musst vorher per file_exists überprüfen ob die Datei lokal bei dir existiert.
von raiserle
wwwroot?
die einzige var die ich da kenne ist $_SREVER['DOCUMENT_ROOT']
und diese kann dabei auch nicht helfen.
sie gibt jediglich den ordner wieder, woher die domain kommt.

angenommen unix
/home/raiserle <- das ist der docomentroot von der domain raiser-web.dyndns.org

wenn ich nun einen weiteren ordner anlege
/home/raiserle/test und in diesem eine datei namens test.php und dort wiederum dirn scheibe
echo $_SERVER['DOCUMENT_ROOT'];
dann wird mir das script /home/raiserle wiedergeben.

also man sieht, das nützt für die ordnerstruktur zum includen gar nix.

damit vielleicht es noch etwas verständlicher wird
wenn ich nun in demordner /home/raiserle/test
die datei test.php
so aussehen lasse
<?php
include "config.inc.php";
?>
diese aber in /home/raiserle liegt, wird es zu einem fehler führen
also muss man
include "../config.inc.php";
scheiben.

was ist aber nun, wenn in de config.inc.php wieder eine datei eingefügt wird und diese ebenfalls in /home/raiserle liegt. (inc.test.php)
man möchte meinen, das es geht, aber der schein trügt.

er wird wiederum einen fehler bringen, denn er kann die inc.test.php nicht finden und warum nicht, ... er sucht sie im ordner /home/raiserle/test
egal auch wenn ich die config.inc.php richtig in der test.php aufrufe, so befindet sich der prozess immer noch im ordner ../test und dort gibt es keine inc.test.php

und jetzt kommt vielleicht die varibale, die helfen kann.
wenn wir dieses beispiel weiter verfollgen, so sollte die config.inc.php die datei in /home/raiserle/ suchen
also includieren wir in der config.inc.php per
code von config.inc.php
include "inc.test.php"; // das original was zu einem fehler führt
include $_SERVER['DOCUMENT_ROOT']."inc.test.php"; // absolute pfadangabe und dies
//wird auch funktionieren

so damit haben wir erstmal die ordnerstruktur geschafft, aber was ist, wenn dort links drin sind...

weiter mit dem selben beispiel
angenommen in der datei inc.test.php steht
echo 'a href="test.php">TEST</a>';

dann wird der link wie follgt aussehn

http://raiser-web.dyndns.org/test/test.php
lustigerweise wird das funktioniren, da wir in dem ordner test eine test.php haben
aber was, wenn man eine test.php aus dem ordner /home/raiserle haben will.
dann wird es mit dem relativen linkt nicht mehr gehen.
der link müsste dann auch wieder absolut angegebenwerden, was aber zu sehr unerwünschten problemenn führen kann.
verlusst der session.....
also müsste der link wie follgt aufgerufen werden
echo '<a href="../test.php">TEST</a>';
jetzt würder der link richtig sein
http://raiser-web.dyndns.org/test.php

so, das solls zu erklärung gewesen sein, weil man kann für diese probleme keine LÖSUNG nennen, ausser man sagt, MACHT euch vorher gedanken, wie euer script und euer struktur aussehen soll.

gruss raiserle
von chrisbears
...dann musst Du Dir schon die Mühe machen, genau zu schreiben, was Du vorhast und was im Einzelnen nicht funktioniert und den dazu gehörigen Quelltext posten samt vorhandener Ordnerstruktur.
Ich habe ein Bisschen den Eindruck, dass Du nur Fundstücke zusammensetzt, ohne zu wissen, was da passiert (z.B. auf zwei verschiedene css verweisen). Das ist durchaus legitim, solange es funktioniert. Tauchen dann aber Probleme auf, bekommst Du die nicht in den Griff, ohne Dir die Basics anzueignen. Ich spreche da aus Erfahrung, denn ich arbeite auch gerade mit Sachen, die für meinen Kenntnisstand drei Nummern zu hoch sind und habe im PHP/MYSQL Lehrbuch erstmal die Seite 1 wieder aufgeschlagen...

Grüße,

chris
von lars25700
Ja nee ja - sorry, bin wahrscheinlich zu doof - hab aber beides probiert und es tat nicht. Vielleicht nochmal zusammensetzen?

Wäre total nett denn das würde mich interessieren. Hab schonmal was über irgendwas mit wwwroot gehört. Dass ich das als Variable setzen kann oder so etwas.

Gruß

Lars
von chrisbears
Hi!
Grundsätzlich wurde Die Frage doch schon beantwortet.
Du musst Deine Links immer von dem Ort aus referenzieren, an dem auch Deine index.php liegt, Das ist in der Regel die oberste Ebene Deines Projektes, auch wenn die Datei, die Du per include() aufrufst und die die Links enthält, ganz woanders liegt.
Das kann sehr lästig sein, zumal Du (wenn Du nicht lokal einen Webserver installiert hast) das Ergebnis erst auf dem Webserver siehst.
Probier' doch mal hiermit herum, vielleicht nimmt Dir das ein Bisschen Arbeit ab: http://de.selfhtml.org/html/kopfdaten/basis.htm#adresse

Grüße,

chris

PS: Deine Mousover sehen bei mir ganz schön zappelig aus. Versuch' mal, das mit CSS umzusetzen; ist eleganter und erspart Dir den autogenerierten Script-Kram von MM.
von lars25700
Ich hoffe, dass dieser Thread noch von jemandem gelesen wird und ebenfalls, dass mir jemand helfen kann weil ich geradezu durchdrehe ;)

Ich habe ein ähnliches Problem - will eine html-datei includen und es klappt nicht. Das Muster ist auf http://hg2.serveftp.net/irfan3/index5.php und da werden die auf der HTML-Seite aufgeführten Bilder nicht weiter gegeben. Egal was ich bisher gemacht habe es hilft nix. Die Pfade hab iach auch schon auf relativ gesetzt und sonst auch alles weitere. Vielleicht könnte mir jemand unter Angabe des Codefragments weiterhelfen? Bin noch nicht so ganz firm auf PHP. :((

Herzliche Grüße

Lars
von skc.tiddy
per $_GET zu übergeben, welche datei included werden soll, ist dazu auch noch sehr unsicher und unprofessionel.
von subjective
Du hast einen Denkfehler - die "PHP-Datei" ist ein Programme, welches verschiedenen Daten auf dem Server zusammensetzt. Der Browser bekommt davon _nichts_ mit. Dies ist ja gerade der Vorteil.

Allerdings gebe ich dir recht - URL-Parameter statt Dateinamen zu nutzen, ist ziemlich unnütz.
von anubis
aha,naja dann find ich den aufbau meiner seite unnütz.. ich mein ich hab extra der übersichtlichkeit halber mansche dinge in unterordner gelegt.. aber einfacher wär es alles in einem ordner zu haben.. also alle "php" dateien die aufgerufen werden..................hm

gibt es da nicht ne andere methode?? der seite zu sagen das sie in dem ordner bleibt "von dort aus sucht" von dem ich auch die php datei lade?!?
von Sina

Also das Ersetzen im Coder geht ja per Editor blitzschnell.

Wenn Du includst musst Du Dir das so vorstellen, als ob Du den Code in die Datei geschrieben hättest. Wenn also z. B. in der index.php steht include ("bla.php"), dann ist es so als stände der Code von bla.php in der index.php.

mfg

Sina
von anubis
hm ja könnte man meinen..aber ich habe da zB nen programm zum foto gallery erstellen..der macht mir halt alles automatisch mit vorschaubildchen etc.. und das muss ich am pc ausführen und nur noch hochladen.. und dann passten ned weil er nicht im unterverzeichnis sucht............irgendwie blöde...da kann ich vorher auch nix einstellen.......
von Philipp Gérard
Von vornherein ordentlich programmieren?
von anubis
das find ich aber ganz schön aufwendig..wenn ich jetzt jeden pfad abändern muss.. gibt es nicht eine andere lösung..den aktuelle Pfad in das Unterverzeichnis zu wechseln
von subjective
Du setzt die Seite auf dem Server zusammen. Der Browser hat nur die Pfadinformation der aufgerufenen Datei. Du mußt alle Pfade relativ dazu angeben.
von anubis
wie? das is richtig.. aber ich will doch das in der php datei die includet wurde die bilder angezeigt werden wenn ich die datei direkt aufrufe im explorer funktioniert sie ja ...aber nicht über index.php?page=unterverzeichnis/datei.php
von HoRnominatoR
ja, das ist richtig.
von anubis
Hi!

Ich möchte eine PHP Seite in einem Unterverzeichnis in eine vorhandene PHP Seite einfügen, das ganze aber ohne Frames.

Mit dem include Befehl funktioniert dies auch aber das Problem dabei ist das ja das ja der aktuelle Pfad nicht in das Unterverzeichnis wechselt und somit bei der eingefügten Seite die Links nicht funktionieren bzw. Bilder nicht angezeigt werden können.

in meiner index.php steht das:
<?php
if(!isset($_GET['page'])) {
$page = 'startseite.php';
} else {
$page = $_GET['page'];
}
?>

und wo ich die neue seite einfügen will das:
<?php include($page); ?>

und meine hyperlinks lauten:
index.php?page=unterverzeichnis/datei.php

Nach oben