So erstellen Sie Benutzerprofile mit PHP und MySQL

8

Ich brauche Hilfe beim Erstellen eines Benutzerprofilsystems. Ich möchte, dass es wie Facebook oder Myspace ist, wo es nur den Benutzernamen nach der Adresse, keine Fragezeichen oder irgendetwas, für Beispiel, www.mysite.com/username . Ich habe alle Register, Logging-Skripte usw. alle erledigt, aber wie gehe ich zu Profilen über das URL-Beispiel "/ username"?

    
Spyderfusion02 25.07.2009, 00:22
quelle

3 Antworten

7

Sie müssten ein Mod-Rewrite erstellen, das das erste Verzeichnis übernommen und als $ _GET-Parameter übergeben hat.

Versuchen Sie Folgendes:

%Vor%

Das sollte alles nach '/' als index.php? user = directory

umschreiben     
Chacha102 25.07.2009, 00:35
quelle
4

Hier ist die gekürzte Version meiner Antwort, falls jemand einen kurzen Moment:

  1. Erstellen Sie ein Verzeichnis namens "users".
  2. Erstellen Sie in diesem Verzeichnis eine .htaccess-Datei mit dem folgenden mod_rewrite:

    REQUEST_URIRewriteEngine on

    RewriteRule !\.(gif|jpg|png|css)$ /your_web_root/users/index.php'REQUEST_URI

Nun werden alle Seitenanforderungen für Erweiterungen, die nicht in der Klammer des Benutzerverzeichnisses stehen, in index.php

geändert

index.php nimmt die URL, die der Benutzer eingegeben hat, und ergreift das Bit am Ende. Es gibt Unmengen von Möglichkeiten, dies zu tun, hier ist ein einfaches, wenn Sie wissen, der letzte Teil wird immer ein Benutzername sein und nicht, vielleicht, Benutzername / pics /:

%Vor%

Machen Sie jetzt eine Anfrage an die Datenbank für diesen Benutzernamen. Wenn es existiert, gibt index.php das Profil aus, wenn es nicht die Skriptumleitung zu: /users/404.php

hat

Aber wenn der Benutzer existiert, wird Ihr Besucher nur sehen, dass er

eingibt %Vor%

und sie haben foo's Benutzer-Seite.

Keine Variablen, die ein Hacker ausnutzen könnte, und eine hübsche, einfach anzubringende URL eines anderen Blogs oder einer Visitenkarte.

Tatsächlich ist es möglich, das "?" und habe eine nette einfache www.example.org/users/someusername.

Ich habe erfahren, dass dies in Till Quacks Artikel " Wie man mit URLs Erfolg hat " auf A List Apart .

Sie müssen also Apache, .htaccess und mod_rewrite verstehen, und diese Methode erfordert, dass Sie die Sicherheitsrisiken verstehen und sie berücksichtigen. Hier ist die Grundidee:

Sie erstellen ein Verzeichnis namens "users" (Sie müssen nicht, aber das wird die ganze Sache vereinfachen), und in diesem Verzeichnis legen Sie Ihre .htaccess-Datei, die eine mod_rewite enthält, die effektiv "alle Datei oder Verzeichnisanfragen, die nicht von einer bestimmten Art sind (Bilder, PDFs), sollten an dieses Skript gesendet werden, das den Versandort für den Benutzer übernimmt. " Das mod_rewrite des Artikels sieht so aus:

%Vor%

In meinem Beispiel wäre es "/your_web_root/users/index.php", der Grund, warum es einfacher ist, weil anstelle dieses Skripts alle Anfragen auf Ihrer Seite behandelt werden, es handelt sich nur um diejenigen im Benutzerverzeichnis.

Dann haben Sie ein PHP-Skript, das sagt: "Okay, wie lautet die URL?" und es nimmt im Grunde den Teil nach dem letzten Schrägstrich (oder zwei, wenn es einen anderen am Ende gibt) und SANITIERT, was es findet (das ist wirklich entscheidend) und sagt: "Gibt es diesen Benutzernamen in meiner Datenbank?" Wenn ja, wird der Requester an das Profil des Benutzers gesendet, aber mit einer schönen URL (wir kommen gleich dazu), wenn nicht, sendet er sie an die Seite "User Not Found" oder was immer Sie wollen.

Wenn Ihr Benutzer also gefunden wird, gibt das PHP-Skript das Benutzerprofil aus (Achten Sie darauf, es wieder zu bereinigen. Jeder Jerk-Benutzer, den Sie haben können, kann - falls Sie ihm die Möglichkeit geben - bösartigen Code in sein Programm einbetten eigenes Profil, wenn Sie wissen, dass die Browser, die das Profil anzeigen, diesen Code ausführen). Da die angeforderte Seite war:

%Vor%

und da Sie mod_rewrite anstelle einer Weiterleitung verwenden, bleibt die URL gleich und das Skript, das die .htaccess-Datei aufruft, lädt nur das Benutzerprofil ab. Für den Besucher sehen sie nur, dass sie die obige URL eingeben und das Benutzerprofil erscheint.

Sie möchten auch das PHP-Skript, das überprüft, ob der Benutzer eine Weiterleitung zu einer "Benutzer nicht gefunden" -Seite durchführt, anstatt einfach eine "user_not_found" -Seite auszugeben. Dies ist so jemand, der sich einfügt:

%Vor%

Ändert die URL zu

%Vor%

anstatt die URL zu sehen, bleibt gleich. Wenn ein Hacker sieht, dass sich die URL nicht ändert, wissen sie jetzt, dass Sie ein mod_rewrite verwenden und daher muss ein Skript die tatsächliche Ausgabe behandeln. Wenn sie das wissen, können sie verrückt nach jedem Sicherheitsloch suchen, das du offen gelassen hast.

Prost.

    
Anthony 25.07.2009 02:39
quelle
2

Sehen Sie sich die Engine zum Umschreiben an . Einige Frameworks haben auch Klassen, um diesen Job zu erledigen, so wie Zend Framework Zend_Router , das du benutzen kannst . Sie können dies selbst verwenden, andere Frameworks haben sie auch, überprüfen Sie die Dokumente für Ihren bevorzugten Geschmack.

    
Elzo Valugi 25.07.2009 00:42
quelle

Tags und Links