Tôi có trang signup.php có chứa thông tin đăng nhập qua nút facebook. cấu trúc của trang giống như sau:chuyển hướng đến url mới sau tập lệnh phụ trợ
<?php
if(!isset($_SESSION['logged_in']))
{
echo '<div id="results">';
echo '<!-- results will be placed here -->';
echo '</div>';
echo '<div id="LoginButton">';
echo '<a href="#" rel="nofollow" class="fblogin-button" onClick="javascript:CallAfterLogin();return false;">Login with Facebook</a>';
echo '</div>';
}
else
{
echo 'Hi '. $_SESSION['user_name'].'! You are Logged in to facebook, <a href="?logout=1">Log Out</a>.';
}
?>
mã ajax được sử dụng trên trang này gọi một trang khác process_facebook.php và xử lý dữ liệu ở phần cuối. mã được sử dụng cho ajax trong trang signup.php là
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId: '<?php echo $appId; ?>',
cookie: true,xfbml: true,
channelUrl: '<?php echo $return_url; ?>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)
{
//Facbeook user email is empty, you can check something like this.
alert("You must allow us to access your email id!");
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");
}
//Show loading Image
function LodingAnimate()
{
$("#LoginButton").hide(); //hide login button once user authorize the application
$("#results").html('<img src="img/ajax-loader.gif" /> Please Wait Connecting...'); //show loading image while we process user
}
//Reset User button
function ResetAnimate()
{
$("#LoginButton").show(); //Show login button
$("#results").html(''); //reset element html
}
</script>
Bây giờ vấn đề là trang process_facebook.php làm việc với dữ liệu fb tại phụ trợ, và sau đó được chuyển hướng trở lại trang signup.php và hiển thị dữ liệu mà trang process_facebook.php đã được in (tùy chọn). Những gì tôi muốn là thay vì chuyển hướng từ trang process_facebook.php trở lại trang signup.php và hiển thị dữ liệu của nó, tôi muốn chuyển hướng đến một trang khác, không chỉ dữ liệu mới sẽ được tải từ trang mới mà còn có được url (ví dụ: www.example.com/app/signup.php nên thay đổi thành www.example.com/app/profile.php)
tôi quên đề cập đến nhưng tôi đã thử sử dụng tiêu đề() để chuyển hướng nhưng nó chỉ đơn giản là lấy dữ liệu của trang profile.php nhưng hiển thị địa chỉ www.example.com/app/signup.php. Bây giờ vấn đề ở đây là nếu tôi làm mới trang vì bất kỳ lý do nào, thì dữ liệu của tệp signup.php cũ trang được tải
Uhm, có thể tôi đang thiếu một cái gì đó, nhưng tại sao bạn chỉ đơn giản là không sử dụng chức năng header() trong process_facebook.php của bạn? Kiểm tra http://stackoverflow.com/questions/768431/how-to-make-a-redirect-in-php để biết thêm chi tiết. – Vick
tiêu đề ('Vị trí: you_url_here'); Sử dụng điều này bất cứ khi nào bạn cần chuyển hướng thông qua PHP –
@Vick tôi đã thử sử dụng tiêu đề nhưng thay vì chuyển hướng đến url khác, tìm nạp dữ liệu của trang tiểu sử mới và hiển thị url www.example.com/app/signup.php. và nếu tôi tải lại trang thì tôi đang nhận được dữ liệu của trang đăng ký cũ – Sam