Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Can';t重定向到控制器仪表板_Php_Codeigniter_Authentication_Redirect_Codeigniter 3 - Fatal编程技术网

Php Can';t重定向到控制器仪表板

Php Can';t重定向到控制器仪表板,php,codeigniter,authentication,redirect,codeigniter-3,Php,Codeigniter,Authentication,Redirect,Codeigniter 3,这是登录脚本,当我登录时,我应该被引导到控制器仪表板。但是重定向不起作用。我使用codeigniter和最新版本的xampp function do_login() { $username = $_POST["username"]; $password = $_POST["password"]; $cek = $this->m_login->cek_user($username,md5($password));

这是登录脚本,当我登录时,我应该被引导到控制器仪表板。但是重定向不起作用。我使用codeigniter和最新版本的xampp

function do_login()
    {
        $username = $_POST["username"];
        $password = $_POST["password"];
        $cek = $this->m_login->cek_user($username,md5($password)); 
        if(count($cek) == 1){ //cek data berdasarkan username & pass
            foreach ($cek as $cek) {
                $level = $cek['level']; 
                $nama = $cek['nama_mhs'];
                $nim = $cek['nim'];
                $id_user = $cek['id_user'];
            }

            $all_userdata = $this->session->set_userdata(array(
                'isLogin'   => TRUE, 
                'uname'  => $username, 
                'nama'  => $nama,
                'nim'  => $nim, 
                'lvl'      => $level,
                'id_user'      => $id_user,
            ));

            $_SESSION['isLogin']   = TRUE;
            $_SESSION['uname']   = $username;
            $_SESSION['nama']   = $nama;
            $_SESSION['lvl']   = $level;
            $_SESSION['id_user'] = $id_user;
            $_SESSION['nim']   = $nim;

            print_r($this->session->all_userdata());           

            redirect('dashboard','refresh');
        }else{ //jika data tidak ada yng sama dengan database
            echo "<script>alert('Gagal Login!')</script>";
            redirect('login','refresh');
        }

    }
函数do\u login()
{
$username=$_POST[“username”];
$password=$_POST[“password”];
$cek=$this->m_login->cek_user($username,md5($password));
如果(计数($cek)==1){//cek数据需要用户名和密码
foreach($cek作为$cek){
$level=$cek['level'];
$nama=$cek['nama_mhs'];
$nim=$cek['nim'];
$id_user=$cek['id_user'];
}
$all\u userdata=$this->session->set\u userdata(数组)(
'isLogin'=>正确,
“uname”=>$username,
“nama”=>nama美元,
“尼姆”=>尼姆美元,
“lvl”=>$level,
'id\u user'=>$id\u user,
));
$\u会话['isLogin']=TRUE;
$\会话['uname']=$username;
$\会话['nama']=$nama;
$\会话['lvl']=$级别;
$\u会话['id\u user']=$id\u用户;
$\会话['nim']=$nim;
打印($this->session->all_userdata());
重定向(“仪表板”、“刷新”);
}else{//jika数据不支持yng sama dengan数据库
echo“警报('Gagal登录!')”;
重定向('login','refresh');
}
}

除了在重定向之前删除任何和所有输出外,就像注释中建议的其他输出一样(因为重定向使用http头),
redirect
函数应该接收以下两个参数之一:

1.-包括协议的完整URL(即
redirect()https://www.example.com/“);
)重定向到外部资源或

2.-重定向到内部资源时的完整控制器/方法对(即
redirect('controller/method');


在您的代码中,您似乎只重定向到控制器名称,这在某些情况下可能有效,但不能保证。如果控制器名称为
dashboard
,方法名称为
something
请尝试将重定向更改为
重定向(“dashboard/something”);
(在到达实际的
重定向
行之前,请删除
print\r
语句和可能向浏览器发送标题的所有其他输出)

删除
print\r()
和重定向前的
回显。
重定向请求时,始终确保在请求之前没有输出。没有任何输出。甚至没有空格或换行符。警告!不要使用md5进行密码哈希!甚至声明:“警告-由于此哈希算法的快速性,不建议使用此函数来保护密码。您应该使用PHP来创建安全哈希。然后您可以使用来根据哈希验证密码。谢谢,但是我应该回显什么?您有一些错误吗?您不应该回显任何内容。如我所说:”始终确保之前没有输出。没有任何输出。甚至连空格或换行符都没有。如果您回显某个内容,这就是一个输出。重定向将作为标题发送到客户端。标题在内容之前发送。如果您回显某个内容(这是一个输出),则将发送标题,然后再发送输出。这意味着您无法添加更多标题(就像location(redirect)标题)之后。而且,由于您告诉浏览器要重定向,所以输出内容没有意义。