2012-06-22 3 views
0

У меня есть этот простой вопрос пожалуйста.Php сеансы переименовать вопрос

У меня есть эта часть кода, который устанавливает свою сессию:

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

'session_register' устарел/устарел в течение длительного времени (он был удален в PHP 5.4). Вы можете просто добавить что-то в массив '$ _SESSION', чтобы« зарегистрировать »его. – ThiefMaster

+0

Не могли бы вы уточнить, пожалуйста? и как мне переименовать имя сеанса на этом? ... –

+1

@LaMyse: http://php.net/manual/en/features.sessions.php –

ответ

2

Прежде всего, прекратить использовать функцию session_register(), она была DEPRECATED и REMOVED в РНР 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 
} 
+0

Спасибо за ответ, в факт, который я использовал, когда неисчерпаемая версия просто не работает, но я думаю, из-за того, как я вставил код ... ну, теперь, пожалуйста, расскажите мне, как я могу создать две сессии? ... –

+0

@LaMyse. Вы создаете только один сеанс для каждого пользователя, в каждом сеансе вы храните столько желаний! – HamZa

+0

@LaMyse: Почему вы хотите создать две сессии? Разве нет лучшего способа реализовать это? –

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']; 

В действительности это всего за один сеанс, потому что один браузер может одновременно открывать только один сеанс на вашем сайте.

Подумайте, почему вы думаете, что вам это нужно. Поддерживается ли это? Будет ли ваш код легко понят? Может быть, вам нужно отступить и подумать над дизайном вашей системы?

+0

Эй, спасибо, мне просто нужно, чтобы пользователи, у которых есть админсессия, не получили доступ в subadminsession ... –

Смежные вопросы