我正在为用户提供通过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" );
}
答案 0 :(得分:1)
由于你没有共享任何代码,我不能完全确定问题是什么。 但是,根据您的说法,我认为您应该尝试将其添加到php背景页面的顶部:
session_start();