Динамический php короткий URL
Так что я использую стиль процедурного программирования в PHP с 2006 года. Но последние 4 с лишним года упускали возможность улучшаться.
Недавно я начал больше признавать объектно-ориентированное программирование.
Больше всего на это указывает мне стиль организации MVC и короткие URL-адреса.
вместо того, чтобы URL был "index.php?page=profile&member=1", это было бы "page/profile/member/1".
Я пытаюсь изучить архитектуру ООП и MVC с использованием широкого спектра ресурсов, но это все еще слишком сложно для меня. Даже через месяц!
Я всегда просто использовал базовую функцию (и т. Д.) {}, If,else, и, или операторы и SQL-запросы, чтобы выполнить работу. Эти знания до сих пор в основном покрывали все, что мне нужно.
Я задаюсь вопросом, есть ли способ использовать мой основной стиль процедурного программирования и все же достичь сокращенных URL-адресов?
Я попробовал этот метод ниже
.htaccess
RewriteEngine On
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ index.php?page=$1 [L]
index.php
<?php
$links = parse_ini_file('links.ini');
if (isset($_GET['page']) && array_key_exists($_GET['page'], $links)) {
require $links[$_GET['page']];
}
else {
echo '
Home page or unknown link
';
}
links.ini
members = pages/members.php
profile = pages/profile.php
Этот метод работает просто на сокращение URL, но я не знаю, как заставить его работать с profile/user/1 или index.php? Page=profile&user=1 (переменная пользователя является запросом к базе данных)
Любая помощь будет принята с благодарностью!!!
1 ответ
Вы можете сделать это с помощью так называемого фронт-контроллера. Эта статья Sitepoint может помочь понять концепцию, но она не должна быть объектно-ориентированной, чтобы ее реализовать.
По сути, вместо того, чтобы переписывать текст, вы просто перенаправляете все запросы наindex.php
:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php
Теперь внутриindex.php
Вы можете выбрать запрос вместе сparse_url
и обрабатывать запрос, как вы хотите.