【问题标题】:Page Navigation with PHP Sessions使用 PHP 会话进行页面导航
【发布时间】:2015-11-04 11:18:12
【问题描述】:

我正在尝试为我的网站的访问者制定简单的导航规则。如果他们以前没有访问过其他页面,我想阻止访问者访问特定页面。 我在 page1.php 上有这个简单的代码:

<?php 
 session_start();
 $_SESSION["currentPage"] = 1;
?>

我的 page2.php 上有这段代码:

<?php
 session_start();
 if ($_SESSION["currentPage"] == 1 ) {
   $_SESSION["currentPage"] = 2;
   $_SESSION["test"] = "Hello";
 }else{ 
   $_SESSION["currentPage"] = 3;
  }
?>

访问 page1.php 和 page2.php 并回显 $_SESSION["currentPage"]$_SESSION["test"] 我得到“Hello”和“3”。

我只是不明白为什么代码在 if 语句的两个块中都执行...我需要在将 $_SESSION["currentPage"] 设置为“2”后停止它。

我正在运行 PHP 5.3.28

【问题讨论】:

    标签: php session navigation


    【解决方案1】:

    它执行

    $_SESSION["currentPage"] = 2;
    $_SESSION["test"] = "Hello";
    

    当你第一次打开 page2.php 时,

    $_SESSION["currentPage"] = 3;
    

    当您刷新页面时,因为 $_SESSION["currentPage"] 不再是 1。
    $_SESSION 在请求中是持久的。清除 cookie 并重试。

    【讨论】:

    • 感谢您的回复,@AlexBlex。但是,当执行以下步骤时会发生这种情况: 1. 清除浏览器缓存和 cookie 2. 访问 page1.php 3. 访问 page2.php
    • 我怀疑。尝试使用 curl 重现它:1.curl -v http://.../page1.php, 2.curl -v --cookie "...session cookie from previous response..." http://..../page2.php 并使用两个命令的输出更新您的问题。
    • ,我发现在我的代码中删除行session_cache_limiter('private_no_expire') 解决了这个问题。对我来说,这条线解决了返回表单时出现 ERR_CACHE_MISS 错误的问题。
    猜你喜欢
    • 1970-01-01
    • 2018-09-07
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    相关资源
    最近更新 更多