1

次のヘッダー関数が機能していません。ユーザーがログインしていない場合、ログインしようとしています-

    <?PHP
    if (logged_in() === false) {
    header('Location: login.php');
    }
    ?>

しかし、もしそうなら -

    <?PHP
    if (logged_in() === false) {
    echo"No user is logged in";
    }
    ?>

それはエコーし、ユーザーがログインしていないと言っていることがわかります

基本的には、ログインしているユーザーがいるかどうかを確認するだけです

    function logged_in() {
    return (isset($_SESSION['user_id'])) ? true : false;
    }
4

3 に答える 3

2

ヘッダーの後にexit () またはdie ()を配置してみてください

  if (logged_in() === false) {
      header('Location: login.php');
      exit();    //or die();
  }

ただし、 login.php が同じフォルダーにあることを確認してください

于 2013-06-07T05:15:13.737 に答える
1

コードに出力 (空白も) がないことを確認してください。

ob_start() と ob_end_flush() を使用して出力をクリアできます。

<?php ob_start();

 // code 

ob_end_flush(); ?>
于 2013-06-07T05:45:18.290 に答える
0

おそらく、完全修飾ドメインと新しい URL へのパスを含める必要があります。ヘッダー関数の公式ドキュメントには、そのように示すメモがあります。

ノート:

HTTP/1.1 は » Location: への引数として絶対 URI を必要とします: スキーム、ホスト名、絶対パスを含みますが、一部のクライアントは相対 URI を受け入れます。通常、$_SERVER['HTTP_HOST']、$_SERVER['PHP_SELF']、および dirname() を使用して、相対 URI から絶対 URI を自分で作成できます。

このメモには、次のコード サンプルも含まれています。

<?php 
/* Redirect to a different page in the current directory that was requested */ 
$host  = $_SERVER['HTTP_HOST']; 
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); 
$extra = 'login.php';
header("Location: http://$host$uri/$extra"); 
exit; 
?>
于 2013-06-07T05:23:55.970 に答える