Ho una pagina di iscrizione.php che contiene il login tramite il pulsante facebook. struttura della pagina è qualcosa di similereindirizzare a un nuovo url dopo lo script backend
<?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>.';
}
?>
codice ajax utilizzato in questa pagina chiama un'altra pagina process_facebook.php ed elabora i dati al back-end. codice utilizzato per l'Ajax nella pagina signup.php è
<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>
Ora il problema è che la pagina process_facebook.php lavora con i dati fb al back-end, e dopo che viene reindirizzato di nuovo alla pagina signup.php e visualizza i dati che la pagina process_facebook.php era stata stampata (opzionale). Quello che voglio è che invece di reindirizzare dalla pagina process_facebook.php alla pagina di iscrizione.php e visualizzare i suoi dati, vorrei reindirizzare a un'altra pagina, non solo i nuovi dati dovrebbero essere caricati dalla nuova pagina ma l'url dovrebbe anche essere cambiato (es. www.example.com/app/signup.php dovrebbe cambiare a www.example.com/app/profile.php)
ho dimenticato di dirlo ma ho provato a usare l'header() per reindirizzare ma sta semplicemente recuperando i dati della pagina profile.php ma mostrando l'URL www.example.com/app/signup.php. Ora il problema è che se aggiorno la pagina per qualsiasi motivo, i dati di old signup.php la pagina viene caricata
Uhm, potrebbe essere mi manca qualcosa, ma perché semplicemente non utilizzare la funzione header() nel tuo process_facebook.php? Controlla http://stackoverflow.com/questions/768431/how-to-make-a-redirect-in-php per ulteriori dettagli. – Vick
header ('Location: you_url_here'); Utilizzalo ogni volta che devi reindirizzare tramite PHP –
@Vick ho provato a utilizzare l'intestazione, ma invece di reindirizzare a un altro url sta recuperando i dati della nuova pagina del profilo e mostrando l'URL www.example.com/app/signup.php. e se ricarico la pagina, ricevo i dati della vecchia pagina di registrazione – Sam