【发布时间】:2012-02-07 19:41:06
【问题描述】:
如您所知,CodeIgniter 使用默认的 URL 路由 class/function/parameters。该类是一个控制器,在控制器类内部调用的函数是 URL 的第二部分。但是,用户可以轻松地将 URL 更改为他想要的任何内容,并且我希望我的应用程序能够在用户尝试查看不存在的功能时显示优雅的错误消息。我查看了CodeIgniter documentation on controllers,它似乎没有在其中列出,或者我错过了它。这是我所说的一个例子。
<?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 但是这不会发生。
【问题讨论】:
-
你不使用codeigniters默认控制器的目的是什么?我的默认 codeigniter 设置让我进入 404 页面
-
我的登录系统的工作方式在该控制器中使用了一些额外的函数和变量,我想不出更好的地方来放置它们。我在我的新控制器的构造函数中添加了
parent::__construct(),认为它具有默认控制器的所有相同功能,但显然不是。
标签: php codeigniter