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");
}

分析第二部分,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

您可以通过将数组存储在以下位置来为同一浏览器创建两个会话的错觉$_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'];

实际上,这只是一个会话,因为单个浏览器在任何时候只能向您的站点打开一个会话。

仔细想想为什么你认为你需要这个。这是可维护的吗?你的代码容易理解吗?也许您需要退后一步思考您的系统设计?

于 2012-06-22T23:32:35.643 回答