Intereting Posts
PHP добавить html break после каждого 10-го результата mysql PHP: Предупреждение mcrypt_generic_init (): размер Iv неверен; длина: 12, необходимо: 8 Тестирование SQL-запроса для True или False Paginate TEMPORARY TABLE в CakePHP? Пример PHP.ini для включения сеансов? Невозможно получить доступ к моим данным профиля при доступе к API google-people Как создать документацию по автоматическому коду для проекта PHP? Сколько байтов достаточно для twitter? Как отправить динамическое содержимое электронной почты без задания cron Поставляемый ключевой параметр не может быть принудительно введен в закрытый ключ с API Google Проверка незаполненных полей с помощью PHP Получить весь простой продукт из настраиваемого продукта в представлении продукта Magento Как проверить, является ли загруженный файл изображением без типа mime? Получить твиттер видео mp4 url laravel разница сеанса :: flash и request-> session-> flash

Facebook как пользовательский URL профиля PHP

Создание веб-сайта, и я хочу добавить URL-адрес настраиваемого профиля для всех пользователей моего сайта (например, facebook).

На моем веб-сайте уже есть такая страница, как http://sitename.com/profile.php?id=100224232

Тем не менее, я хочу сделать зеркало для тех страниц, которые относятся к их имени пользователя. Например, если вы перейдете на страницу http://sitename.com/profile.php?id=100224232, он перенаправляет вам http://sitename.com/myprofile

Как мне это сделать с PHP и Apache?

Нет папок, нет index.php

Просто взгляните на этот учебник .

Изменить: это всего лишь сводка.

0) Контекст

Я предполагаю, что нам нужны следующие URL-адреса:

http://example.com/profile/userid (получить профиль по ID)
http://example.com/profile/username (получить профиль по имени пользователя)
http://example.com/myprofile (получить профиль текущего пользователя)

1) .htaccess

Создайте файл .htaccess в корневой папке или обновите существующий файл:

Options +FollowSymLinks # Turn on the RewriteEngine RewriteEngine On # Rules RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php 

Что это делает?

Если запрос предназначен для реального каталога или файла (который существует на сервере), index.php не обслуживается, иначе каждый URL-адрес перенаправляется на index.php .

2) index.php

Теперь мы хотим знать, какое действие нужно вызвать, поэтому нам нужно прочитать URL-адрес:

В index.php:

 // index.php // This is necessary when index.php is not in the root folder, but in some subfolder... // We compare $requestURL and $scriptName to remove the inappropriate values $requestURI = explode('/', $_SERVER['REQUEST_URI']); $scriptName = explode('/',$_SERVER['SCRIPT_NAME']); for ($i= 0; $i < sizeof($scriptName); $i++) { if ($requestURI[$i] == $scriptName[$i]) { unset($requestURI[$i]); } } $command = array_values($requestURI); с // index.php // This is necessary when index.php is not in the root folder, but in some subfolder... // We compare $requestURL and $scriptName to remove the inappropriate values $requestURI = explode('/', $_SERVER['REQUEST_URI']); $scriptName = explode('/',$_SERVER['SCRIPT_NAME']); for ($i= 0; $i < sizeof($scriptName); $i++) { if ($requestURI[$i] == $scriptName[$i]) { unset($requestURI[$i]); } } $command = array_values($requestURI); 

С URL-адресом http://example.com/profile/19837 команда $ будет содержать:

 $command = array( [0] => 'profile', [1] => 19837, [2] => , ) 

Теперь нам нужно отправить URL-адреса. Мы добавляем это в index.php:

 // index.php require_once("profile.php"); // We need this file switch($command[0]) { case 'profile' : // We run the profile function from the profile.php file. profile($command([1]); break; case 'myprofile' : // We run the myProfile function from the profile.php file. myProfile(); break; default: // Wrong page ! You could also redirect to your custom 404 page. echo "404 Error : wrong page."; break; } 

2) profile.php

Теперь в файле profile.php у нас должно быть что-то вроде этого:

 // profile.php function profile($chars) { // We check if $chars is an Integer (ie. an ID) or a String (ie. a potential username) if (is_int($chars)) { $id = $chars; // Do the SQL to get the $user from his ID // ........ } else { $username = mysqli_real_escape_string($char); // Do the SQL to get the $user from his username // ........... } // Render your view with the $user variable // ......... } function myProfile() { // Get the currently logged-in user ID from the session : $id = .... // Run the above function : profile($id); } 

Заключить

Хотел бы я, чтобы я был достаточно ясен. Я знаю, что этот код не очень хорош, а не в стиле ООП, но он может дать некоторые идеи …