通过URL设置和取消设置会话

时间:2018-03-14 05:32:35

标签: php session

您好,

我需要在访问者进入我的页面后立即创建会话。然后,通过单击指向此example.org/page?no_redirect=true之类的网址的链接,必须销毁该会话,但如果他们点击指向此网址的链接,则应再次创建会话example.org/page?no_redirect=false.

我是这样做的:

session_start();
$_SESSION['redirect'] = "false";
if($_GET['no_redirect'] == "true")
{
 $_SESSION['redirect']="true";
} elseif ($_GET['no_redirect'] == "false") {
 $_SESSION['redirect']="false";
}

if ($_SESSION['redirect']!=true) {
$redirect = <<<EOF
<script type='text/javascript'>DM_redirect("mobile/$page");</script>
EOF;
}

但它不起作用。它可能是什么?

谢谢。

1 个答案:

答案 0 :(得分:1)

检查if ($_SESSION['redirect'] != true)没有意义,因为您正在将非空字符串与布尔值进行比较。非空字符串总是评估为true,因此您的检查确实是if (true != true),这意味着块内的内容永远不会被执行。

更明智的做法是,一旦提供了其目的,就取消设置会话,而不是将其设置为"true" / "false"

<强>代码:

session_start();

# Check whether the session should be unset.
if ($_GET['no_redirect'] == "true") {
   unset($_SESSION['redirect']);
}

# Check whether the session should be set.
else if ($_GET['no_redirect'] == "false") {
   $_SESSION['redirect'] = "true";
}

# Check whether the session is set.
if (isset($_SESSION['redirect'])) {
   $redirect = <<<EOF
   <script type='text/javascript'>DM_redirect("mobile/$page");</script>
   EOF;
}