2011-06-25 4 views

Répondre

8

Vous devez mettre exit; après l'appel d'en-tête; PHP n'arrête pas automatiquement l'exécution du code après que le client arrête de charger la page.

3

Le code doit ressembler à: -

$flag=1; 
if($flag==1) { 
    header("Location:page1.php"); 
    exit(); 
} 
header("Location:page2.php"); 
exit(); 

Si vous n'utilisez pas les "exit()"/"die()" construire, PHP continuera d'exécuter les lignes suivantes. C'est parce que PHP redirige l'utilisateur vers la première page mentionnée (dans ce cas c'est "page1.php"), mais en interne après avoir exécuté toutes les instructions écrites dans la page entière, même après que la méthode "header()" soit exécutée. Pour arrêter cela, nous devons utiliser les constructions "exit()"/"die()".

Espérons que ça aide.

2

Voici comment cela fonctionne:

côté serveur: PHP crée une page HTML à envoyer. Si $flag == 1, il modifie son en-tête à location:page1.php. Dans chaque cas parce qu'il n'y a pas else, il change ensuite l'en-tête à location:page2.php.

Puis, la page est envoyée à votre brower, qui vous redirige.

Mon conseil: mettez simplement else avant votre deuxième changement d'en-tête.

1
$flag=1; 
    if($flag==1) 
    { 
     header("Location:page1.php"); 
     exit(); 
    } 
    header("Location:page2.php"); 

Cela devrait empêcher la redirection vers page2.php. N'oubliez pas de mettre exit() là où c'est nécessaire.

+0

Excellent travail avec un exemple de code! –

+0

cela ne fonctionnera pas si $ flag n'est pas égal –

+2

Le second 'header()' est du code mort. Vous devez mettre 'exit' et le premier' header' dans un bloc '{}'. – Floern

Questions connexes