【问题标题】:Php session variable bugPHP会话变量错误
【发布时间】:2010-09-27 19:10:17
【问题描述】:

我的网络应用程序中的会话变量存在问题。我有几种类型的文档,当用户想要编辑它时,他通过 GET 方法按下一个按钮和文档的 php 记录号到 $_SESSION['patent_number']。启动应用程序时一切正常。我用 2 个具有 2 个不同数字的文档对其进行测试。一开始一切正常,但似乎会话变量没有改变,我看到另一个数字的文档。

当用户点击“编辑”按钮时,他会向patent_load.php发送一个文档编号,并且总是正确加载:

var patent_number=$(this).val();
$('#user_input_text').load('pages/patent/patent_load.php?section=patent_claims&patent_number='+patent_number);

但是当我从菜单中点击文档部分时,会出现旧会话号:

$('#user_input_text').load('pages/patent/patent_load.php?section=patent_claims');

这是一个patent_load.php:

session_start();
session_regenerate_id();

if (isset($_SESSION['id'])){

    $db=new mysqli('X','X','X','X');    
    $db->set_charset("utf8");

    $section=$_GET['section'];
    if(isset($_GET['patent_number'])){
        $number=$_GET['patent_number'];
        $_SESSION['patent_number']=$number;
        echo 'get is set';
    }
    $patent_number=$_SESSION['patent_number'];

        $query="select $section from new_patent_document where patent_number='$patent_number'";
        $result=$db->query($query);
        $row=$result->fetch_assoc();
        echo $patent_number.', ';
        echo $row[$section];

任何想法如何解决它以及为什么没有更新会话变量。 提前致谢。

【问题讨论】:

  • 你的代码很容易受到 SQL 注入的攻击!看看 PHPs PDO 及其准备好的语句。
  • @elusive 感谢您的评论。当我解决这个问题时,我将执行准备好的语句
  • “出现旧会话号”是什么意思。它会被设置一次然后再也不会吗?总是显示前一个以更正 id?您指的是实际 SESSION 号的专利号吗?
  • 试试 var_dump( $_SESSION ) 看看你在每个点都有什么

标签: php jquery session


【解决方案1】:

检查浏览器是否缓存了您通过 GET 发出的请求。我不知道您的应用程序是如何设计的,但是如果您使用浏览器中的“返回”按钮(或通过 javascript)您会遇到这种情况。

【讨论】:

  • 这是一个很好的观点。当我过去遇到类似问题时,我最终在查询字符串中添加了一个随机元素,以确保它不会触发任何缓存。有点粗鲁的方法,但当我需要快速简单的修复时,它就起作用了。
  • 如果您不想在查询中添加随机值,则可以使用 POST 而不是 GET...但据我所知,使用随机值是可行的方法。
【解决方案2】:

您确定专利号是实数吗?你试过了吗

$query="select $section from new_patent_document where Patent_number='$patent_number'";

死($查询);

【讨论】:

  • 是的,这是输出:从 new_patent_document 中选择专利声明,其中专利号='5'
猜你喜欢
  • 2013-04-13
  • 2013-09-17
  • 2011-10-27
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
  • 2013-05-01
  • 2011-06-09
相关资源
最近更新 更多