Есть условный массив, в котором есть название функции и ссылка для запуска.
Логика работы.
Заходим на сайт, на главную, открывается главная.
Дописываем /login, бросает на login.
Дописываем в конце абаркадабру и видим ошибку 404.
Как сделать такое? Кусок кода вот:
public function display($routes) {
$path = $this->getRequestPath();
$callf = new RouterPaths();
foreach ($routes as $key => $value) {
//if ($path === $value) {
if ($routes[$key] == $path) {
if (method_exists($callf, $key)) {
$callf->$key();
} else {
echo 'ERROR: Фатальная ошибка, не найдена функция, выход.';
exit;
}
}
}
}
Я никак не могу прикрутить сюда функцию ошибки, foreach всё перебирает, и в итоге если я добавляю в любом условии else, elseif то дописывается 404 в конце, либо ничего не открывается (везде наоборот 404) кроме главной, а на главной в конце 404...
Сейчас в этом коде нет обработки линка, ну или пути, который не определён в массиве и у него нет функции.
PHP
Есть тут гуру PHP которые знают толк в переборах массивов? (вопрос внутри)
...Дописываем /login и это уже не php, а сам web-сервер ищет подпапку login и пытается ее показать.
То, что вы хотите достичь, реализуется:
- либо указанием директив самому web-серверу;
- либо созданием подпапки login, а в ней скрипт, который кидает на вход в админку;
- либо видоизменением ссылки: посылать не на site.tld/login, а на site.tld?action=login, в этом случае все возможные (и невозможные) ссылки будут обрабатываться одним вашим обработчиком, где вы будете проверять, а не равно ли $_GET["action"] значению "login"? и если равно, то посылать в админку, а если не равно, посылать на сайт Диснея или на 404.
Второй вариант хорош тем, что все не "/login" сами будут автоматом 404. Но есть и минусы, скриптов будет более одного, их надо будет согласовывать и отлаживать совместно.
То, что вы хотите достичь, реализуется:
- либо указанием директив самому web-серверу;
- либо созданием подпапки login, а в ней скрипт, который кидает на вход в админку;
- либо видоизменением ссылки: посылать не на site.tld/login, а на site.tld?action=login, в этом случае все возможные (и невозможные) ссылки будут обрабатываться одним вашим обработчиком, где вы будете проверять, а не равно ли $_GET["action"] значению "login"? и если равно, то посылать в админку, а если не равно, посылать на сайт Диснея или на 404.
Второй вариант хорош тем, что все не "/login" сами будут автоматом 404. Но есть и минусы, скриптов будет более одного, их надо будет согласовывать и отлаживать совместно.
Кирилл Селило
я роутер пишу, без единой папки
тамилиразныепотрараввызновызкрыногвьяныхмисокисамигагныйеприпро
Цо сом робишь? Цо впхашь? Грузд опан смердяка. Ми болит на х
О чем там?
суць интай в цвай зизу
Цо сом робишь? Цо впхашь? Грузд опан смердяка. Ми болит на х
О чем там?
суць интай в цвай зизу
Кирилл Селило
Японский городовой, а по-русски можно?
Александр Самарцев
Ты спросил бредовее чем я, можешь по-подробнее?
Это MVC. Например, у меня при http:// name/posts/2 будет выведена 404 или, если пост есть, его контент и т. п.
Почитав твои комментарии под ответами я понял, что ты пишешь маршрутизатор, т. е. работаешь с MVC, например мой роутер (github.com/Pavel122/solar-framework/blob/master/vendor/core/Router.php) работает благодаря двум правилам htaccess, которые перенаправляют всё в public/index.php, где анализируются данные и подгружается соответствующий контент.
Твой код подправить не могу, ибо понятия не имею, как выглядит класс RouterPaths и всё такое. Залей свой код на гитхаб.
Почитав твои комментарии под ответами я понял, что ты пишешь маршрутизатор, т. е. работаешь с MVC, например мой роутер (github.com/Pavel122/solar-framework/blob/master/vendor/core/Router.php) работает благодаря двум правилам htaccess, которые перенаправляют всё в public/index.php, где анализируются данные и подгружается соответствующий контент.
Твой код подправить не могу, ибо понятия не имею, как выглядит класс RouterPaths и всё такое. Залей свой код на гитхаб.
Кирилл Селило
Там только имена функций с кодом echo 'main'; и только
Кирилл Селило
Слил)
(github.com/XrTV/xcode-cms)
(github.com/XrTV/xcode-cms)
Ошибочно
Ты спросил бредовее чем я, можешь по-подробнее?
Похожие вопросы
- Языка программирования не знаю, но создал свой сайт. Вопрос в выборе хостинга
- Вопрос людям знающим php.
- Php + Sql. Если значение массива == 'значение' , делать действие с предыдущими элементами
- Вопрос начинающего программиста Python\PHP
- PHP. Почему нельзя применять функцию count() к строкам? Ведь строка это тот же массив
- Нужно ли знать HTML, чтобы учить PHP ?
- PHP Polling ChatGPT
- Чтобы изучение PHP обязательно ли знать HTML просто я не знаю html но я хочу изучить PHP
- Не работает PHP include на хостинге
- Можно ли сделать браузернаю игру зная только HTML, CSS, PHP, MySQL(без JS), ненавижу язык JS