0

私はphpページ(index.php)を持っています。ユーザー名とパスワードを確認した後、セッションが設定され($ _SESSION ['expire'])、30分後に期限切れになり、設定が解除されます(ログインボタンを押してから30分)そして再び index.php にリダイレクトします:

header('location:index.php');

確認後、その項目の 1 つが ContentManager.php であるメニューがインデックス ページに表示されます。以下に示すように、この項目をクリックすると、データベースに接続され、contentmanager.php に入ります。

switch($_REQUEST['action'])
{
case 'ContentManager' : 
include('model/content.php');
$contents = getContent($conn);
include('view/contentmanager.php');
break;
}

私が持っているContentManger.phpで:

<?php
//if the session is not unset and expired yet
    if ( isset($_SESSION['expire']) && ($now<= $_SESSION['expire']))
{   
?>
do sth...

<?php
}
else
{
//unset the session and redirect to index.php again
unset($_SESSION['expire']);
session_destroy(); 
header('location:../index.php');}
?>

これは正常に機能しますが、問題は、30分経過した後、「ContentManager」を2回押してindex.phpにリダイレクトする必要があることです.1回だけ押すと、空白のページが表示されます. しかし、ページを 2 回目に更新すると、再度ログイン ページ (index.php) にリダイレクトされます。

私を助けてください...

4

3 に答える 3

1

ヘッダーが含まれる前にスペースを確認してください。リダイレクト中にエラーが発生する可能性があります。別の解決策は、出力バッファリングを確認して、出力バッファリングをoff または on に 設定することです。これを確認するには、サーバーのphp.iniファイルに到達し、出力バッファリングを確認します。オフの場合はオンに設定し、php.iniファイルを編集する余裕がない場合は、これに次のコード <?php ob_start();?> を入力して、これを記述する必要があります各ページのコードと出力バッファリング タイプをオフにする<?php ob_end_flush();?>

于 2015-07-09T22:37:36.730 に答える
0

これは、ヘッダーの前にテキスト (おそらく空白行) を出力しているためです。投稿した例では、?> と

于 2013-02-09T16:47:03.997 に答える