Php 加载页面时正在重置会话状态

Php 加载页面时正在重置会话状态,php,session,oauth,Php,Session,Oauth,我有一个index.php页面,它设置了一个会话状态,让我知道当我使用instagram和oauth进行身份验证时,用户在那里 session_start(); $state = md5(uniqid(rand(), TRUE)); $_SESSION['state'] = $state; $_SESSION['oauth_workflow'] = "front_page"; 现在,如果我有另一个页面,让我们将其命名为shop.php,并设置一个不同的shop_页面工作流 session_st

我有一个index.php页面,它设置了一个会话状态,让我知道当我使用instagram和oauth进行身份验证时,用户在那里

session_start();
$state = md5(uniqid(rand(), TRUE));
$_SESSION['state'] = $state;
$_SESSION['oauth_workflow'] = "front_page";
现在,如果我有另一个页面,让我们将其命名为shop.php,并设置一个不同的shop_页面工作流

session_start();
$state = md5(uniqid(rand(), TRUE));
$_SESSION['state'] = $state;
$_SESSION['oauth_workflow'] = "shop_page";
print_r($_SESSION);
当我访问shop.php页面时,oauth workflow会话变量表示它是预期的shop页面。但是如果我有一个名为session.php的第三个页面,并将会话转储到那里

print_r($_SESSION);
我发现会话oauth工作流变量已重置为front_页面,即使我从未访问过索引

我怀疑这与.htaccess文件有关,但我无法找出问题所在;.htaccess文件用于URL别名

.htaccess:

RewriteEngine on

RewriteCond %{REQUEST_URI} !^/admin/
RewriteCond %{REQUEST_URI} !^/user/

RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ redirect.php?q=$1 [L]
如何阻止索引重置oauth_工作流

编辑:

一个简单的switch语句

// Figure out where we came from
session_start();
$oauth_workflow = $_SESSION['oauth_workflow'];


// figure out what action to take;
switch ($oauth_workflow) {

case 'font_page':
  //code
  break;
case 'shop_page':
  //code
  break;
}

乍一看,问题似乎是用户被发送到首页,然后再发送到商店页面?您的所有页面都是基于单个文件构建的吗?@jjonesdesign否这些是单独的页面。我真正的问题是,当用户从instagram登录页面返回时,它必须按照instagram api转到一个回调页面。因此,我可以使用这个oauth_工作流将用户重定向到正确的页面。但是,它总是返回“font\u page”,您的问题是如何阻止索引重置oauth\u工作流?如果用户被发送到回调页面,那么他们就永远不会被放回首页。对我来说,这要么意味着变量在回调页面上重置,要么在发送到回调页面之前重置。你能帮我们把回叫页面翻出来吗?你完全正确,这是我无法理解的。如果我注释掉$\u SESSION['oauth\u workflow']=首页的行;在index.php页面中,这是正常的,不会更改工作流。由于这个原因,我相信当任何页面加载时,索引都会被静默地“ping”。@jjonesdesign添加了callback.php来向您展示它是如何工作的。