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 に答える