Передача странице PHP GET переменных
У меня есть страница, которая принимает GET переменные
blabla.ru/index?e=123
Но такой вид ссылки выглядит не очень.
Видел, что на многих сайтах, например новости, отображаются по пути типа
blabla.ru/news/123/
Не думаю, что под каждую новость у них создаётся страница. Как можно передавать переменную по ссылке в таком виде?
Я что-то слышал про query field или path field, вроде так называется, но гугля эти названия ничего не нашёл =(
Помогите, пожалуйста, реализовать
Ответы (1 шт):
Вам необходимо ознакомиться с понятием роутингов на PHP.
В случае когда вы используйте хостинг у вас имеется замечательный файл .htaccess, если его нет, то создайте его в корне сайта.
Этот файл поможет вам направить пользователя на специальный файл который будет отображать содержимое. Вот например такой код, который укажет что если человек обратился не к файлу и не к папке, то открыть запустить файл router.php
Код для .htaccess
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ router.php [QSA,L]
В свою очередь в файле router.php который лежит рядом с .htaccess вы получаете адрес который вбил пользователь и разбираете его по кусочкам
$path = explode('/', filter_var($_SERVER['REQUEST_URI'], FILTER_SANITIZE_URL));
В итоге здесь у меня массив $path в котором есть части пути разделяемые слешем.
Далее если примитивно, то пишем
if($path[2]=='superPage'){
require_once('pages/superpage.php');
}
Если пользователь зашел на страницу mydomen/dir/superPage
то вы ему откроете pages/superpage.php хотя url выглядит красивее)
Ну а вместо гет запроса тогда можно просто использовать часть пути, хотя идея так себе. В современности, приложения посылают данные с помощью JS.
Как то так)