1

我的 PHP 登录脚本遇到了非常困难(很难找到)的问题。我正在使用会话来使用标准发送表单和使用此脚本进行登录:

public function login($user, $password)
    if (!empty($user) && !empty($password))
    {    
      $user = $web->esc($user);
      $password = $web->Hash($user, $password);

      $db->selectDb('login');
      $qw = mysql_query("SELECT * FROM account WHERE username='".$user."' AND pass='".$password."'");

      if (mysql_num_rows($qw) > 0)      
      {    
        $result = mysql_fetch_array($qw);
        $_SESSION['user_name'] = $result['username'];
        $_SESSION['user_id'] = $result['id'];  
        return true; 
...
...

在登录时,我使用的是这样的东西:

if(isset($_POST["send"]))
{
  if($auth->login($_POST["name"], $_POST["pass"]))
  {
    header("location: ./");  
  }
}
else         
...
...

它工作得很好,但在 Opera 和其他浏览器中有时会出现问题。例如,当我登录 Opera、Google Chrome 等时 - 填写我的表单并发送它 - 它只是“卡在”登录表单上,并且在登录后从不让我看到我的页面 - 它在其他浏览器中工作 - 我只是不看看为什么在某些浏览器中它不工作的问题。你知道如何解决这个问题吗?谢谢你。

4

3 回答 3

1

在标头位置之后:您必须确保 PHP 不会发送数据。所以试着把函数放在exit();头函数之后。

于 2012-05-26T10:37:08.317 回答
1

激活错误报告并显示错误。

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('scream.enabled', TRUE);

它应该向您显示“已在文件文件中发送警告标题行”。

如果您在第一个 index.php 文件中的某处编写错误报告语句并且代码包含在您的索引中,那将是更可取的。因为没有显示当前文件中的解析错误,所以它只会给你一个白屏。

于 2012-05-26T10:41:08.143 回答
1

出现这些错误后,问题解决了:

Warning: Unknown: open(/var/lib/php5/sess_5019088d181146779ffc848a095c27ff, O_RDWR) failed: No space left on device (28) in Unknown on line 0

Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php5) in Unknown on line 0

在 php.ini 的设置中改变这个:

session.save_path = /tmp

一切都很好,感谢 Mihai Stancu 的错误分析代码。

于 2012-05-28T10:34:11.787 回答