2

次のPHPコードを使用してセッションを確認しています。ただし、セッションがログインしていない場合、ページはリダイレクトされず、黒いページが表示されます。

私のIf条件は正しいです!ヘッダー関数にヒットしています..これが私のコードです:

if(
    !isset($_SESSION['SESS_MEMBER_ID']) 
    || (trim($_SESSION['SESS_MEMBER_ID']) == '') 
    AND !isset($fb_login)
) {
    header("location:login.php?msg=Please+Login+Again.");
}

提案を歓迎します!

HTTP/1.1 200 OK
Date: Wed, 10 Oct 2012 10:57:14 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.3
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
4

9 に答える 9

21

header("Location: ");コンテンツを出力した後に使用している場合ob_start();は、スクリプトの前に置いていることを確認してください。スクリプトをバッファリングするため、呼び出すかファイルの最後に到達するob_start();まで何も出力されません。コンテンツが既にブラウザに出力された後にob_end();呼び出すと、問題が発生する可能性があります。header("Location: ");

于 2012-10-10T11:56:58.873 に答える
8

ob_start (); を入れます。PHPファイルの冒頭で、それは役立ちます、

<?php
    ob_start();
    /*
    Your code
    */
 ?>
于 2012-10-10T11:24:25.137 に答える
3

必ず出口を入れてください。または死ぬ; コマンドの後:「場所」を大文字で始める

if (!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '') AND !isset($fb_login)) {           
    header("Location:login.php?msg=Please+Login+Again.");
    exit;
}
于 2012-10-10T11:06:22.940 に答える
2

首都にするL

 header("Location: login.php?msg=Please+Login+Again.");
 exit(); // just a precaution
于 2012-10-10T11:05:50.777 に答える
1

ヘッダーを正しくフォーマットしてみてください。

header("Location: login.php?msg=Please+Login+Again.");

そしてもちろん、呼び出しの前に (意図的または誤って) 出力を送信していないことを確認してください。

于 2012-10-10T11:06:00.637 に答える
1
header("Location: login.php?msg=Please+Login+Again.");
exit();
于 2012-10-10T11:06:13.407 に答える
0

他の人が言ったことに加えて、header() をヒットする条件が満たされていると確信していますか?

empty() を使用してコードをクリアし、いくつかのテストを行うことができます:

//Debug
unset($_SESSION['SESS_MEMBER_ID']);
unset($fb_login);

if(empty($_SESSION['SESS_MEMBER_ID']) && !isset($fb_login)) {
    exit(header("Location: login.php?msg=Please+Login+Again."));
}
于 2012-10-10T11:26:57.337 に答える
0

ANDfor を変更してみてください&&

if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '') && !isset($fb_login)
    ) {
        header("location:login.php?msg=Please+Login+Again.");
    }
于 2012-10-10T11:27:34.863 に答える
0

1) header() 関数の前に何も送信しないようにしてください

2) "場所" を "場所: " にします。

于 2012-10-10T11:06:20.467 に答える