[PHP] Dynamisch Inhalte einbinden

Also ich habe golgendes entfernt:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

dann noch:

else {

header('HTTP/1.0 404 Not Found');

include_once('./'.$valid_sites['fehler404']);

}

und die Freizeichen im <head></head>.

Wenn ich nun auf den Link Anfragen klicke, passiert immer noch ncihts und außerdem liegt folgende Warnmeldung bei Aufruf der Seite index.php vor, wenn ich den Teil
else {

header('HTTP/1.0 404 Not Found');

include_once('./'.$valid_sites['fehler404']);

}
nicht entferne:
Warning: include_once(./) [function.include-once]: failed to open stream: No such file or directory in C:\xampplite\htdocs\stayfolk\index.php on line 40

Warning: include_once() [function.include]: Failed opening './' for inclusion (include_path='.;C:\xampplite\php\pear\') in C:\xampplite\htdocs\stayfolk\index.php on line 40

PS: Line 40 ist beii mir: include_once('./'.$valid_sites['fehler404']);
 
sicher? Ich meine ob_start unterliegt da keiner Beschränkung.
Afaik wird die Ausgabepufferung genau ab der Zeile gestartet, in der ob_start() aufgerufen wird. Somit wird die Ausgabe oberhalb nicht berücksichtigt und kann u.U. vorher an den Browser gesendet werden. Es ist ja auch möglich, verschieden Puffer zu verwenden (durch mehrmaliges Aufrufen von ob_start()) und jeden Puffer selektiv zu senden/manipulieren.

Lucky-Maxx: Kein(e) Schwein(Sau) oder anderes Säugetier hat was von entfernen gesagt. Streng dich nur etwas an und lies durch was hier steht. Nur etwas.
 
Sorry, aber ich habe nicht viel Ahnung, wie unschwer zu erkennen ist. Ich bräuchte nur schnell einie Lösung. UNd ich habe probiert das zu verstehen, was ihr gesagt habt und habe aufgrund folgendesn Postes
header() kann keine Ausgabe an den Browser senden, wenn bereits ausgaben erfolgt sind. In deinem Fall ist das das HTML und die whitespaces vor dem <?php
den Head Bereich entfernt.

Ich habe kene Ahung, was ich sonst mahcne sollte. Vielleiht könntet ihr mir ein paar präzisere Anweisungnen geben.
Danke und Gruß im Voraus.
Maxx
 
Hallo erstmal,
nun vorab, warum ich diesen alten Thread wieder rauskrame:
schon vor geraumer Zeit (Sommer 2008) habe ich diese Methode versucht anzuwenden, um geschickt und ohne Probleme, meine (HTML) Header- und Footerbereiche statisch zu lassen und immer nur variablen Inhalt einbinden zu lassen.
Nun habe ich ein Projekt, wo diese Methode von allergrößtem Vorteil wäre, nur leider bekomm ich es nicht zum Laufen.

Habe probeweise folgende Dateien erstellt:
- index.php <<< hier ist das Skript drin
- punkt1.php <<<Probeseite1
- punkt2.php <<<Probeseite1
- 404.php <<<Fehlerseite

Bevor ich jetzt was nachgesagt bekomme: Ich habe jeden einzelnen Post hier mehrmals und gründlich durchgelesen und der aktuelle Stand ist für mich etwas diffus...
...denn wenn ich das Ganze auf Funpic hochlade funktioniert es einwandfrei, auf meinem bezahlten Webspace allerdings nicht (ich habe eine .com-Domain)
Weiterhin habe ich das nochmal bei einem anderen kostenlosen Hoster hochgeladen, wo sich das gleiche Problem wie bei meiner .com Domain auftut (daher bin ich bestrebt nicht unbedingt die .com-Domain hier anzugeben, sondern den kostenlosen Hoster "CW-City")

index.php:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
 <head>
  <title>Dynamische Inhalte</title>
 </head>
 <body>
  Überschrift<br />
  <div id="menu">
   <ul>
    <li><a href="?dir=punkt1">Punkt1</a></li>
    <li><a href="?dir=punkt2">Punkt2</a></li>
   </ul>
  </div>
<?php
if(isset($_REQUEST['dir']) && !empty($_REQUEST['dir'])) {
 $direction = $_REQUEST['dir'];
} else {
 $direction = false;
}

$sites = array (
 'punkt1' => "punkt1.php",
 'punkt2' => "punkt2.php",
 '404'    => "404.php"
);

if ($direction == false) {
 $direction = $sites['404'];
}

if( isset($sites[$dir]) ) {
 include_once('./'.$sites[$dir]);
} else {
 header('HTTP/1.0 404 Not Found');
 include_once('./'.$sites['404']);
}
?>
  <div id="footer"><p>Copyright by WebmastXY</p></div>
 </body>
</html>

ob_start() und ob_end_flush() habe ich ausprobiert einzusetzen, jedoch ist mir schleierhaft wie ich die Bedingung
ob_start() muss _vor_ der ersten Ausgabe stehen
erfüllen kann, wenn doch das Skript, welches die Inhalte einbindet sich mitten in der HTML-Datei befindet. Und ich weiß nicht, ob es sinnvoll wäre, das übrige HTML wie folgt außerhalb des PHPs zu notieren, da es ja dann nicht gepuffert und somit ggf. schon an den Browser ausgegeben wird:

PHP:
<?php
ob_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
 <head>
<!-- restliches HTML bis... -->
<?php
if(isset($_REQUEST['dir']) && !empty($_REQUEST['dir'])) {
 $direction = $_REQUEST['dir'];
} else {
 $direction = false;
}
// ...restliches PHP-Skript
ob_end_flush();
?>
  <div id="footer"><p>Copyright by WebmastXY</p></div>
 </body>
</html>

Das mit dem Puffer ist folglich nicht mein Hauptproblem, oder beziehungsweise nicht das Problem, wobei ich vermute, dass es dazu führt, dass es bei meiner Domain und CW-City fehlerhaft funktioniert.
Besteht die Möglichkeit einer Inkompatibilität des installierten PHPs auf den Servern, wo ich vorhabe, dies zu nutzen?
Hier einmal die Beispiel-Links:
Funpic-Seite <- hier funktioniert es super!
CWCity-Seite <- hier funktioniert es nicht!

Beim zweiten Link besteht einfach das Problem, dass entweder immer direkt die von Jeko genannte "Fallback-Lösung" zum tragen kommt, oder ich irgendwas mit dem Header(404-Fehler) falsch gemacht habe. Immerhin wird ja keine PHP-Fehlermeldung ausgegeben, sondern lediglich die "404.php" ausgelesen.


So hoffe ich, dass ich mein Problem verständlich dargelegt und ihr mir unter Umständen helfen könnt.
Weiterhin bitte ich den Puch des Threads zu entschuldigen, nur nach insgesamt 6 Stunden Gewusel und Gesuche per Google sah ich keine andere Lösung...

Mit freundlichen Grüßen
Dominik
 
Zuletzt bearbeitet:
einige Dinge, die du probieren könntest …

PHP:
var_dump($_REQUEST);
um zu sehen, womit du überhaupt arbeitest.

$_GET anstelle $_REQUEST

PHP:
phpinfo();
ganz hilfreich, wenn es um die aktuelle PHP Installation geht
 
$dir wird niemals gesetzt. Bei Funpic ist register_globals auf on, das führt dazu das PHP alle Schlüssel in $_GET/$_POST/$_COOKIE ($_SESSION ?) automatisch als Variablen setzt. Somit gibt es in diesem Fall ein instanziertes $dir.
Register_globals auf on zu setzen gilt als Sicherheitsrisiko und wird daher von vielen Hoster deaktiviert.
 
Heyho :)
ui was bin ich froh, wenn ich seh, dass ich Antwort bekommen habe :p So hab ich mich auch gleich daran gemacht, das Ein oder Andere auszutesten...


PHP:
var_dump($_REQUEST);
um zu sehen, womit du überhaupt arbeitest.

$_GET anstelle $_REQUEST

PHP:
phpinfo();
ganz hilfreich, wenn es um die aktuelle PHP Installation geht

zum Ersten: var_dump hab ich schon mal vorher probiert gehabt, weil ich das in einem anderen Forum fand, um zu wissen, (wie du schon sagtest), womit man arbeitet...
Ergebnis: bei beiden Hoster und sowohl mit $_GET, als auch mit $_REQUEST erscheint im Browser
Code:
array(1) { ["dir"]=>  string(6) "punkt2" }
Demnach dachte ich mir, wenn das schonmal bei beiden funktioniert, müsste der Fehler eigentlich woanders liegen :p (ob dem allerdings so ist, weiß ich ja noch nicht ;) )

zum Zweiten: mit beiden $_GET und $_REQUEST funktioniert es auf Funpic - auf CWCity nicht..

zum Dritten: Da ich mich mit PHP (leider noch) nicht allzusehr auskenne, konnte ich mit diesen schönen tollen Tabellen nicht viel anfangen :D (aber ZeitGeist hat ja auf etwas hingewiesen :p )
Funpic CWCity



$dir wird niemals gesetzt. Bei Funpic ist register_globals auf on, das führt dazu das PHP alle Schlüssel in $_GET/$_POST/$_COOKIE ($_SESSION ?) automatisch als Variablen setzt. Somit gibt es in diesem Fall ein instanziertes $dir.
Register_globals auf on zu setzen gilt als Sicherheitsrisiko und wird daher von vielen Hoster deaktiviert.
heißt das jetzt also für mich, dass ich mit dieser Methode, sei es mit $_GET oder $_REQUEST keine Variablenabfrage aus der URL machen kann?
Auf jeden Fall entnehme ich deinem Beitrag eine für mich bestehende Einschränkung, die ich jetzt versuchen muss, auf anderem Weg zu umgehen :D
Oder bin ich ein hoffnungsloser Fall? Wenn es halt mit dieser Methode gar nicht klappen sollte, dass ich meine Inhalte so darstellen kann... dann muss ich halt damit leben - gibt es aber eine Möglichkeit, das eventuell auf andere Art und Weise zu lösen, dann wäre ich euch sehr verbunden, wenn ihr mir damit helfen könntet :)

Mit freundlichen Grüßen
 
Einfach an den Anfang des Skriptes ein
PHP:
$dir = $_GET['dir'];
und die Variable steht dir zur Verfügung.
 
Einfach an den Anfang des Skriptes ein
PHP:
$dir = $_GET['dir'];
und die Variable steht dir zur Verfügung.


aaaah!!!
Das war zwar nicht die Lösung, aber durch deinen Beitrag und ZeitGeists "$dir wird niemals gesetzt." wurd mir grad klar, wo mein Fehler liegt!!!!
Ich danke euch vielmals! Das ist unglaublich :D wuhu...jetzt kann ich ans basteln gehen ^^


Wie in meinem ersten Beitrag zu entnehmen, belegte ich mit $_REQUEST['dir'] zwar die Variable $direction, aber mit der variable wird ja weiter nichts gemacht!!! Und weiter unten, wurd mit $dir weitergearbeitet, ohne dass $dir jemals besetzt wurde... (DANKE @ ZeitGeist)

Wuhu! Genial - ich freu mir grad ein Loch in den Bauch!
Ihr seid die besten :)
 
Zurück
Oben