Как вы знаете, CodeIgniter использует маршрутизацию URL по умолчанию class/function/parameters
. Класс является контроллером, а функция, вызываемая внутри класса контроллера, является второй частью URL. Тем не менее, пользователь может легко изменить URL-адрес на любой, который он хочет, и я хочу, чтобы мое приложение могло отображать изящное сообщение об ошибке, если пользователь пытается просмотреть функцию, которая не существует. Я просмотрел документацию CodeIgniter на контроллерах , и, кажется, ее там нет в списке, или, возможно, я ее пропустил. Вот пример того, о чем я говорю.
<?php
class Users extends MY_Controller {
function index(){ //do something }
function something_else(){ //do something else }
}
Мое приложение написано чисто и продуманно, поэтому в моем приложении никогда не будет ссылки, которая ведет к чему-либо, кроме этих двух функций. Тем не менее, пользователь может легко изменить URL-адрес на что угодно, например, http://www.mysite.com/welcome/another_thing
. У меня нет function another_thing
, поэтому, если пользователь изменил URL на что-то подобное, PHP в настоящее время выдает следующее сообщение об ошибке.
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Users::$session
Filename: core/MY_Controller.php
Line Number: 15
Fatal error: Call to a member function userdata() on a non-object in /home/diftx/public_html/dol/application/core/MY_Controller.php on line 15
В настоящее время у меня есть расширение MY_Controller вместо CI_Controller, которое я не уверен, имеет ли какое-либо отношение к этому. Я бы подумал, что приложение должно перенаправить в мое представление по умолчанию для 404 ошибок, что not_found.php
, однако этого не происходит.