Все, я запустил переменную сеанса вверху страницы login.php. затем устанавливается сеанс, и я вызываю вторую страницу с помощью оператора include. Я тестировал оператор if, и, похоже, все прошло нормально. затем я пытаюсь повторить содержимое переменной на вновь отображаемой странице. Страница отображается, что означает, что она передает блок if, но содержимое переменной сеанса не отображается. Это как если бы переменная сеанса вышла за пределы области видимости. Как я могу получить доступ к моей переменной сеанса на другой странице.
<?php
session_start();
$username = "";
if (isset($_POST['submit']))
{
$username = $_POST["username"];
$password = $_POST["password"];
$_SESSION["username"] = $found_admin["username"];
if (isset($_SESSION["username"]));
{
redirect_to("index.php");
}
else
{
$_SESSION["message"] = "Username/password not found.";
}
}
?>
<?php include("login.html"); ?>
Вот html-страница, которую вызывает мой php-файл:
<!doctype html>
<head>
</head>
<body>
<?php
echo $_SESSION["username"];
$loggenOnUser=$_SESSION["username"];
?>
<div class="gridContainer clearfix">
<div id="div1" class="fluid">
This page is being called by my login.php file.</div><div id="LoggedInUser" class="fluid ">Hi. I'm <?php $loggenOnUser?> </div>
<img id="homeImage" src="images/home.gif" /> </div>
</div>
</body>
</html>
Не могу понять, почему я не могу получить доступ к переменной сеанса на другой странице. Любая помощь будет принята с благодарностью. Спасибо!
6 ответов
Убедитесь, что вы используете
session_start();
В начале каждой страницы или любого файла PHP, который должен иметь доступ к сеансу.
Самый простой способ сделать это - создать что-то вроде файла header.php и включить / потребовать его в верхней части каждой страницы вашего сайта или общих страниц.
В этом header.php у вас будет что-то вроде
<?php
session_start();
if (isset($_SESSION['username'])) {
// This session already exists, should already contain data
echo "User ID:", $_SESSION['id'], "<br />"
} else {
// New PHP Session / Should Only Be Run Once/Rarely/Login/Logout
$_SESSION['username'] = "yourloginprocesshere";
$_SESSION['id'] = 444;
}
?>
Просто сделайте свою страницу такой
<?php require "header.php"; ?>
<!doctype html>
<head></head>
<body>
<?php
if (isset($_SESSION["username"])) {
$loggenOnUser = $_SESSION["username"];
echo "Found User: ", $loggenOnUser, "<br />"
} else {
$loggenOnUser = " a public user";
}
?>
<div class="gridContainer clearfix">
<div id="div1" class="fluid">
This page is being called by my login.php file.
</div>
<div id="LoggedInUser" class="fluid ">
Hi. I'm <?php echo $loggenOnUser; ?>
</div>
<img id="homeImage" src="images/home.gif" /> </div>
</div>
</body>
</html>
Если вы выполнили эхо и запуск сеанса, что абсолютно необходимо, но по-прежнему ничего, то похоже, что у вас нет ничего в массиве $ found_admin против этого имени пользователя.
$_SESSION["username"] = $found_admin["username"];
Вы уверены, что в этом массиве что-то есть? Можете ли вы распечатать массив $ found_admin?
Попробуйте это, вы забудете session_start () в начале
<?php
session_start();
?>
<!doctype html>
<head>
</head>
<body>
<?php
echo $_SESSION["username"];
$loggenOnUser=$_SESSION["username"];
?>
<div class="gridContainer clearfix">
<div id="div1" class="fluid">
This page is being called by my login.php file.</div><div id="LoggedInUser" class="fluid ">Hi. I'm <?php $loggenOnUser?> </div>
<img id="homeImage" src="images/home.gif" /> </div>
</div>
</body>
</html>
Вы должны поставить session_start()
перед использованием массива сеанса. Также вместо <?php $loggenOnUser?>
попробуйте <?=$loggenOnUser?>
.
Посетите этот сайт: http://php.net/manual/en/function. session-start.php
Вам нужно писать session_start()
во всех ваших php файлах, лучше всего вверху.
*редактировать
- Вы забыли
echo
Вам необходимо начать сеанс до доступа к сеансу переменные
поместите
session_start()
вверху страницы поместите эхоHi. I'm <?php echo $loggenOnUser; ?>
Похожие вопросы
Связанные вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.