Как создать профили пользователей с помощью 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:
- создайте каталог под названием "пользователи".
-
внутри этого каталога сделайте .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, который вы можете использовать. Вы можете использовать это самостоятельно, другие фреймворки также имеют их, проверьте документы для вашего предпочтительного вкуса.