【发布时间】:2018-03-12 17:54:44
【问题描述】:
我正在尝试将用户重定向到查看页面(管理员或成员),具体取决于密码是否在数据库中匹配。这与我想要的完全相反,我没有看到错误。空白表单提交或不正确的用户名/密码将它们发送到管理页面,同时正确的输入将它们发送给成员。为什么这会倒退?
public function loginFunc()
{
$username = (string)$this->input->post('username');
$password = (string)$this->input->post('password');
if((strlen($username)<1)||(strlen($password)<1)){
$blank = 1;
}
$actualPass = (string)$this->db->query("SELECT password FROM usersas6 WHERE username = '$username' ");
if($actualPass == $password){
header("Location: /CodeIgniter-3.1.7/index.php/admin");
}else{
header("Location: /CodeIgniter-3.1.7/index.php/members");
}
}
【问题讨论】:
-
永远不要存储纯文本密码!请使用 PHP 的built-in functions 来处理密码安全问题。如果您使用的 PHP 版本低于 5.5,您可以使用
password_hash()compatibility pack。 在散列之前不需要escape passwords 或对它们使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。 -
根据您在此处发布的代码,除非
$password为空白且$actualPass为空白,否则您不应看到该行为。当你回显这些变量时,你会得到什么? -
这可能是一个愚蠢的问题,但我将如何回显控制文件中的变量?我通常这样做的方式我什么也没看到
-
你会使用
echo,然后你可能需要exit。注释掉任何重定向。 -
我也收到一个错误,无法将其转换为字符串 $actualPass = (string)$this->db->query("SELECT password FROM usersas6 WHERE username = '$username'" );
标签: php mysql codeigniter