2016-08-16 1 views
0

у меня есть это в верхней части страницы, которые я не хочу людей доступа, если они не вошли в систему:Получить переменную сеанса с на двух местах и ​​установить в качестве одной переменной

<?php 
session_start(); 
if(!isset($_SESSION['Register'])){ 
    if(!isset($_SESSION['Login'])){ 
    header("location:../notLoggedIn.php"); 
} 
} 
$get_id = $_SESSION['Register']; 
$get_id = $_SESSION['Login']; 
?> 

Это получает сеанс переменная от кода, который добавляет нового пользователя в базу данных при регистрации нового пользователя. Он также проверяет, был ли сеанс настроен на регистрацию пользователя, а не на регистрацию. Следовательно, одна проверка для регистрации и одна для входа.

Затем я использую переменную сеанса как регулярную переменную, поэтому я могу получить доступ к этим данным на любых других страницах, которые я мог бы написать для веб-сайта. Поэтому я могу легко получить доступ к идентификатору пользователей.

Это прекрасно работает, когда пользователь регистрируется, а не когда пользователь входит в систему. Таким образом, когда пользователь регистрирует идентификатор, который они задают в базе данных, мне доступно использовать, как он установлен в этом коде, который находится в верхней части каждая страница, которая помещает свой номер id в переменную $ get_id.

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

+0

Использование массива поможет вам. – Dave

+0

вы можете обновить переменную сеанса, чтобы содержать почти все, что вам нужно. – RamRaider

+0

Если две переменные имеют две разные цели, то дайте им два разных имени. Вы также можете попробовать использовать функции и классы, поэтому не каждая переменная имеет глобальную область видимости. PS: Код, который иллюстрирует вашу проблему, отсутствует в этом вопросе. –

ответ

0

Вы могли бы сделать проверку:

if(isset($_SESSION['Register'])){ 
    $get_id = $_SESSION['Register']; 
}else if(isset($_SESSION['Login'])){ 
    $get_id = $_SESSION['Login']; 
} 

с этим, у вас есть идентификатор Register, если это установлено, или идентификатор Login если Register является не набора, но Login есть. Вы также можете переключить Register и Login -Парты, если вы хотите иметь Login, если он установлен, и если вы хотите иметь только Register, если Login не установлен.

Но если вы хотите, как идентификаторы, сохраненные в одной и той же переменной, вы должны сделать массив:

$get_id = array(
    "Register" => $_SESSION['Register'], 
    "Login" => $_SESSION['Login']); 

Как это вы можете получить доступ к вашей Register, набрав $get_id['Register'];.

Если вы не хотите, именованные значения, вы можете опустить их, как это:

$get_id = array($_SESSION['Register'], $_SESSION['Login']); 

Подобно этому, вы можете получить доступ к вашим Register, набрав $get_id[0]; и ваш Login соответственно, набрав $get_id[1];.

Но если вы хотите сохранить оба значения в одной переменной (а не в массиве), я боюсь, это невозможно. Самое близкое, что вы можете сделать, это проверка, упомянутая выше.

Альтернативно, если вы достаточно отчаянно, отформатируйте эти обе переменные SESSION для строк, чтобы объединить их в одну переменную. Но поверьте мне, было бы очень больно манипулировать или использовать эти данные.

$get_id = $_SESSION['Register']. " ".$_SESSION['Login']; 
+0

Благодарим вас за подробный ответ. Это очень помогло. Я также понял, что искал $ id на одной из моих страниц, а не $ get_id. Woops – tdrsam

+0

Кроме того, проверка была решением – tdrsam

0

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

$svar='usr'; 

/* you could further test for the session variable having particular properties using `property_exists` */ 

if(!isset($_SESSION[ $svar ])){ 
    echo "session variable not set ~ redirect non logged in users using `header()` "; 
} 

/* later you can set the variable after login */ 
$_SESSION[ $svar ]=new stdClass(); 

$_SESSION[ $svar ]->username='joe.bloggs'; 
$_SESSION[ $svar ]->registered=true; 


echo '<pre>',print_r($_SESSION[ $svar ],true),'</pre>'; 

$username=$_SESSION[ $svar ]->username; 
echo $username; 
Смежные вопросы