Homepage-seiten über arrays öffnen

Hallo,
für meine Homepage habe ich folgenden HTML-Quelltext-Code und möchte mit PHP die „Array-Seiten“ öffnen (vgl. unterstrichenen Teil im Code).
[Ich konnte leider nicht herausfinden wie ich mit „fopen“ bzw. „open“ ein Array anspreche, damit die jeweilige Seite im Browser geöffnet wird. Die beiden Varianten bei sind nur Versuche gewesen.]…Link 1Link 2$files[0]…

Hi

Du bist, soweit ich das mit bekomme auf dem falschen Weg.
Du versuchst bereits schon im Link auf der Webseite die Seiten anzeigen zu lassen.
Also in die mußt du keine fopen machen weil dies ja nur die LINKS zu den Seiten sind.

Erst wenn der Link gedrückt wurde willst du die Seiten ja anzeigen.

Bedeutet du mußt im link einen identifier auf die Seite die ausgegeben wird übergeben.

Email

in der index.php kannst du dann dein fopen machen wenn du willst. In dem Fall:

$files[1] = „index_email.php“;
fopen($files[$_REQUEST[‚seite‘]];

In diesem Fall wird beim klick auf den link die Seite index aufgerufen mit der übergebenen GET Variablen seite.
Die Variable Seite ist jetzt der Index für dein angelegtes files Array.

Gruß Lamer

Hallo, vielen Dank für die schnelle Antwort.

Ich habe den php-Code zwsichen ?> eingefügt und im oberen Tabellen-Teil nur den neuen Link eingefügt.

Email

<?php $files[1] = "index_email.php";
fopen($files[$\_REQUEST['seite']]; ?\> Nun erhalte ich folgende Fehlermeldung:
Parse error: syntax error, unexpected ';' in /usr/export/www/vhosts/funnetwork/hosting/meineseite/UMBAU_IN_PHP_3.php on line 65
Ursprünglich hatte ich aus einem Forum folgenden Code, mit dem ich "Unterseiten" innerhalb einer HTML-Tabelle öffnen konnte. Diesen Ursprungscode wollte ich so umschreiben, dass nicht mehr die einzelnen Namen der "Unterseiten" erscheinen (wie z.B. "/email.php"), sondern nur noch die Ziffern (Arrays). Hier der funktionierende Ursprungscode zum Vergleich: ... [Link 1](?open=index_email.php) [Link 2](?open=index_impressum.php) <?php $pag=$_GET['open']; //open Variable abfragen
if ($pag == "") { // wenn open leer ist, nen standard definieren $pag="standard.html"; } $npag = str\_replace("/", 'forbidden', $pag); // alle slashs in open durch forbidden ersetzen $npag = str\_replace('\\', 'forbidden', $npag); //alle backslashs in open durch forbidden ersetzen if (file\_exists($npag)) { //prüfen ob die Datei überhaupt existiert $a = fopen($npag, "r"); // Datei öffnen while (!feof($a)) { //bis am dateiende angelangt $inhalt = fgets($a, 1000); // 1000 Zeichen auslesen print $inhalt; // das gelesene hinschreiben } fclose($a); //dateihandle zumachen } else { // wenn datei nicht existiert print "404 - $npag - File not found"; // error ausgeben } ?\> ... Meine Kenntnisse in PHP sind leider nur sehr sehr gering. Deshalb hoffe ich nochmals um Mithilfe. Vielen Dank. Gruß, floli

Hi!
im Prinzip funktioniert es, wie es Lamer schon beschrieben hat. Nur ist ein kleiner Tippfehler im Code - die Klammer ist nicht geschlossen.
Und fopen() alleine genügt nicht zur Textdarstellung, anschließend muss man den text auslesen [fgets()] und ausgeben [print] und dann das file wieder schließen[fclose()] - wie in Deinem Originalscript. Alternativ würde ich einfach das ganze File per include einbinden.

Also noch mal fürs copy&paste:

<?php $files[1] = "index_email.php";
$files[2] = "index\_impressum.php"; include($files[$\_REQUEST['seite']]); ?\> Gruß, Caro

Hi Caro, hallo liebe Leser/innen,

vielen, vielen Dank! Jetzt klappt der Seitenaufruf innerhalb der Tabelle.
Zusätzlich würde ich gerne wissen, wie ich nun eine Standardseite („Home“) definieren kann. Wegen der include-Funktion gibt es bei meinen Versuchen immer wieder ne Fehlermeldungen.
Ich wollte mit der unterstrichenen Textstelle meine HOMEPAGE-Startseite quasi als Standard festlegen.



    Warning: include() [function.include]: Failed opening ‚‘ for inclusion (include_path=’.:’) in /usr/export/www/vhosts/funnetwork/hosting/meineseite/UMBAU_IN_PHP_3.php on line 74


line 74:
include($files[$_REQUEST[‚seite‘]]);

Gleichzeitig tritt das Problem auf, dass beim Anklicken eines der anderen Links (z.B. Email) die Email-Seite nicht „ALLEIN“ angezeigt wird, sondern ÜBER der Home-Seite.
Mein PHP Code sieht jetzt folgendermaßen aus:
(Weiterer Unterschied zum Original: „$a“ habe ich in „$files“ geändert.)
Kann das so überhaupt funktionieren?

Home
Email
link2

<?php $files[0] = "home.php";
$files[1] = "index\_email.php"; $files[2] = "index\_impressum.php"; include($files[$\_REQUEST['seite']]); $files=$\_GET['open']; //open Variable abfragen if ($files == "") { // wenn open leer ist, nen standard definieren $files="home.php";
}

$nfiles = str_replace("/", 'forbidden', $files); // alle slashs in open durch forbidden ersetzen
$nfiles = str_replace('\\', 'forbidden', $nfiles); //alle backslashs in open durch forbidden ersetzen

if (file_exists($nfiles)) { //prüfen ob die Datei überhaupt existiert
$files = fopen($nfiles, "r"); // Datei öffnen
while (!feof($files)) { //bis am dateiende angelangt
$inhalt = fgets($files, 1000); // 1000 Zeichen auslesen
print $inhalt; // das gelesene hinschreiben
}
fclose($files); //dateihandle zumachen
} else { // wenn datei nicht existiert
print "404 - $npag - File not found"; // error ausgeben
}
?>






Herzlichen Dank im Voraus für die Hilfe.
Gruß, floli

Gleichzeitig tritt das Problem auf, dass beim Anklicken eines
der anderen Links (z.B. Email) die Email-Seite nicht
„ALLEIN“ angezeigt wird, sondern ÜBER der
Home-Seite.

Klar, Dein Code ist ja doppelt gemoppelt.
Du bindest den Seiteninhalt zweimal ein: einmal mit include und einmal über das alte Script.

So, neuer Versuch - DAS ist Dein Code, den Rest lässt Du einfach weg:

<?php $files[0] = "home.php";<br />$files[1] = "index\_email.php";
$files[2] = "index\_impressum.php";

$home = $files[0]; //HIER WIRD DIE HOMEPAGE DEFINIERT

$seite = $files[$\_REQUEST['seite']];

if (file\_exists($seite)){
 include($seite);
}else{
 include($home);
}

?\>

Gruß, Caro

Hallo floli

für meine Homepage habe ich folgenden HTML-Quelltext-Code und
möchte mit PHP die „Array-Seiten“ öffnen (vgl. unterstrichenen
Teil im Code).

Kannst Du prüfen, ob Dein Webserver im
Modus „Multiviews ON“ läuft? Das erkennst
Du daran, daß Du eine Seite floli.php auf

z.B.: http://mein.server.hier/subdir/floli.php

auch geöffnet bekommst, wenn Du sie nur mit

http://mein.server.hier/subdir/floli

aufrufst.

Wenn das nämlich geht, könntest Du Deine Sache
mit der „richtigen geöffneten Webseite“ sehr
stark vereinfachen.

Dein href würde dann immer mit dem „Link“
übereinstimmen, der dann von einem
„controller-script“ (z.b. show.php)
umgelenkt wird. Die Links sähen dann
so aus:

http://flolis.server.hier/show/home
http://flolis.server.hier/show/email
http://flolis.server.hier/show/impressum
http://flolis.server.hier/show/witze
http://flolis.server.hier/show/daten

d.h. die URIs wären schön lesbar.

Dieses /show/ ist in wirklichkeit
ein „show.php“, welches so aussieht:

[show.php]

<?php # Links definieren<br /> $meinelinks = Array(
 'email' =\> 'index\_email.php',
 'impressum' =\> 'index\_impressum.php';
 'witze' =\> 'pages/witze.html';
 'daten' =\> 'files/data.html';
 ) ;

 # Nachschauen, was in der URL angefordert wurde,
 # z.B.: http://flolis.server.hier/show/\*daten\*
 preg\_match('|/show/(.\*)/?$|', $\_SERVER['REQUEST\_URI'], $matches);

 if(array\_key\_exists($matches[1], $meinelinks)
 echo file\_get\_contents($meinelinks[$matches[1] ]); 
 else
 echo file\_get\_contents('index.html'); 
?\>

Grüße

CMБ

Recht herzlichen Dank!!
Es läuft alles einwandfrei.

Hallo Semjon,

vielen Dank für Deinen Einsatz und Deinen sehr eleganten Lösungsvorschlag.

Kannst Du prüfen, ob Dein Webserver im
Modus „Multiviews ON“ läuft?

Ja, läuft.

Ich bin alles andere als ein PHP Programmierer und bin mit dem zufrieden, was läuft.
Aber ich werde Dein Script sicher mal ausprobieren.
(Ich habe zwischenzeitlich die Array-Ziffern in ‚Strings‘ (z.B. $files=[‚email‘] ) ersetzt, so habe ich nun auch jede verlinkte Seite lesbar gemacht.)

Ncohmals DANKE an alle für Eure Untersützung. :smile:
Gruß,
floli