PHP 登录脚本在某些浏览器中无法“刷新”


PHP login script not "refreshing" in some browsers

我的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、谷歌浏览器等时 - 填写我的表单并发送它 - 它只是"卡在"登录表单上,登录后永远不会让我看到我的页面 - 它在其他浏览器中工作 - 我只是看不出为什么在某些浏览器中它没有摇摆不定的问题。你知道怎么解决这个问题吗?谢谢。

在标头位置之后:你必须确保 PHP 不会发送数据。因此,请尝试将函数exit();放在标头函数之后。

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

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

它应该显示"警告标头已在行的文件文件中发送"。

最好是将错误报告语句编写在第一个索引.php文件中,并且代码包含在索引中。由于当前文件中的解析错误不会显示,因此只会显示白屏。

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

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的错误分析代码。