0

この簡単な質問があります。

セッションを設定するコードのこの部分があります。

if($count==1){
        // Register $myusername, $mypassword and redirect to file "admin.php"
        session_register("admin");
        session_register("password");
        $_SESSION['name']= $myusername;
        header("location:index.php");
    }

そして、これは私がそれを保護するためにすべてのファイルに入れたものです:

<?php
session_start(); //Start the session
define(ADMIN,$_SESSION['name']); //Get the user name from the previously registered super global variable
if(isset($_SESSION['admin'])){//If session not registered
header("location:login.php"); // Redirect to login.php page
}
else //Continue to current page
header( 'Content-Type: text/html; charset=utf-8' );
?>

私はすでにこのようなセッションを持っているので、セッション名を変更する必要があります。

ありがとう

4

2 に答える 2

2

まず、session_register()関数の使用をやめてください。これは、PHP 5.4.0 で非推奨となり、削除されました。

以下のように最初の部分を書く必要があります。

if($count==1){
    // Register $myusername, $mypassword and redirect to file "admin.php"
    $_SESSION['admin']    = $admin;
    $_SESSION['password'] = $password;
    $_SESSION['name']     = $myusername;

    header("location: index.php");
}

2番目の部分を分析すると、if/else論理が反転します。これは正しい論理です。

session_start(); //Start the session

//Get the user name from the previously registered super global variable
define(ADMIN, $_SESSION['name']); 

if( isset($_SESSION['admin']) )
{
    //Continue to current page
    header( 'Content-Type: text/html; charset=utf-8' );
}
else
{
    //If session not registered
    header("location:login.php"); // Redirect to login.php page
}
于 2012-06-22T23:21:37.977 に答える
1

配列を に格納することで、同じブラウザーに対して 2 つのセッションの錯覚を作成できます$_SESSION

$adminsession = array();
$adminsession['admin'] = ...;
$adminsession['name']  = ...;

$subadminsession = array();
$subadminsession['admin'] = ...;
$subadminsession['name']  = ...;

$_SESSION = array('adminsession'    => $adminsession,
                  'subadminsession' => $subadminsession);

そして次のページでは:

$adminsession    = $_SESSION['adminsession'];
$subadminsession = $_SESSION['subadminsession'];

実際には、これは 1 つのセッションにすぎません。これは、1 つのブラウザーがサイトに対して一度に開くことができるセッションは 1 つだけであるためです。

なぜこれが必要だと思うのかをよく考えてください。これは保守可能ですか?あなたのコードは理解しやすいでしょうか?一歩下がって、システム設計を検討する必要があるのではないでしょうか?

于 2012-06-22T23:32:35.643 に答える