【发布时间】: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 ) 看看你在每个点都有什么