2010-11-15 18 views
-1

Salut, je ne comprends pas pourquoi mon code ne fonctionne pas. J'utilise Yahoo Server pour mon site.La fonction d'en-tête ne fonctionne pas sur le serveur en ligne?

Ceci est mon code de déconnexion (qui est exécuté avec succès sur localhost) mais quand je télécharge ce code en ligne, alors ça ne marche pas. plz aider

<?php 
//logout code 

include("../Config.php"); 
if (!isset ($_SESSION['username'])) 
    { 
header('HTTP/1.1 301 Moved Permanently'); 
header('Location: ../index.php'); 

if (!headers_sent()) 
    { 
    header('Location: http://www.mysite.com/index.php'); 
    exit; 
    } 
    } 
    else 
    { 

$_SESSION = array(); 
session_destroy(); 
session_unset(); 
header('HTTP/1.1 301 Moved Permanently'); 
header('Location: ../index.php'); 

if (!headers_sent()) 
    { 
    header('Location: http://www.mysite.com/index.php'); 
    exit; 
    } 
} 

?> 

le fichier config.php inclut le code de session (comme la session de démarrage)

+0

Y at-il retourne la page d'erreur? Pourriez-vous vérifier cela avec display_errors = sur –

+0

quelqu'un sait ici ?? –

+0

il n'y a pas d'erreur –

Répondre

1

Vous devez utiliser l'URI complet dans l'en-tête, et je recommande d'utiliser la sortie() juste après l'en-tête de l'emplacement . L'en-tête 301 n'est pas nécessaire pour une déconnexion simple. et don't use the closing tag in php. Si ça marche sur votre système, ça a l'air, il y a quelques sorties (peut-être juste une ligne vide) dans au moins un de vos fichiers php (avant la balise php de départ, ou après la balise php de fermeture) la mise en mémoire tampon est activée dans votre PHP, qui contourne cette erreur, mais est désactivée sur le serveur de production.

Essayez ceci:

<?php 
// for debugging purposes only, don't use on production server (just for debugging) 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

//logout code 

include("../Config.php"); 

if (isset($_SESSION['username'])) 
    session_destroy(); 

header('Location: http://www.mysite.com/index.php'); 
exit; 
0
echo '<script type="text/javascript"> 
    function delayer(){ 
    window.location = "../index.php" 
} 
setTimeout("delayer()", 1000); 

    </script>'; 

Vous pouvez mettre ce au lieu d'en-tête

+0

simplement ce code fonctionnera: 'echo ' " – Robz

0

Cela fonctionne

<script type="text/javascript"> 
    window.location="http://www.newlocation.com"; 
</script>