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

PHP:访问存储在表单提交时丢失的会话变量中的令牌,php,forms,session,post,oauth,Php,Forms,Session,Post,Oauth,我在会话变量中存储了某些凭据,如从Twitter OAuth提供程序获得的OAuth机密和OAuth令牌机密,如下所示: $_SESSION['o_token'] = $access_token['oauth_token']; $_SESSION['o_token_secret'] = $access_token['oauth_token_secret']; 为了确保访问令牌确实存储在我的会话变量中,我在提交表单之前尝试在屏幕上回显它们,正如预期的那样,这些令牌被显示出来 现在,我有了一个表单

我在会话变量中存储了某些凭据,如从Twitter 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'];
    }
不会显示任何内容,因为存储在
$\u会话['o\u token']
中的值现在为空

然而,表单提交后,存储在会话变量中的访问令牌数据是否丢失

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

$_SESSION['mock'] = "mock";
然后在提交表单后尝试回显:

if(isset($_POST['submitted']))
    {
        echo $_SESSION['mock'];
    }
上面的代码确实显示了
mock
,这意味着只有存储在会话变量中的访问令牌数据丢失

这里怎么了


编辑:是的,我在代码的开头包含了
session\u start()

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


检查会话变量填写的post输入值

您说您回显会话,这意味着您已经将会话开始放在页面的开头


检查由会话变量填写的post输入值。如果不想调用session_start(),当然也不存在任何安全风险,则可以通过表单传递令牌

<input type="hidden" name="acces_token" value="<?= $_SESSION['o_token']?>"/>
<input type="hidden" name="o_token_secret" value="<?= $_SESSION['o_token_secret']?>" />

如果您不想调用session_start(),当然也不想造成任何安全风险,您可以通过表单传递令牌

<input type="hidden" name="acces_token" value="<?= $_SESSION['o_token']?>"/>
<input type="hidden" name="o_token_secret" value="<?= $_SESSION['o_token_secret']?>" />

是否在每页顶部调用
session\u start()
?是否在每页顶部调用
session\u start()
?是的,我可以回显存储在另一个会话变量中的post输入值。是否检查了目标页?会话开始也存在吗?目标页本身就是同一页。表单提交后,页面将刷新。是的,我可以回显存储在另一个会话变量中的post输入值。是否检查了目标页面?会话开始也存在吗?目标页本身就是同一页。表单提交后,页面会刷新。当我尝试检查表单元素时,我从源代码中得到了以下信息:
对于我定义如下的文本字段:
您希望回显
$\u会话['access\u token']
而不是
$access\u token['oauth\u token']
,这也不能解决问题。隐藏文本字段的值仍然为空。@ManasChaturvedi您说过“为了确保访问令牌确实存储在我的会话变量中,我在提交表单之前尝试在屏幕上回显它们,正如预期的那样,这些令牌被显示出来了”当我在提交表格之前尝试显示它们时,它们正在显示。但是,在提交表单之后,这些变量就丢失了。当我尝试检查表单元素时,我从源代码中得到了以下信息:
对于一个文本字段,我定义如下:
您希望回显
$\u会话['access\u token']
而不是
$access\u token['oauth\u token']
,这也不能解决问题。隐藏文本字段的值仍然为空。@ManasChaturvedi您说过“为了确保访问令牌确实存储在我的会话变量中,我在提交表单之前尝试在屏幕上回显它们,正如预期的那样,这些令牌被显示出来了”当我在提交表格之前尝试显示它们时,它们正在显示。但是,在提交表单后,这些变量将丢失。