2013-08-25 145 views
0

我不知道标题位置部分中存在什么问题,但是由于哪个页面会无限重定向并在某段时间后停止,导致一些错误。这里是我的代码,何时我选择一张照片,这样它应该重定向到Facebook的封面或制作个人资料页面,但是它会继续使用循环重定向。该页面没有正确使用php中的标题正确重定向

<?php 
include_once("inc/facebook.php"); //include facebook api library 

######### edit details ########## 
$appId = ''; //Facebook App ID 
$appSecret = ''; // Facebook App Secret 
$return_url = 'http://www.mysite.com/testing/process.php'; //return url (url to script) 
$homeurl = 'http://www.mysite.com/testing'; //return to home 
$fbPermissions = 'publish_stream,user_photos'; //Required facebook permissions 
################################## 



$GetPicId = $_GET["pid"]; // Picture ID from Index page 
$PicLocation =''; 

/* 
Users do not need to know original location of image. 
I think it's better to get image location from database using ID. 
for demo here i'am using PHP switch. 
*/ 
switch($GetPicId) 
{ 
case 1: 
    $PicLocation = 'cover_pics/cover1.jpg'; 
    break; 
case 2: 
    $PicLocation = 'cover_pics/cover2.jpg'; 
    break; 
case 3: 
    $PicLocation = 'cover_pics/cover3.jpg'; 
    break; 
default: 
    header('Location: ' . $homeurl); 
    break; 
} 

//Call Facebook API 
$facebook = new Facebook(array(
'appId' => $appId, 
'secret' => $appSecret, 
'fileUpload' => true, 
'cookie' => true 
)); 

//get user 
$fbuser = $facebook->getUser(); 
$access_token = $facebook->getAccessToken(); 

//variables we are going to post to facebook 
$msg_body = array(
'access_token' => $access_token, 
'message' => 'I liked this pic from '. $homeurl .' it is perfect for my cover photo.', 
'source' => '@'.realpath($PicLocation) 
); 

if ($fbuser){ //user is logged in to facebook, post our image 
try { 
$uploadPhoto = $facebook->api('/me/photos', 'post', $msg_body); 
} catch (FacebookApiException $e) { 
echo $e->getMessage(); //output any error 
} 
}else{ 
$loginUrl = $facebook->getLoginUrl(array('scope'=>$fbPermissions,'return_url'=>$return_url)); 
header('Location: ' . $loginUrl); 
} 

if($uploadPhoto) 
{ 
/* 
image is posted in user facebook account, but still we need to send user to facebook 
so s/he can set cover or profile picture! 
*/ 

//Get url of the picture just uploaded in user facebook account 
$jsonurl = "https://graph.facebook.com/".$uploadPhoto["id"]."&?access_token=".$access_token; 
$json = file_get_contents($jsonurl,0,null,null); 
$json_output = json_decode($json); 

/* 
We can not set facebook cover or profile picture automatically yet, 
So, the trick is to post picture into user facebook account first 
and then redirect them to a facebook profile page where they just have to click a button to set it. 
*/ 
echo '<html><head><title>Update Image</title>'; 
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'; 
echo '<link href="style.css" rel="stylesheet" type="text/css" />'; 
echo '</head><body>'; 
echo '<div align="center" class="fbpicwrapper">'; 
echo '<h1>Image is sent to your facebook account!</h1>'; 
echo '<div class="fbpic_desc">Click on desired button you want to do with this image!</div>'; 
echo '<div class="option_img"><img src="'.$json_output->source.'" /></div>'; 

/* 
Links (buttons) below will send user to facebook page, 
where they just need to crop or correct propertion of image and hit apply button. 
*/ 
echo '<a class="button" target="_blank" href="http://www.facebook.com/profile.php?preview_cover='.$uploadPhoto["id"].'">Make Your Profile Cover</a>'; 
echo '<a class="button" target="_blank" href="http://www.facebook.com/photo.php?fbid='.$uploadPhoto["id"].'&type=1&makeprofile=1&makeuserprofile=1">Make Your Profile Picture</a>'; 
echo '<a class="button" href="'.$homeurl.'">Back to main Page.</a>'; 
echo '</div>'; 
echo '</body></html>'; 
} 

?> 

回答

0

删除任何echo或任何空格,您正在使用的header(Location...)重定向之前打印输出。在您开始打印输出后,重定向将无法工作。

要做到这一点的方法是保存到字符串的一切你想打印的情况下,没有重定向,并只在最后打印到屏幕。

0

您正在使用2行中的header方法,该方法可以在两次真实条件下运行。它可以形成一个循环。

如果switch不匹配任何情况,并且$fbuser等于false同时。

首先header方法:

default: 
    header('Location: ' . $homeurl); 
    exit(); //added 
    break; 

其他header方法:

if ($fbuser){ 
    //user is logged in to facebook, post our image 
} 
else { 
    $loginUrl = $facebook->getLoginUrl(array('scope' => $fbPermissions, 'return_url' => $return_url)); 
    header('Location: ' . $loginUrl); 
    exit(); //added 
+0

所以,这头方法我应该删除,以使其正常工作? –

+0

@RohanMishra在每个'header'方法之后添加'exit();'以确保代码的运行过程不会继续如此并尝试。 – hallaji

+0

或者您可能有调用Facebook API的问题?这可能会形成一个循环。 – hallaji

相关问题