Вызов функции контроллера, которая не существует в CodeIgntier - PullRequest
0 голосов
/ 07 февраля 2012

Как вы знаете, 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, однако этого не происходит.

Ответы [ 4 ]

1 голос
/ 08 февраля 2012

Вы можете использовать Функция переназначения

0 голосов
/ 08 февраля 2012

Из этой ошибки видно, что вы добавили функциональность сеанса к настроенному контроллеру и неправильно ссылаетесь на него. Устранение этой проблемы, скорее всего, решит вашу проблему.

Я бы хотел по-другому взглянуть на вашу систему входа в систему, так как кажется, что она работает неправильно, как работает codeigniter. Если хотите, покажите нам, как выглядит ваш измененный контроллер, и мы, возможно, можем вам помочь, в противном случае вы в значительной степени одиноки.

0 голосов
/ 08 февраля 2012

Мне кажется, что это вызвало еще одну ошибку, связанную с 'Message: Undefined property: Users :: $ session' в вашем MY_Controller (возможно, в конструкторе).

Если вы исправите это, я думаю, что маршрут переопределения 404 будет работать.

0 голосов
/ 07 февраля 2012

Вы можете использовать маршруты. Php:

application/config/routes.php

$route['404_override'] = 'controller/error_function';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...