这是我的问题,我有一个PHP SESSION但它消失了......
那是我的代码,
<?php
session_start();
if (isset($_SESSION['connect'])) {
echo $_SESSION['email'];
echo '<meta http-equiv="refresh" content="6;URL=http://www.mywebsite.com/management.php">';
}
?>
$_SESSION['connect']
存在,所以我通过了If check。
当我显示$ _SESSION ['email']时,它有效。 $_SESSION['email'] = mymail@gmail.com.
但是当我被重定向到我的页面management.php $_SESSION['email'] = 1.
management.php
<?php
session_start();
echo $_SESSION['email'];
?>
为什么?
感谢。
答案 0 :(得分:2)
这是您的完整代码吗?如果是这样,您需要添加session_start()
才能使用会话。
(见:http://php.net/manual/en/function.session-start.php)
问题编辑后:看起来您在此页面上有sessoin_start()。但是你在management.php
页面上有吗?
答案 1 :(得分:2)
你是否在不同的域名中重定向?如果是这样,您可以尝试在session_start()
之前设置会话的名称为此,您必须通过重定向
中的get-parameter提交您的会话名称 echo '<meta http-equiv="refresh" content="6;URL=http://www.mywebsite.com/management.php?sessionname='. session_name() .'">';
然后使用
session_name($_GET['sessionname']);
session_start();
在management.php中
答案 2 :(得分:0)
你必须在management.php上有session_start()
答案 3 :(得分:0)
<强> set.php 强>
<?php
session_start();
/* prevent XSS. */
$_GET = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING);
if (isset($_GET['session'])) {
$_SESSION['session'] = $_GET['session'];
echo 'set succesfully';
} else {
echo 'use ?session=<your data> to set session data';
}
<强> get.php 强>
<?php
session_start();
/* prevent XSS. */
$_GET = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING);
if (isset($_SESSION['session'])) {
echo $_SESSION['session'];
} else {
echo 'not set yet';
}
<强> setget.php 强>
<?php
session_start();
/* prevent XSS. */
$_GET = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING);
if (isset($_GET['session'])) {
$_SESSION['session'] = $_GET['session'];
header('Location: get.php');
exit();
} else {
echo 'use ?session=<your data> to set session data';
}
我将这些php文件(在单个文件夹中)映射到http://localhost/stackoverflow/4826773/
http://localhost/stackoverflow/4826773/set.php?session=test
输出 set succesfully
http://localhost/stackoverflow/4826773/get.php
输出 test
http://localhost/stackoverflow/4826773/setget.php?session=hello
输出 hello
这是你想要的吗?如果你得到不同的结果,那么事情就会被打破!
P.S :我认为使用
<meta http-equiv="refresh" content="6;URL=http://www.mywebsite.com/management.php">
不是最佳做法。