在ajax调用中丢失了PHP会话

时间:2014-03-10 13:10:52

标签: php jquery ajax facebook

我正在为用户提供通过Facebook登录的选项,一切都很好,除了我希望将其他一些预设会话变量移动到应用程序的最后一页。会话在Facebook登录页面上声明。 Facebook登录按钮使用axjax / jquery在后台加载php页面。这个php后台页面无法从登录页面获取会话变量。这是我几天坚持的地方。有人可以帮忙吗?

在登录页面上设置了会话变量的框架中单击登录按钮时,将运行以下代码。我希望有session_start()可以工作,但事实并非如此。我回应了他们没有打印的变量。

    //Facebook Login page   
   if(isset($_GET["logout"]) && $_GET["logout"]==1)
     {
//User clicked logout button, distroying all session variables.
session_destroy();
header('Location: '.$return_url);
     }
     ?>


     <?php

      session_start();

     if(!isset($_SESSION['logged_in']))
       {
          echo '<div id="results">';
           echo '</div>';

           echo '<a href=" " rel="nofollow" class="fblogin-button" onClick="javascript:CallAfterLogin();return false;">  </a>';

     }
      else
      {
echo 'Hi '. $_SESSION['user_name'].'! You are Logged in via facebook, <a href="?    logout=1">Log Out</a>.';
     }
    ?>

     <div id="fb-root"></div>
     <script type="text/javascript">
     window.fbAsyncInit = function() {
  FB.init({
    appId: '<?php echo $appId; ?>',
    cookie: true,xfbml: true,
    channelUrl: '<?php echo $return_url; ?  >/concrete/blocks/external_form/forms/channel.php',
    oauth: true
    });
};
(function() {
var e = document.createElement('script');
e.async = true;e.src = document.location.protocol +'//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);}());

 function CallAfterLogin(){
FB.login(function(response) {       
    if (response.status === "connected") 
    {
        LodingAnimate(); //Animate login
        FB.api('/me', function(data) {

          if(data.email == null)
          {

                alert("login requires to access your email address!"); 
                ResetAnimate();

          }else{
                AjaxResponse();
          }

      });
     }
},
{scope:'<?php echo $fbPermissions; ?>'});
 }

 //functions
   function AjaxResponse()
 {
 //Load data from the server and place the returned HTML into the matched element    using jQuery Load().
 $( "#results" ).load( "process_facebook.php"  );

  }

1 个答案:

答案 0 :(得分:1)

由于你没有共享任何代码,我不能完全确定问题是什么。 但是,根据您的说法,我认为您应该尝试将其添加到php背景页面的顶部:

session_start();