1

この質問を念頭に置いてください。私はインターネット上にこのような質問がたくさんあることを知っていますが、それらのどれも私のためにトリックをしていないようです:(

だから私はウェブサイト上にadminpanelを作ることを計画しています。ログイン画面から入力し、名前とパスが正しければセッションが行われます。他の管理ページでは、このセッションが設定されているかどうかをテストします。これにより、ユーザーがページにアクセスできるかどうかがわかります。

Inlog.php(簡略化)

<?php session_start(); ?> <html ...

その後、多くのコントロールの後

    if ($adminpwd == $pass) {
    session_regenerate_id();
    $_SESSION["mysessionname"] = $name;
    $tijd = date('H:i:s', strtotime('+ 30 minutes'));
    $_SESSION["E4A_einde"] = $tijd;
    session_write_close();
echo "<script type='text/javascript'>window.location = 'myotheradminpage'</script>";
}

私の他のphpページにはこのスクリプトが含まれています

<?php session_start();
if (!isset($_SESSION["mysessionname"])) {

session_destroy();
echo '<SCRIPT LANGUAGE="JavaScript"> window.alert("no session found") </SCRIPT>';
echo "<script type='text/javascript'>window.location = 'myloginpage'</script>";
        }

この要素を使用すると、セッションが設定されていない場合はリダイレクトが発生し、セッションが設定されている場合は、phpページの他のコードがトリガーされます。

しかし、実際には、毎回ログインページにリダイレクトされます。だから私のセッションは設定されていません:s理由がわからないので助けてください。

session_start()メソッドを追加するために、すべてのページで多くのシンを試しました。セッションを設定する前にセッションIDを再生成しようとしましたが、何も機能しません。

4

2 に答える 2

1

session_startHTMLの前のイニシャルで、次のように設定してみてください。

<?php session_start();  
$_SESSION["mysessionname"]; ?>
<html ...

これにより、何かが実行される前にセッション変数が宣言されます。

これが機能するかどうか教えてください。

于 2012-11-20T18:13:29.660 に答える
0

をドロップしsession_regenerate_idます。別のCookieを送信しますが、出力はすでに送信されています。

また、への呼び出しをドロップしますsession_write_close。とにかくスクリプトの最後で発生し、このマイクロ最適化はコードベースの品質に悪影響を及ぼします。同時実行性の問題memcachedがある場合は、セッションストアを使用してください。ただし、そこから遠く離れています。

また、session_destroy通話を切断します。彼が許可されていない場合、彼は許可されていません。ここでのロジックは、すでに空のセッションをパージすることを提案しています。

于 2012-11-20T18:19:50.283 に答える