У меня есть страница входа, которая устанавливает переменные сеанса при успешном входе в систему. Затем страница входа перенаправляет на страницу администратора. Страница администратора может нормально читать переменные сеанса. Но когда я выполняю функцию jQuery load(), которая загружает viewUsers.php в div содержимого, переменные сеанса исчезают. Странная часть заключается в том, что идентификатор сеанса тот же.
Я использовал var_dump() как на странице администратора, так и на странице viewUsers. Страницы администратора показывают все правильные переменные со страницы входа, но страница viewUsers, которая вызывается с помощью функции jQuery load() var_dump из $_SESSION, пуста. var_dump из $_COOKIE['PHPSESSID'] имеет правильный идентификатор, но для меня это не имеет никакого смысла.
Вот как я устанавливаю переменные сеанса.
$_SESSION['userID'] = $userInfo['ID'];
$_SESSION['userType'] = $userInfo['userType'];
$_SESSION['programID'] = $userInfo['programID'];
это jquery
$("#content").load("viewUsers.php");
Все страницы имеют session_start() в самом верху. Переменные сеанса также не работали, когда я пробовал window.open и window.location вместо функции jQuery load().
Некоторые переменные сеанса теряются, хотя у меня есть правильный идентификатор сеанса. Если бы кто-нибудь мог пролить свет на это, я был бы очень признателен!
На данный момент я заполняю скрытые поля и использую функцию публикации вместо загрузки, чтобы обойти это. Я понимаю, что это не лучший способ, но это единственный способ понять, как это сделать.
Редактировать: это верхняя часть индекса, который отлично читает переменные сеанса.
<?php
session_start();
//require("session.php");
if(!isset($_SESSION['userID'])){
header("location: ../login/index.php");
}
?>
Вот и все просмотрщики
<?php
session_start();
//foreach($_POST as $name => $value){
//$_SESSION[$name] = $value;
//}
//echo " session id " . $_COOKIE['PHPSESSID'];
var_dump($_COOKIE);
var_dump($_SESSION);
?>
<?php require("adminFunctions.php"); ?>
<h2>View Current Users</h2>
<?php require("userlinks.php"); ?>
<table id="userTable" class="tablesorter">
<?php getUsers($_SESSION['programID'], $_SESSION['userType']) ?>
</table>
<script type="text/javascript">
$('td[name="userID"]').hide();
//$("#userTable th").click(function(){
//color();
//colorTable();
//color();
//});
function colorTable(){
$("tr:odd").css("background-color", "#c0c0c0");
$("tr:even").css("background-color", "#ffffff");
}
function color(){
$("tr:odd").css("background-color", "#ffffff");
$("tr:even").css("background-color", "#ffffff");
}
$(document).ready(function(){
//colorTable();
$("#userTable").tablesorter({widgets: ['zebra']});
});
</script>
Другое редактирование: вот код javascript для загрузки пользователей просмотра. Единственная причина, по которой я использую сообщение, заключается в том, что я устанавливаю переменные сеанса как скрытые поля для передачи переменных сеанса. На пользователях просмотра я использую цикл foreach для установки переменных сеанса. Я понимаю, что это небезопасно. функция поддерживать пользователей () {
$.post("viewUsers.php", $("#sessionform").serialize(),function(data){
//alert(data);
$("#content").load("viewUsers.php");
});
}