Pfadproblem

exhubiranta

Mitglied
Hallo allerseits,

vorausgeschickt: ich kenn mich mit php nicht gut aus und das Script hat ein Bekannter geschrieben, den ich nicht mehr fragen kann. Ich hatte ursprünglich in einer normalen Website mit php den Inhalt eines Gästebuches eingebunden. Das Gästebuch war eigentlich mehr als eine Kommentarfunktion gedacht, d.h. vorher stehen Inhalte von mir. Der Ordner "gb-thema" steht im Hauptverzeichnis, es ist darin die Datei index.php, newentry.php und andere Ordner (inc, content, admin) enthalten. In der index.php sind also die Inhalte von mir und folgender Code zur Einbindung des Gästebuchs an der entsprechenden Stelle:

PHP:
<?php
		$test = new text_gb();
	?>

Die Datei index.php fängt mit folgendem Code an:

PHP:
<? 
	include("inc/cache_header_inc.php");
	include("inc/settings.php");
	
	class text_gb {

		function text_gb() {
			$this->entrys = array();
			$this->wholelist = 0;
			
			$this->generate_newentry_button();
			$this->get_file_content(activefile);
			$this->shorten_list();
			$this->init_list();
			$this->render_sitelinks();
		}

		function generate_newentry_button() {
			echo "<p><input name=\"act_newentry\" type=\"button\" onClick=\"window.open('newentry.php?act_newentry=true','newentry','width=450, height=670, left=50, top=50, scrollbars=no, status=no, toolbar=no, menubar=no');\" value=\"Neuen Eintrag erstellen\"></p>";
		}
.....

Was mein Problem ist: Ich möchte meine HP grundlegend umbauend und die Inhalte von index.php in ein CMS bringen. Aber da es ein einfaches CMS ist, brauche ich für jede Unterseite eines. Der Ordner "thema", in dem das CMS enthalten ist, hat auch einen Ordner content und die Datei index.php, die sich aber in Aufbau, Funktion und Inhalt von meiner ursprünglichen index.php unterscheidet. Also kann ich beide Inhalte nicht in einen Ordner tun. Nun habe ich das Problem, dass ich die Seite im CMS mit dem Gästebuch verbinden will. So geht's aber nicht:

PHP:
<? 
	include("http://www.meinewebsite.de/gb-thema/inc/cache_header_inc.php");
	include("http://www.meinewebsite.de/gb-thema//inc/settings.php");
	
	class text_gb {
		function text_gb() {
			$this->entrys = array();
			$this->wholelist = 0;
			
			$this->generate_newentry_button();
			$this->get_file_content(activefile);
			$this->shorten_list();
			$this->init_list();
			$this->render_sitelinks();
		}
		function generate_newentry_button() {
			echo "<p><input name=\"act_newentry\" type=\"button\" onClick=\"window.open('http://www.meinewebsite.de/gb-thema/newentry.php?act_newentry=true','newentry','width=450, height=670, left=50, top=50, scrollbars=no, status=no, toolbar=no, menubar=no');\" value=\"Neuen Eintrag erstellen\"></p>";
.....

Das Popup für das Formular zum Eintragen geht ohne Probleme auf, aber die Einträge des Gästebuchs erscheinen nicht auf der Seite.

Ich vermute auch, dass im hinteren Teil des php-Codes noch was faul ist:

PHP:
	...	
		function render_sitelinks() {
			$temp = $this->wholelist / maxlistlength;
			if ($temp > 1) {
				$temp = round($temp) + 1;
				echo "Seiten: ";
				for ($i=1; $i<=$temp; $i++) {
					$t_next = ($i-1) * maxlistlength;
					echo "<a href=\"index.php?start={$t_next}\">{$i}</a> ";
				}
			}
			
		}
	}
?>

Damit ihr was zu sagen könnt, muss ich euch das ganze Script schicken oder könnt ihr mir auch so helfen? Wie muss ich den Code setzen?

Danke für eure Mühe. Falls ihr was nicht versteht, bitte fragen.

Viele Grüße
exi
 
Zuletzt bearbeitet:
Moin exi,

folgendes funktioniert nicht:
Code:
include("http://www.meinewebsite.de/gb-thema/inc/cache_header_inc.php");
    include("http://www.meinewebsite.de/gb-thema//inc/settings.php");

wenn du ein entferntes PHP-Skript inkludest(und das tust du, indem du einen Pfad mit http:// am Anfang verwendest), dann wird der PHP-Code in diesem entfernten Skript nicht im Kontext des Skriptes verarbeitet, in welches es eingebettet ist, sondern solo für sich auf dem "entfernten" Server.

Es spielt dabei auch keine Rolle, dass es ein und derselbe Server ist, auf dem sich alles befindet....steht ein http:// am Anfang des Pfades, ist es für PHP eine Anfrage an einen fremden Server über das HTTP-Protokoll.

Bei einem Pfad ohne http:// ist es eine Operation im Dateisystem des Servers.

Also...um mein Geschwafel auf den Punkt zu Bringen:-)
Verwende beim includen einen Pfad ohne http://

Wie dieser zu Lauten hat, hängt davon ab, wo sich das Verzeichnis /gb-thema aus Sicht des Skriptes befindet, in das die beiden Dateien inkludet werden sollen.
 
Zuletzt bearbeitet:
Hallo und danke schon mal,

den Pfad habe ich so probiert, weil es anders auch nicht ging. Ich habe es vorher so gemacht:

PHP:
    include("../../../gb-thema/inc/cache_header_inc.php");
    include("../../../gb-thema/inc/settings.php");

Diesen Pfad ermittelte ich mithilfe der Einbindung eines Fotos, weil ich dann in Golive lesen kann, wie der Pfad zum Foto geht und das kann ich dann auf das andere übertragen. Auch die newentry.php ließ sich mit dem Pfad aufrufen, das klappte; wieso klappt es dann mit dem Script nicht?

PHP:
echo "<p><input name=\"act_newentry\" type=\"button\" onClick=\"window.open('../../../gb-thema/newentry.php?act_newentry=true','newentry','width=450, height=670, left=50, top=50, scrollbars=no, status=no, toolbar=no, menubar=no');\" value=\"Neuen Eintrag erstellen\"></p>";

Da das Script eigentlich im template.htm (Ordner im Hauptverzeichnis "template", Unterordner "muster", Datei darin template.htm) eingebunden ist, probierte ich aus, ob es was bringt, wenn man das Script so einbindet, als ob es direkt in der index.php wäre:

PHP:
    include("../gb-thema/inc/cache_header_inc.php");
    include("../gb-thema/inc/settings.php");

Bringt aber auch nichts. Muss ich vielleicht da, wo die Punkte sind ../.. was ausschreiben, bloß was? Isses das?

Viele Grüße
exi
 
Zuletzt bearbeitet:
Anstatt alle möglichen Pfade zu Probieren, könntest du deine Ordnerstruktur Posten, aus der herausgeht, wo sich die zu inkludenden Dateien und wo sich die Datei befindet, welche vom Browser aufgerufen wird(das muss nicht gezwungenermaßen die sein, in der die include()-Anweisungen stehen) befindet ;).
 
Hallo Sven,

hier ist der Aufbau:

> gb-thema
>> admin
>> content
>> index.php
>> newentry.php
>> inc
>>> cache_header_inc.php
>>> settings.php


> thema
>> cms
>> content
>> images
>> index.php
>> template
>>> muster
>>>> images
>>>> stylesheet.css
>>>> template.htm

In template.htm ist der Code eingebunden, den ich schon gepostet habe.
In gb-thema ist das Script für das Gästebuch. Wenn ich http://www.website.de/thema/ aufrufe, komme ich auf die index.php, wo Inhalt der Seite & Gästebuchinhalt zusammenkommen.

Viele Grüße
exi
 
Dann wäre es so, wie du es am Ende deines vorrangegangenen Posting geschrieben hast, korrekt:
PHP:
    include("../gb-thema/inc/cache_header_inc.php");
    include("../gb-thema/inc/settings.php");

Schreibe mal kurz ganz am Anfang einer der beiden o.g. Dateien folgendes hin:

PHP:
die('includen klappt');
und rufe die index.php auf...um zu sehen ob etwas inkludet wird ob es an etwas anderem liegt.
 
Hallo Sven,

wenn ich also in der template.htm jetzt schreibe:

PHP:
include("../gb-thema/inc/cache_header_inc.php");
include("../gb-thema/inc/settings.php");
die('includen klappt');

dann passiert folgendes: Wenn ich auf http://www.website.de/thema gehe, kommt nur eine weiße Seite, wo oben links "includen klappt" steht. Also klappt. Ich dachte aber dran, dass diese Zeile auftauchen sollte, wo die Gästebucheinträge kommen sollten.

Wenn ich den Code aber hier eingebe:

PHP:
<?php
$test = new text_gb();
die('includen klappt');
?>

kommt beim Aufruf von http://www.website.de/thema zwar die Meldung unterhalb des Eintrag-Buttons, schmeißt aber den ganzen Webseiten-Aufbau durcheinander, siehe Anhang. Zumindest erzeugt er den Eintragsbutton, also muss ja schon mal was funktionieren. Warum er die Einträge (die in content vorhanden sind!) nicht bringt, ist die Frage.

Im Anhang auch eine Simulation, wie es aussehen soll.

Hilft das weiter?

Viele Grüße
exi
 

Anhänge

  • vorstellung.jpg
    vorstellung.jpg
    33,4 KB · Aufrufe: 10
  • sosiehtsaus.jpg
    sosiehtsaus.jpg
    20,9 KB · Aufrufe: 8
Zuletzt bearbeitet:
Nochmal...

hatte es falsch verstanden. Als ich den die-Befehl in cache_header_inc.php und
settings.php schrieb, kam jeweils oben rechts in der weißen Seite "includen klappt". Die Dateien sind schon richtig verbunden, aber trotzdem geht's nicht.

Viele Grüße
exi
 
Nun ja, da steht nichts aus dem 1-2-3 und dem Button, mehr ist aus deinem bisher geposteten Code auch nicht ersichtlich, was verursachen könnte, dass da etwas stehen könnte.

Welche Funktion für die Ausgabe der Einträge zuständig ist, müsstest du schon herausfinden.
 
Zuletzt bearbeitet:
Zurück