zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden [PHP] index.php?page=startseite etc.

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 25.02.2009, 05:55
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 25.02.2009
Beiträge: 7
Cryten befindet sich auf einem aufstrebenden Ast
Standard [PHP] index.php?page=startseite etc.

Grüße,
ich hatte mal ein Script, das mir in meine index.php, in welcher lediglich das Design ist, je nach Link die verschiedenen Inhalte an der Stelle des PHP Codes einfügt. Die Links sahen wie folgt aus: index.php?page=startseite/hilfe/impressum etc. Dabei war auch eine config.inc.php welche unter anderem vorschrieb, das die Dateien *.inc.php heißen mussten und in der config auch angegeben sein mussten.

Ich suche nun wieder dieses Script und wäre dankbar, wenn mir jemand dieses oder ein ähnliches geben könnte.
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 25.02.2009, 10:56
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

Ich löse das wie folgt.
Die Inhalte (Seiten) liegen in einem Ordner. (z.B. /inhalt/startseite.php)

Die index.php überprüft die übergebene GET-Variable auf korrekten Inhalt (nur Buchstaben,Zahlen,Binde- und Unterstrich).

Dann gleiche ich noch mit einer Whitelist ab.

Wenn alles stimmt schaue ich, ob die Datei existiert und include diese dann.

Sollte irgendwo ein Problem auftreten binde ich eine spezielle Fehlerseite ein, die einen "404 - not found" sendet und auf evtl. Fehlerquellen hinweist.

Nebenbei: Für solche Fragen gibt es hier das Unterforum "Serverseitige Scripte und Serveradministration"
__________________
github | http://dnaber.de

Geändert von David (25.02.2009 um 12:29 Uhr)
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 25.02.2009, 14:13
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 25.02.2009
Beiträge: 7
Cryten befindet sich auf einem aufstrebenden Ast
Standard

Es wäre wohl erwähnenswert das ich kein PHP kann, von daher bräuchte ich ein vorgefertigtes Script.

PS: Sry, wusste nicht worein damit.^^
Mit Zitat antworten
  #4 (permalink)  
Alt 25.02.2009, 14:54
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

Ein Mod wird das Thema sicher verschieben

Ein paar Grundlagen wären schon nicht schlecht, wenn du
php einsetzen willst.
Quakenet/#php Tutorial - de - Einleitung
oder auch
Peter Kropff - PHP - Grundlagen - Einführung
bieten da gute Einstiegsmöglichkeiten.

Meine obige Beschreibung sieht im Script ungefähr so aus:

PHP-Code:
//prüfen, ob überhaupt was übergeben wurde
if(!isset($_GET['page']) || trim($_GET['page']) == '') {
    
$page 'startseite';
}
//wenn dem so ist, dann...
 
else {  

    
//GET auf inhalt prüfen
    
$pattern '/^[0-9a-z_-]+$/i';
    if(!
preg_match($pattern,$_GET['page'])) {
       
        
$page 'fehlerseite';
    }

    else {
         
/* Prüfen, ob der übergebene Name in der
          * Liste der erlaubten Seiten ist
          */
         
if(!in_array($_GET['page'],$whitelist)) {
            
            
$page 'fehlerseite';
        }
        else {
            
/* Hier stimmt alles und der Inhalt wird, 
             * kleingeschrieben, in die Variable $seite übernommmen
             */
            
$page strtolower($_GET['page']);
        }
    }
}
//Wenn die Datei existiert, dann wird sie includet
if(file_exists('inhalt/'.$page.'.php')) {
    
    include(
'inhalt/'.$page.'.php');
}

//andernfalls gibts die entsprechende Meldung...
else {
    
    
header('HTTP/1.1 404 Not Found');
    echo 
'<h1>404 - Seite nicht gefunden</h1>';
    
//exit();

__________________
github | http://dnaber.de
Mit Zitat antworten
  #5 (permalink)  
Alt 25.02.2009, 18:27
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 25.02.2009
Beiträge: 7
Cryten befindet sich auf einem aufstrebenden Ast
Standard

Die Grundlagen stellen kein Problem dar, lerne derzeit auch immer mal wieder PHP, habe nur leider nicht allzu viel Zeit, bzw. andere Dinge die Vorrang haben.

Der Einbau des Scripts hat auch schon funktioniert ohne das ich überhaupt HTML und CSS konnte, ich werde das Script mal ausprobieren.
Mit Zitat antworten
  #6 (permalink)  
Alt 25.02.2009, 19:06
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 14.03.2007
Ort: Bad Schmiedeberg
Beiträge: 1.395
regloh wird schon bald berühmt werden
Standard

Zitat:
Zitat von David Beitrag anzeigen
Ein Mod wird das Thema sicher verschieben

Ein paar Grundlagen wären schon nicht schlecht, wenn du
php einsetzen willst.
Quakenet/#php Tutorial - de - Einleitung
oder auch
Peter Kropff - PHP - Grundlagen - Einführung
bieten da gute Einstiegsmöglichkeiten.

Meine obige Beschreibung sieht im Script ungefähr so aus:

PHP-Code:
//prüfen, ob überhaupt was übergeben wurde
if(!isset($_GET['page']) || trim($_GET['page']) == '') {
    
$page 'startseite';
}
//wenn dem so ist, dann...
 
else {  

    
//GET auf inhalt prüfen
    
$pattern '/^[0-9a-z_-]+$/i';
    if(!
preg_match($pattern,$_GET['page'])) {
       
        
$page 'fehlerseite';
    }

    else {
         
/* Prüfen, ob der übergebene Name in der
          * Liste der erlaubten Seiten ist
          */
         
if(!in_array($_GET['page'],$whitelist)) {
            
            
$page 'fehlerseite';
        }
        else {
            
/* Hier stimmt alles und der Inhalt wird, 
             * kleingeschrieben, in die Variable $seite übernommmen
             */
            
$page strtolower($_GET['page']);
        }
    }
}
//Wenn die Datei existiert, dann wird sie includet
if(file_exists('inhalt/'.$page.'.php')) {
    
    include(
'inhalt/'.$page.'.php');
}

//andernfalls gibts die entsprechende Meldung...
else {
    
    
header('HTTP/1.1 404 Not Found');
    echo 
'<h1>404 - Seite nicht gefunden</h1>';
    
//exit();


Ich löse soetwas über eine einfache switch-case-Anweisung. Somit fallen die ganzen Prüfungen weg. Warum machst du es so "umständlich" ? Du musst ja Links und die GET-Variablen auf deiner Seite trotzdem manuell einfügen und eine 404-Behandlung kann man im Webserver/htaccess einstellen.
Mit Zitat antworten
  #7 (permalink)  
Alt 25.02.2009, 19:15
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

Umständlich ist das Script in sofern, dass ich bei jeder neuen Seite die Whitelist anpassen muss. Die Prüfung gegen die Whitelist könnte man genaugenommen auch rauslassen.

Bei der Switchabfrage musst du auch bei jeder neuen Seite die index.php wieder ändern.
__________________
github | http://dnaber.de
Mit Zitat antworten
  #8 (permalink)  
Alt 25.02.2009, 20:04
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 14.03.2007
Ort: Bad Schmiedeberg
Beiträge: 1.395
regloh wird schon bald berühmt werden
Standard

Zitat:
Bei der Switchabfrage musst du auch bei jeder neuen Seite die index.php wieder ändern.
Genau. Du ja eben auch. Und das war mein Argument "gegen" dein Script. Denn du hast keinerlei Vorteile davon. Nur "unnötige" Prüfungen.
Mit Zitat antworten
  #9 (permalink)  
Alt 25.02.2009, 20:25
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.733
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Dann beschränke es doch auf die Dateikontrolle:
PHP-Code:
if (!isset($_GET['page'])) {
    
$page 'default';
} else if (!
preg_match('/^[0-9a-z_-]+$/i'$_GET['page'])) {
    
// 400-Fehler
}
$absPath realpath('inhalt/'.$page.'.php');
if (!
$absPath) {
    
// 404-Fehler
} else {
    include 
$absPath;

__________________
Markus Wulftange
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 25.02.2009, 21:10
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 14.03.2007
Ort: Bad Schmiedeberg
Beiträge: 1.395
regloh wird schon bald berühmt werden
Standard

Wozu umständlich, wenns auch einfach geht? Was spricht denn gegen

PHP-Code:
switch ($_GET['id']) {

        case 
0: include("seite1.html"); break;
        case 
1: include("seite2.html"); break;
        default: include(
"seite1.html");
        } 
Mit Zitat antworten
Sponsored Links
Antwort


Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP] Befehl abkürzen? markuskoehler Serveradministration und serverseitige Scripte 25 22.10.2008 22:10
[PHP] Language-Switch markuskoehler Serveradministration und serverseitige Scripte 27 21.10.2008 21:13
[PHP] function mit werten aus while-schleife markuskoehler Serveradministration und serverseitige Scripte 13 30.09.2008 22:19
[PHP] mail() mit Lycos? markuskoehler Serveradministration und serverseitige Scripte 0 04.09.2008 16:31
[PHP] Daten aus MySQL in Array geben und ausgeben bullseye Serveradministration und serverseitige Scripte 5 23.07.2008 14:48


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:28 Uhr.