我已经存储了某些凭证,比如从推特OAuth提供程序中获得的OAuth密钥和OAuth令牌密钥,会话变量如下:
$_SESSION['o_token'] = $access_token['oauth_token'];
$_SESSION['o_token_secret'] = $access_token['oauth_token_secret'];为了确保访问令牌确实存储在我的会话变量中,我在提交表单之前尝试在屏幕上回显它们,不出所料,令牌被显示出来。
现在,我有了一个表单,在提交表单时,存储在会话变量中的访问令牌丢失了。当我在提交表单后尝试回显类似的内容时:
if(isset($_POST['submitted']))
{
echo $_SESSION['o_token'];
}不会显示任何内容,因为存储在$_SESSION['o_token']中的值现在为空。
而存储在会话变量中的访问令牌数据会在表单提交后丢失吗?
PS:为了确认只有访问令牌数据在表单提交时丢失,而不是其他会话变量数据丢失,我尝试定义了一个模拟会话变量:
$_SESSION['mock'] = "mock";然后在表单提交后尝试回显:
if(isset($_POST['submitted']))
{
echo $_SESSION['mock'];
}上面的代码显示了mock,这意味着只有存储在会话变量中的访问令牌数据会丢失。
这里似乎出了什么问题?
编辑:是的,我在代码的开头包含了session_start()。
发布于 2015-08-24 06:59:08
你说你回显了session,这意味着你已经把session start放在了页面的开头。
检查您的post输入值,该值由会话变量填充
发布于 2015-08-24 07:03:55
如果您不想调用session_start(),当然也不会带来任何安全风险,那么您可以做的另一件事是通过表单传递令牌
<input type="hidden" name="acces_token" value="<?= $_SESSION['o_token']?>"/>
<input type="hidden" name="o_token_secret" value="<?= $_SESSION['o_token_secret']?>" />这些值应该在$_POST数组中。希望这能有所帮助。
https://stackoverflow.com/questions/32172299
复制相似问题