Как разрешить пользователю «the option» создавать собственный URL в PHP

#php #mysql #.htaccess #mod-rewrite

#php #mysql #.htaccess #мод-переписать

Вопрос:

Использование mod_rewrite для использования $ _GET [‘variable’] для захвата информации / страниц достаточно просто. Как вы даете пользователю возможность сделать это. Например: Там URL есть blah.com/user?id=74378 по умолчанию. Теперь они могут вручную создать там собственный URL, если таковой имеется. Как это делается? Спасибо

Ответ №1:

Вы могли бы поддерживать таблицу со списком используемых URL-адресов. Это делается для проверки и предупреждения пользователя, если URL недоступен. Затем, если пользователь попытается, blah.com/user/myspecialurl должен быть вызван htaccess blah.com/user?url=myspecialurl . Затем используйте таблицу, чтобы найти идентификатор пользователя и получить содержимое, используя переменную GET.

Все это при условии, что у вас есть фиксированный формат / ограничения для URL

Комментарии:

1. Правильно, достаточно просто. Итак, наряду с таблицей «if_available_url» я мог бы добавить столбец URL в таблицу «users», по умолчанию пустой, а затем ОБНОВИТЬ его, если пользователь укажет URL. В PHP-скрипте я могу создать if / else для того, запрашивать ли новый URL-адрес, если он установлен. В противном случае по умолчанию было бы установлено значение if user_id.

2. Как и в любом проекте, вам нужно быть осторожным со схемой вашей базы данных. В зависимости от того, какие сведения вам понадобятся из таблицы user или таблицы url, вы можете напрямую использовать user таблицу или добавить userid поле в if_url_available таблицу. В любом случае, схема — это то, что будет очень специфично для ваших нужд.

Ответ №2:

Поможет первая часть, anything, на этой странице, где anything = определяемая пользователем строка, и вы обрабатываете эту строку как переменную GET на фиксированной странице.

http://www.sitepoint.com/guide-url-rewriting-2/

Ответ №3:

используйте модуль php mod_rewrite и правила в htaccess:

 RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
  

и в index.php:

 $page = isset($_GET['page']) ? $_GET['page'] : 'index';
// filter var $page
// ..
// then include needed page
include './pages/'.$page;
// or get content from sql
sql(..WHERE page = $page..)