2012-04-11 9 views
2

Ich versuche, eine Website mit PHP als treibende Kraft hinter den Zahnrädern zu erstellen. Die Idee hinter der Website (im Allgemeinen) erfordert, dass jedem Benutzer die Möglichkeit geboten wird, sein eigenes Profil zu erstellen (derzeit erwägt er, ein Verzeichnis für jeden Benutzer zu erstellen).PHP Verzeichnisstruktur Verwirrung

Ich habe beträchtliche Forschung gemacht, um diese Anwendung in den bestmöglichen Mitteln zu setzen. Aber ich bin extrem verwirrt, wenn es darum geht, die Verzeichnisstruktur zu erstellen. Ich überlege mir, ob ich einen Framework-Assistenten (CodeIgniter) herunterladen könnte, der mir dabei helfen könnte, aber ich möchte lieber zuerst die Meinung anderer einholen.

Derzeit habe ich alle meine Dateien und Inhalte in meinem Ordner public_html, und mir ist bewusst, dass dies nicht die ideale Einrichtung ist. Aber ich bin mir nicht sicher, wie ich eine alternative Struktur schaffen soll. Ich weiß nicht, wo ich die verschiedenen Vorlagen speichern soll (header.php, footer.php, etc) und wie/wo sie aufgerufen werden.

Ich möchte Seiten erstellen, um die "Info", "Kontaktseite" und andere Inhalte aufzulisten, aber nicht wissen, wo diese Seiten befinden sollen? Speichere ich den Inhalt dieser Seiten im Verzeichnis public_html und schließe einfach die Vorlagen aus den verschiedenen Unterordnern ein?

In Bezug auf eine config.php-Datei: Ich versuche, alle notwendigen Informationen in Bezug auf MySQL-Verbindungen in einer einzigen Datei sowie andere notwendige Informationen am Anfang jeder Seite innerhalb der Website enthalten sein.

Gedanken? Ich bin ziemlich neu in der Cloud und so einfache und grundlegende Antworten würden sehr geschätzt werden!

Antwort

1

Sie denken darüber falsch. Sie benötigen kein Verzeichnis für jeden Benutzer. Sie können GET params verwenden, um ein Skript (z. B. profile.php) das entsprechende Profil für einen Benutzer abrufen zu lassen, das von Daten abhängig ist, die an es übergeben werden. Zum Beispiel würde profile.php?userid=5212 das Profil für Benutzer 5212 ziehen ($_GET['userid'] würde in diesem Fall die ID des Benutzers enthalten). Wenn Sie nichts weiterreichen, können Sie einfach das Profil für den aktuell angemeldeten Benutzer abrufen.

Sie könnten auch mod_rewrite verwenden, so dass http://www.yoursitehere.com/profile/5212/ das gleiche tun könnte (schauen Sie in Routen in den meisten PHP-Frameworks)

Ihre Verzeichnisstruktur sollte zu Ihnen passen.Wenn die Website ist einfach genug konnte man mit etwas Einfaches wie weg nur

public_html/ 
    css/ 
    includes/ 
    images/ 
    js/ 

Ihrer Datenbankkonfiguration in public_html/includes/ leben konnte, und man kann es auf jeder Seite enthält eine Datenbankverbindung erforderlich ist. Ihre Kontakt- und Kontaktseiten können Dateien sein, die sich in public_html/ befinden, um die Dinge einfach zu halten. Auch dies sind nur Vorschläge. Ihre Verzeichnisstruktur sollte so sein, wie Sie es brauchen.

+0

Das klingt nett. Definitiv legt viel meiner Verwirrung zur Ruhe. Würden Sie immer noch empfehlen, ein Framework zu verwenden oder die Site nach einem MVC-Standard zu organisieren? (Ich bin mir nicht ganz klar, was die Funktionalität hinter dem MVC-Modell ist). Wie in der Datei config.php sollte ich mich nicht mit der Möglichkeit einer Sicherheitsverletzung befassen, wenn jemand Zugriff auf den Inhalt der Datei hat (mit dem MySQL-Benutzer und dem Passwort, die im Skript gespeichert sind)? – asgaines

+0

Solange es eine PHP-Datei ist, ist es nicht aus dem Web zugänglich (da PHP-Skripte interpretiert, nicht gedruckt werden). Was einen Rahmen betrifft, das ist deine Entscheidung. Auf deiner Fähigkeitsstufe mag es jedoch zu deiner Verwirrung beitragen. Die meisten PHP-Frameworks verwenden eine MVC-Struktur, sodass Sie MVC beispielsweise nur mithilfe von Zend Framework oder CakePHP verwenden. – Crashspeeder

0

Speichern Sie alles in einer Struktur, die für Sie sinnvoll ist. So etwas sollte funktionieren:

public_html

-Includes

-Bilder

-CSS

-blog

Und so weiter ...

in Bezug auf die Konfigurationsdatei können Sie in derspeichernVerzeichnis oder in der includes Verzeichnis

+0

Wie soll ich gehen einschließlich der verschiedenen Dateien? Würde ich eine Methode verwenden, bei der der Dokumentstamm in einer Variablen gespeichert wird, die in der Datei config.php gespeichert ist, und diese Variable dann verwenden, um mit den verschiedenen Ebenen des Verzeichnisses zu interagieren? Zum Beispiel (in der Datei config.php): $ doc_root = $ _SERVER ['DOCUMENT_ROOT']; – asgaines

+0

Ja, das würde funktionieren. Dies ist eine Möglichkeit, es zu handhaben: 'require_once ($ _ SERVER ['DOCUMENT_ROOT']. '/inc/header.php');' –

+0

Dieser Code geht am Anfang jeder Datei. Es enthält Datenbankverbindungen, den '' Tag usw. –

0

Sie könnten ein PHP Web Framework wie Symfony verwenden. Es hilft bei vielen Grundlagen, damit Sie sich auf die Produktfunktionen konzentrieren können.

0

Für das Benutzerprofil speichern Sie alle Informationen in einer Datenbank mit Benutzer-ID als Feld. Wenn sich der Benutzer anmeldet, führen Sie eine Abfrage aus, um alle Informationen durch Abfragen der Benutzer-ID auszuwählen.

Wie für Dateistruktur, könnten Sie verwenden:

 
    public html 
    includes 
     header.html 
     footer.html 
     config.php 
    classes 
    pages (stores other pages besides index.php here, contact, about etc.) 
    css 
    JS 
    index.php/html 
und außerhalb des public_html Ordner ich meine mysqli.php-Datei haben.

Um diese Header-Dateien in der index.php umfassen würden Sie einfach erstellen (in Ihrem Ordner enthält oder wo auch immer Sie wählen?) Config.php mit etwas wie folgt aus:

require_once($server['document_root']."/classes/filename.php"); // include needed files and mysqli connection here as well 

Sie könnten auch Legen Sie bei Bedarf auch einen benutzerdefinierten Fehlerhandler in der Konfigurationsdatei fest.

In der index.php würden Sie dann rufen Sie die Konfigurationsdatei (die automatisch alle Dateien, die Sie in der Konfigurationsdatei als auch angegeben umfassen würde) und Ihre Kopf- und Fußzeilen dh

include('/includes/header.html'); 
include('/includes/config.php'); 
<!--ENTER PAGE CONTENT HERE--> 
include('/includes/footer.html');