Php Can';t重定向到控制器仪表板
这是登录脚本,当我登录时,我应该被引导到控制器仪表板。但是重定向不起作用。我使用codeigniter和最新版本的xamppPhp 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));
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)标题)之后。而且,由于您告诉浏览器要重定向,所以输出内容没有意义。