我已经创建了一个登录功能,但我收到内部服务器错误。 我已经检查了这个功能,但我没有看到这个问题。
如果我使用它:
function login($username, $password) {
if (!isset($username) || !isset($password)) {
return false;
}
if ($this->db->selectOne('r_users', array('username' => trim($username), 'password' => md5(trim($password))))) {
$_SESSION['username'] = $_POST['username'];
$_SESSION["ipaddr"] = $_SERVER["REMOTE_ADDR"];
return true;
} else {
return false;
}
}
我可以登录网站
但是我想扩展它以从数据库中获取更多信息以创建会话,所以我创建了这个:
function login($username, $password) {
if (!isset($username) || !isset($password)) {
return false;
}
if ($this->db->selectOne('r_users', array('username' => trim($username), 'password' => md5(trim($password))))) {
$data = array();
$ps = $this->db->prepare('SELECT * FROM `r_users` WHERE `username` = :username');
$ps->bindParam(':username', $_POST['username'], PDO::PARAM_STR);
$ps->execute();
$result = $ps->fetchAll(PDO::FETCH_ASSOC);
foreach($result as $row) {
$data[] = $row;
}
$_SESSION['username'] = $data['username'];
$_SESSION["ipaddr"] = $_SERVER["REMOTE_ADDR"];
return true;
} else {
return false;
}
}
但这给了我一个内部服务器错误(500),但我不知道问题出在哪里。 谁有任何想法?
该网站建立在一个聪明/苗条的框架基础上,我通过jquery / php形式调用此函数
* update:将FROM添加到查询中,参见解决方案1
答案 0 :(得分:1)
我找到了问题。
因为我没有看到任何错误,我发现在我更改查询后(我错过了像Yogesh Suthar所说的FROM)我发现fetch选项无法正常工作。所以我把功能改为:
function login($username, $password) {
if (!isset($username) || !isset($password)) {
return false;
}
if ($this->db->selectOne('r_users', array('username' => trim($username), 'password' => md5(trim($password))))) {
$ps = $this->db->prepare('SELECT * FROM `r_users` WHERE `username` = :username');
$ps->bindParam(':username', $_POST['username'], PDO::PARAM_STR);
**$ps->setFetchMode(PDO::FETCH_ASSOC);**
$ps->execute();
**$data = $ps->fetch();**
$_SESSION['username'] = $data['username'];
$_SESSION["ipaddr"] = $_SERVER["REMOTE_ADDR"];
return true;
} else {
return false;
}
}
我更改了两个突出显示的项目。
此后登录功能正常运行。
谢谢你们帮助我。
答案 1 :(得分:0)
您在查询中忘记了from
$ps = $this->db->prepare('SELECT * FROM `r_users` WHERE `username` = :username');
^ here is problem
答案 2 :(得分:0)
internal server error ( 500 )
表示“查看服务器错误日志”
因此,您必须找到错误日志并阅读错误消息。