2013-03-01 77 views
0

我做了登录功能,只有我得到一个内部服务器错误。 我已检查功能,但我没有看到问题。PHP MySQL登录功能问题

如果我用这个:

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的形式

*更新调用这个函数:添加FROM到查询看到溶液1

+0

如果这是一个开发系统,您应该考虑打开'display_errors'。如果是生产,那么使用'log_errors'和'error_log',这样你就可以看到实际的错误信息。 – juco 2013-03-01 09:14:29

+0

500内部服务器错误主要是由于服务器配置或.htaccess文件中的问题。请检查它们。 – 2013-03-01 09:14:34

+0

如果您遇到500错误,PHP日志应该显示您在执行上述代码时遇到的错误。您应该找到该日志,并检查错误。如果仍然无法排除问题,请发布错误日志的最后15行。 – aaaaaa123456789 2013-03-01 09:14:38

回答

1

我发现了这个问题。

因为我没有看到任何错误,我发现后,我更改查询(我错过了像Yogesh Suthar说FROM)我发现提取选项无法正常工作。所以我改变了功能:

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; 
    } 
} 

两个突出显示的项目我改变了。

此后登录功能运行良好。

谢谢你们帮助我。

0

您在查询忘记from

$ps = $this->db->prepare('SELECT * FROM `r_users` WHERE `username` = :username'); 
           ^here is problem 
+0

我已经修正了这个只是这不是最终的解决方案。 我仍然只有错误日志和PHP显示错误给我没有东西的错误 – 2013-03-01 09:25:07

0

internal server error (500)表示“查看服务器错误日志”。
因此,您必须找到错误日志并阅读错误消息。