我正在尝试使用userid =创建当前登录用户ID的帖子。 在第1页,我使用$ _SESSION来设置变量
$_SESSION['Userid'] = $row_getUserStuff['userid'];
我可以在第1页和第2页使用
调用$ _SESSION ['Userid']echo($_SESSION['Userid']);
输出用户ID,我的问题是当我尝试将数据推送到数据库时。 在我提出的形式
<input type="hidden" name="userid" value="<?php $_SESSION['Userid']?>" />
但是当我尝试发布时,我收到了错误
列'userid'不能为空
答案 0 :(得分:7)
不要将会话数据放在表单中。浏览器必须向服务器发送服务器已经知道的东西是没有意义的,任何人都可以在注入攻击中更改它。
相反,只需在将值插入数据库时访问$_SESSION['Userid']
。
答案 1 :(得分:1)
试试这个:
<input type="hidden" name="userid" value="<?php echo $_SESSION['Userid']?>" />
你实际上并没有告诉PHP输出会话变量,你只是指它。但由于它是一个会话变量,它根本不需要在表单中,我假设你的代码中有一个$_POST['userid']
来处理表单,只需用$_SESSION['Userid']
替换它。
答案 2 :(得分:0)
试
<input type="hidden" name="userid" value="<?php echo $_SESSION['Userid']; ?>" />
我添加了echo
语句和;
,这样就不会生成任何php错误,并且$_SESSION['Userid']
已正确发送到浏览器。
答案 3 :(得分:0)
替换此行:
<input type="hidden" name="userid" value="<?php $_SESSION['Userid']?>" />
到
<input type="hidden" name="userid" value="<?php echo $_SESSION['Userid']?>" />