【问题标题】:PHP $_SESSION not getting setPHP $_SESSION 未设置
【发布时间】:2013-04-12 14:47:46
【问题描述】:

我正在尝试学习将 fb connect 与网站集成。我面临以下一些问题。

从 (http://www.mydomain.com/exp/login.php) 提交 facebook 信息后,我正在调用,重定向 uri 中的 process_data.php 像这样,

<fb:registration fields="[
{'name':'name'},
{'name':'email'},
{'name':'who', 'description':'additional info',     'type':'text'}]"
redirect-uri="http://www.mydomain.com/exp/process_data.php"
</fb:registration>

然后,在 process_data.php 中,我执行以下操作,

if ($_REQUEST) {
$response = parse_signed_request($_REQUEST['signed_request'], 
                               $appSect);

if($response){  
    $_SESSION['facebook_data'] = $response;
    header('Location: '.$redirect_url); //http://www.mydomain.com/exp/home.php
} else {
echo '$_REQUEST is empty';
}

最后,在 home.php 中,

<?php
  session_start();
  if(isset($_SESSION['facebook_data'])){
    //do something with data
  {

?>

但它从来没有命中 home.php 中的这段代码。

与托管有什么关系吗?还是我做错了什么?

提前致谢,

卡松

【问题讨论】:

  • 您的process_data.php 页面中有session_start() 吗?
  • 设置了$redirect_url 吗?
  • @danielrsmith:是的,我愿意!
  • @verbumSapienti:是的,甚至重定向到它,但会话变量设置不正确。

标签: php hosting fbconnect


【解决方案1】:

当你重定向时,尝试这样做:

 header("Location: newpage.php?PHPSESSID=".session­_id());

然后:

session_id($_GET['PHPSESSID']); 
session_start();

AFAIK 当您设置会话变量然后立即重定向时会出现问题,这并不总是有效。

请注意,最好将会话 ID 存储在 cookie 中而不是 URL 中。

或者尝试在重定向后立即使用exit

header("Location: newpage.php");
exit;

【讨论】:

  • 别无选择,你应该总是exit;header('Location: ...');之后的脚本
  • 并非总是如此,在使用header() 之后,您可以执行某些操作,但您无法输出任何内容。
  • @MMM :还是一样,我尝试了两种方式。第一个给出 500 错误,但我的错误日志文件中没有记录任何内容。其次,尝试在重定向后立即退出,没有达到条件($_SESSION 仍然没有获得价值)
  • 如果它给你一个 500 错误,那么代码肯定有问题,这个概念本身应该可以工作......
  • $userid,'Name'=>$fullname); } 其他 { 回声 'ELSE'; } ?> 这是我的文件。
猜你喜欢
  • 1970-01-01
  • 2013-11-06
  • 2012-10-08
  • 1970-01-01
  • 2015-09-24
  • 2021-01-01
  • 2011-07-03
  • 2015-04-24
  • 2021-11-29
相关资源
最近更新 更多