这段代码假设比较$_COOKIE
变量的值并相应地向前移动,但我得到错误
未定义的索引=类型
这是代码 -
if ($result != false) {
$session_data = array(
'username' => $result[0]->username, //THIS WAS PREVIOUSLY user_name
'password' => $result[0]->password,
'type' => $result[0]->type,
);
// Add user data in session
$this->session->set_userdata('logged_in', $session_data);
if (in_array($_COOKIE['type'], array("Admin", "User", "Library")))
switch ($_COOKIE['type']) {
case "Admin":
$this->load->view('admin_page');
break;
case "User":
$this->load->view('viewtry');
break;
case "Library":
echo "yes";
break;
default:
echo "no";
}
**** **** UPDATE
我解决了我的问题,我所做的只是将$_COOKIE['type']
的两个实例替换为我先前声明的变量$type
。有点愚蠢的我忽略了这一点。
感谢您的解决方案。
答案 0 :(得分:2)
$COOKIE
没有type
密钥。因此,在获得type
的值之前,您应该检查type
是否已定义。您可以使用名为isset
的函数来检查密钥。
if ($result != false) {
$session_data = array(
'username' => $result[0]->username, //THIS WAS PREVIOUSLY user_name
'password' => $result[0]->password,
'type' => $result[0]->type,
);
// Add user data in session
$this->session->set_userdata('logged_in', $session_data);
if (isset($_COOKIE['type']) && in_array($_COOKIE['type'], array("Admin", "User", "Library")))
switch ($_COOKIE['type']) {
case "Admin":
$this->load->view('admin_page');
break;
case "User":
$this->load->view('viewtry');
break;
case "Library":
echo "yes";
break;
default:
echo "no";
}
答案 1 :(得分:0)
您应该避免在switch
块中使用if
逻辑。请考虑以下内容:
$user_type =
(in_array($_COOKIE['type'], array("Admin", "User", "Library")))
? $_COOKIE['type']
: NULL;
switch ($user_type) {
case "Admin":
$this->load->view('admin_page');
break;
case "User":
$this->load->view('viewtry');
break;
case "Library":
echo "yes";
break;
default:
echo "no";
}
这样,如果$user_type
未传递到请求中,NULL
设置为$_COOKIE['type']
,那么它将作为default
中的switch
进行处理}}