PHP会话在回调页面上是空的

时间:2011-04-01 23:42:15

标签: php session

我使用Xampp在我的本地有一个活的Wordpress网站的副本。我在php.ini中的会话路径是session.save_path =“C:\ xampp \ tmp”,并且这些会话变量的文件设置如下。在我设置会话并重定向后,会话在回调页面上为空。我错过了什么?该文件夹在Xammp中可见,用于tmp文件夹。

如果重要的话,我还有我的主机文件将Domain Url指向我的localhost。

session_start();

 $_SESSION['oauth_token'] = $request_token['oauth_token'];  
 $_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];  

此外,它不在现场工作。

2 个答案:

答案 0 :(得分:8)

在尝试使用着陆页上的会话变量之前,请确保您正在呼叫session_start()。重定向时,会导致浏览器发送新页面的新请求。此新请求尚无法访问您在初始请求中使用的会话。调用session_start()会恢复会话,以便您可以使用其中包含的数据。

e.g。

FirstFile.php:

 session_start();
 $_SESSION['my_variable'] = "my data";
 header("Location: http://example.com/SecondFile.php");

SecondFile.php:

 session_start(); // **This line recovers the session**
 echo $_SESSION['my_variable']; // This line will now print "my data"

答案 1 :(得分:1)

在必须读/写$ _SESSION之前,您可以避免在WordPress中执行session_start()。只需在插件或主题的functions.php文件中执行此操作:

if (!session_id()) {
  add_action('init','session_start');
}

另请注意,如果在调用session_start()之前使用以下内容,它将在许多PHP应用程序中起作用,但会导致WordPress删除会话变量,原因有些奇怪:

session_set_cookie_params(0,'/');

所以,我删除了那个语句,现在使用functions.php中的技巧,现在我的插件和主题支持会话就好了。