用户可以直接访问模型中的函数吗? 用户可以直接将参数传递给模型中的函数吗?或者,参数是否必须通过php传递?
换句话说:
我有一个名为notification的模型,在那里有一个名为get_notifs($user)
的函数......我使用控制器调用函数,如get_notifs($_SESSION['user_id'])
(加密)。我不希望有人能够用{$ 1se}作为参数调用get_notifs()
。什么是最好的解决方案?
get_notifs()
重命名为
_get_notifs()
?$_SESSION['user_id']
本身?我有一个控制器:ajax.php,它加载模型通知
function __construct()
{
parent::__construct();
$this->load->helper('url');
$this->load->library('tank_auth');
$this->load->model('notification');
$this->load->model('search');
}
function get_notifs()
{
$me = $this->session->userdata('user_id');
if ($e = $this->notification->get_notif($me))
{
...........
}
else{
echo "nothing was found wtf?";
}
............................................... .......... 型号:notification.php
function get_notifs($user){
......
}
答案 0 :(得分:1)
get_notifs()
重命名为_get_notifs()
吗?
$_SESSION['user_id']
吗?
听起来似乎是你的应用程序可能被其他人使用,即公共开发人员,你为什么要强制开发人员按你自己的方式编写代码,这会让他们对你的应用程序感到不安。
CI仅将请求路由到控制器,用户无法访问模型或库或任何其他类,路由如下:/controller/method/param
第一个段只会加载一个控制器文件,第二个段将调用param中的方法,将任何其他变量(如param)传递给该方法。 资料来源:http://codeigniter.com/user_guide/overview/appflow.html
从上面的流程图中可以看出,只有控制器才能访问模型的
答案 1 :(得分:0)
如果您只在会话中使用它,最好的方法是:
function get_notifs(){
if(!isset($_SESSION['user_id'])){
return false;
}
$user = $_SESSION['user_id'];
/* Your code here */
}
当你只使用一个特定变量的函数时,没有必要进行论证,这个变量也是全局可用的。
编辑:我不知道为什么你在模型中使用函数。没有任何意义,你的意思是方法吗?