首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP:存储在会话变量中的访问令牌在表单提交时丢失

问PHP:存储在会话变量中的访问令牌在表单提交时丢失
EN

Stack Overflow用户
提问于 2015-08-24 06:48:17
回答 2查看 806关注 0票数 1

我已经存储了某些凭证,比如从推特OAuth提供程序中获得的OAuth密钥和OAuth令牌密钥,会话变量如下:

代码语言:javascript
复制
$_SESSION['o_token'] = $access_token['oauth_token'];
$_SESSION['o_token_secret'] = $access_token['oauth_token_secret'];

为了确保访问令牌确实存储在我的会话变量中,我在提交表单之前尝试在屏幕上回显它们,不出所料,令牌被显示出来。

现在,我有了一个表单,在提交表单时,存储在会话变量中的访问令牌丢失了。当我在提交表单后尝试回显类似的内容时:

代码语言:javascript
复制
if(isset($_POST['submitted']))
    {
        echo $_SESSION['o_token'];
    }

不会显示任何内容,因为存储在$_SESSION['o_token']中的值现在为空。

而存储在会话变量中的访问令牌数据会在表单提交后丢失吗?

PS:为了确认只有访问令牌数据在表单提交时丢失,而不是其他会话变量数据丢失,我尝试定义了一个模拟会话变量:

代码语言:javascript
复制
$_SESSION['mock'] = "mock";

然后在表单提交后尝试回显:

代码语言:javascript
复制
if(isset($_POST['submitted']))
    {
        echo $_SESSION['mock'];
    }

上面的代码显示了mock,这意味着只有存储在会话变量中的访问令牌数据会丢失。

这里似乎出了什么问题?

编辑:是的,我在代码的开头包含了session_start()。

EN

回答 2

Stack Overflow用户

发布于 2015-08-24 06:59:08

你说你回显了session,这意味着你已经把session start放在了页面的开头。

检查您的post输入值,该值由会话变量填充

票数 0
EN

Stack Overflow用户

发布于 2015-08-24 07:03:55

如果您不想调用session_start(),当然也不会带来任何安全风险,那么您可以做的另一件事是通过表单传递令牌

代码语言:javascript
复制
<input type="hidden" name="acces_token" value="<?= $_SESSION['o_token']?>"/>
<input type="hidden" name="o_token_secret" value="<?= $_SESSION['o_token_secret']?>" />

这些值应该在$_POST数组中。希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32172299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档