• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP Site

  • Ersteller Ersteller pallino
  • Erstellt am Erstellt am
P

pallino

Guest
Guten Abend,
Wie kann ich folgendes erstellen.

1. Ich habe z.B. die PHP-Dateien "index.php" "site.php" und "user.php". Wie kann ich nun machen, dass man nicht einzeln die Dateien aufruft, sondern dass man die Dateien folgendermaßen aufruft:

Bei "index.php": Ganz normal: index.php
Bei "site.php": index.php?site=site
Bei "user.php": index.php?site=user

-----

2. Wenn ich innerhalb einer Datei (z.B. "index.php") mehere Funktionen habe, z.B. "Beitrag löschen", "Beitrag bearbeiten" und "Beitrag schreiben", wie kann ich dann folgendes erstellen:

Beim Klick auf "Beitrag löschen": index.php?site=delete
Beim Klick auf "Beitrag bearbeiten": index.php?site=edit
Beim Klick auf "Beitrag schreiben": index.php?site=new


-----



Ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt :D
Danke.
 
Guten Abend,
Wie kann ich folgendes erstellen.

1. Ich habe z.B. die PHP-Dateien "index.php" "site.php" und "user.php". Wie kann ich nun machen, dass man nicht einzeln die Dateien aufruft, sondern dass man die Dateien folgendermaßen aufruft:

Bei "index.php": Ganz normal: index.php
Bei "site.php": index.php?site=site
Bei "user.php": index.php?site=user

-----

2. Wenn ich innerhalb einer Datei (z.B. "index.php") mehere Funktionen habe, z.B. "Beitrag löschen", "Beitrag bearbeiten" und "Beitrag schreiben", wie kann ich dann folgendes erstellen:

Beim Klick auf "Beitrag löschen": index.php?site=delete
Beim Klick auf "Beitrag bearbeiten": index.php?site=edit
Beim Klick auf "Beitrag schreiben": index.php?site=new


-----



Ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt :D
Danke.

dafür brauchst du ne htaccess-Datei mit der du die URLs entsprechend umleitest

so z.B.
Code:
RewriteEngine on
RewriteBase /
RewriteRule ^site.php$  index.php?site=site
 
So, ein kleines Beispiel:
PHP:
<?php
/* INDEX.PHP */

// --- class frontController
class frontController
{
    private $_site = "Home";
    
    public function __construct($site)
    {
        $this->_site = htmlspecialchars($site); 
        if ($this->checkInc) return require_once($this->_site.'.php');
    }
    
    private function checkInc()
    {
        $allPages = array("Home", "AboutMe", "Contact");
        return in_array($this->_site, $allPages);        
    }
}

$site = new frontController($_GET['site']);
?>
 
Zuletzt bearbeitet:
Du erstellst ein neues Dokument und speicherst es als index.php ab.

ruft nun einer den link http://www.asdaskdaskdhkajsdh.de/index.php?site=Home auf, wird der GET Parameter an das Objekt der Klasse frontController übergeben. Diese Klasse überprüft zum einen ob die aufgerufene Seite im Array allPages vorhanden ist, zum anderen bindet sie die gewünschte Seite mittels require_once ein. Wird index.php?site=Home aufgerufen, wird die Home.php eingebunden, sofern checkInc (bzw in_array()) true ergibt.

Grüße
 
Könntest du mir das noch einmal für einen "noch nicht perfekt PHP beherrschenden :D" erklären? Vielen Dank! :D
 
Siehst du in der Adresszeile dinge wie site=Home oder action=Home, handelt es sich hier um URL Parameter. Einfach gesagt, diese Parameter sind nix anderes als Variablen. Mit dem = und den darauf folgenden Zeichen weist du dieser Variable einen Wert zu.

Wenn ich also html.de Forum - HTML fr Anfnger & Fortgeschrittene im Browser aufrufe, rufe ich die index.php der Domain blablaabalbla.de auf und gebe dieser index.php einen Parameter (=Variable). Diesen Parameter/Variable) kann ich in der index.php abspeichern, bzw den Wert abfangen, indem ich mit $_GET['parameter- /variablenname']; verwende.

Hängt also einer den Parameter namens "site" mit dem Wert "Home" an die index.php an (was so aussieht: html.de Forum - HTML fr Anfnger & Fortgeschrittene) , dann kann ich in der index.php den Wert dieses Parameters mit $_GET['site']; abfragen. Genau das mache ich in dem von mir oben geposteten Script. Alles weitere ist etwas komplizierter. Ich habe in dem Beispiel Objekt Orientierung angwendet, was natürlich nicht umbedingt notwendig ist, aber hat halt seine Vorteil, da du diesen Code immer wieder un wieder mit anderen Werten verwenden kannst.


Kopier das script in ein leeres Dokument, speicher es als index.php ab und lade es auf deinen Server. In dem array sind Werte, wie zb "Home", "AboutMe". In dieses Array schreibst du die Namen deiner Seiten rein.
Hast du also einen home.php, eine aboutme.php, ne imprint.php, dann sollte das Array so aussehen
array("home", "aboutme", "imprint");

In diesem array definierst Du also die Seiten, die ein User auch aufrufen darf. Würde man das nicht prüfen, könnte man Datein einbinden, die gar nicht existieren.
Ruft jetzt ein User index.php?site=home auf, wird mit $_GET['site'] der Wert des Parameters "site" an das Objekt übergeben, in diesem wird geprüft, ob der Wert von $_GET['site']; im array $allPages gespeichert ist. Wird index.php?site=home aufgerufen, ergibt die Funktion in_array() true zurück, da der Wert "home" auch als Wert im Array $allPages vorkommt. Anschließend wird an "home" ein .php angehängt und diese Datei (also home.php) mittels require_once eingebunden.

Dich muss das aber eigentlich nicht wirklich kümmern. Wichtig ist für dich das Array $allPages, dieses musst Du eben anpassen - dort musst du die Seiten ohne Dateiendungen hinterlegen (also zB nicht "home.php", sondern "home").
Den Rest erledigt die Klasse von alleine.
Grüße
 

Neueste Beiträge

Zurück
Oben