2009-10-02 7 views
0

J'ai des visiteurs venant sur mon site à partir de 5 sources distinctes, chacun envoie une variable dans l'URL en fonction de l'origine, dans le cas où ces sources envoie des visiteurs, je veux les envoyer à un séparée thats page plus pertinentes à l'utilisateurphp en-tête de redirection basée sur post variables

<?php 
    $var = $_GET["var"]; 
    if($var='site1'){ 
       header('Location: ' . "http://www.example.com/site1page"); 
    }else{ 
       header('Location: ' . 'http://www.example.com/othersites/&?var='.$var,); 
    } 
?> 

mais peu importe ce que var $ vient a son aller au premier emplacement en-tête (site1page) quelqu'un peut-il expliquer pourquoi cela se produit?

Répondre

4

Si ce code est le code réel que vous utilisez - il est parce que vous utilisez « = », l'opération d'affectation au lieu de « == » la comparaison opérateur. PHP vous permet de vous mordre de cette façon sans aucune sorte d'avertissement.

+1

Merci, je me sens retardé en ce moment, je ne peux pas croire que j'ai manqué cela. –

0

Votre code effectue une tâche (le seul signe égal). Vous voulez un test d'égalité (double signe égal):

<?php if($var=='site1') { header('Location: ' . "http://www.mysite.com/site1page"); } else { header('Location: ' . 'http://www.mysite.com/othersites/&?var='.$var,); } ?> 
0

En outre, je pense que la virgule dans la deuxième ligne d'en-tête va vous donner une erreur d'analyse.

Questions connexes