Как создать профили пользователей с помощью PHP и MySQL

Мне нужна помощь в создании системы профилей пользователей. Я хочу, чтобы это было как Facebook или Myspace где он имеет только имя пользователя после адреса, никаких вопросительных знаков или чего-либо еще, например, www.mysite.com/username. У меня есть все регистры, сценарии регистрации и т. д. все сделано, но как перейти к профилям, используя пример URL выше, "/username"?

3 ответов


вам нужно будет создать перезапись mod, которая взяла первый каталог и передала его как параметр $_GET.

попробуйте это:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)/$ index.php?user=

Это должно переписать что-либо после '/' как индекс.РНР?user=directory


вот сокращенная версия моего ответа, в случае, если кто-то момент tldr:

  1. создайте каталог под названием "пользователи".
  2. внутри этого каталога сделайте .htaccess файл со следующим mod_rewrite:

    REQUEST_URIRewriteEngine on

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

теперь все запросы страниц для любых расширений, не в круглых скобках, сделанных в каталоге пользователей, перейдут в индекс.в PHP

.php принимает URL-адрес, который пользователь вставляет и захватывает бит в конце. Есть множество способов сделать это, вот простой, если вы знаете, что последняя часть всегда будет именем пользователя, а не, возможно, именем пользователя / pics/:
 $url_request = $_SERVER['REQUEST_URI']; //Returns path requested, like "/users/foo/"
 $user_request = str_replace("/users/", "", $url_request); //this leaves only 'foo/'
 $user_name = str_replace("/", "", $user_request); //this leaves 'foo'

теперь просто сделайте запрос к БД для этого имени пользователя. Если он существует, индексами.php выводит профиль, если у него нет перенаправления скрипта на: / users / 404.в PHP

но если пользователь существует, все, что ваш посетитель увидит, это то, что они вставляют

www.example.org/users/foo/

и они попал на страницу пользователя foo.

нет получить переменные для хакера, чтобы использовать, и довольно, легко положить на другой блог или визитную карточку URL.


на самом деле, можно избавиться от "?"и иметь хороший простой www.example.org/users/someusername.

я узнал об этом в статье Till Quack "как добиться успеха с URLs " on Список Только.

Итак, вы должны понимать, Апач, .htaccess и mod_rewrite, и этот метод требует, чтобы вы понимали риски безопасности и ответственности за них. Вот основная идея:

вы создаете каталог под названием "пользователи" (вам не нужно, но это упростит все), и в этот каталог вы помещаете свой .файл htaccess, который содержит mod_rewite, который эффективно говорит: "все запросы файлов или каталогов, которые не имеют определенного вида (изображения, PDF-файлы), должны быть отправлены в этот скрипт, который будет обрабатывать, куда отправить пользователя." Этот и mod_rewrite из статьи выглядит так:

RewriteEngine on
RewriteRule !\.(gif|jpg|png|css)$ /your_web_root/index.php

в моем примере это будет " / your_web_root / users / index.php", причина, почему это более просто, потому что вместо того, чтобы этот скрипт обрабатывает все запросы на Вашей странице, он просто имеет дело с теми, в каталоге пользователя.

тогда у вас есть php-скрипт, который говорит: "Хорошо, какой был URL-адрес?"и он в основном захватывает часть после последней косой черты (или двух, если есть еще один в самом конце), и Дезинфицирует то, что он находит (это действительно важно), и говорит: "Существует ли это имя пользователя в моей БД?"Если да, он отправляет запрос в профиль пользователя, но с довольно URL-адресом (мы доберемся до этого через секунду), если нет, он отправляет их на страницу "пользователь не найден" или что угодно.

поэтому, если он найдет вашего пользователя, PHP-скрипт выведет Профиль пользователя (опять же, обязательно санируйте его. Любой пользователь jerk, который у вас может быть, может-если вы дадите им возможность-встроить вредоносный код в их собственный профиль, зная браузеры, которые просматривают профиль, выполнит этот код). Поскольку запрашиваемая страница была:

www.example.org/users/example_user

и поскольку вы используете mod_rewrite вместо перенаправления, URL-адрес остается тем же, и сценарий, который.htaccess файл подтягивает просто сбрасывает Профиль пользователя. Для посетителя они просто видят, что они поместили вышеуказанный url-адрес, и появился профиль пользователя.

вы также хотите PHP-скрипт, который проверяет, чтобы пользователь сделал перенаправление на " пользователь не найденная " страница, вместо того, чтобы просто выводить страницу "user_not_found". Это так любой, кто вставляет:

www.example.org/users/blabhaboehbohe

увидит изменение URL на

www.example.org/users/notfound/

вместо того, чтобы видеть URL-адрес остается прежним. Если хакер видит, что URL-адрес не изменяется, теперь они знают, что вы используете mod_rewrite и, следовательно, должен быть скрипт, обрабатывающий фактический вывод. Если они знают это, они могут начать сходить с ума, ища каждую дыру безопасности, которую вы, возможно, оставили открыть.

ура.


посмотри переписывать движок. Некоторые фреймворки также имеют классы для выполнения этой работы, например Zend Framework имеет Zend_Router, который вы можете использовать. Вы можете использовать это самостоятельно, другие фреймворки также имеют их, проверьте документы для вашего предпочтительного вкуса.