Afficher le sommaire de la page

mardi 29 janvier 2008

Redirection IE6 étrange !!

29 01 2008

J'ai eu un soucis sous IE6 pour effectuer une redirection javascript qui après test fonctionne bien sur IE7 ou firefox

<script type="text/javascript">
function redirection(url)
{
        if(confirm('Voulez vous être redirigé ?')) location.href = url;
}
</script>

> Ne fonctionne pas sous IE6

<a href="javascript:;" onclick="redirection('mon_url.com');" title="Redirection vers mon_url.com">mon_url.com</a>

> Fonctionne sous IE6

<a href="javascript:redirection('mon_url.com');" title="Redirection vers mon_url.com">mon_url.com</a>

Ensuite, le comportement est assez bizarre...

La redirection en elle même n'est pas effectuée car nous ne changeons pas de page (cf. url navigateur) et pourtant il y a un mouvement de la barre d'avancement du navigateur (cf. barre d'état).

Et, si l'url de destination pointe vers un script php, il est exécuté mais nous restons sur la même page ?!?!

Bizarre, bizarre, il semblerait qu'on change de page, qu'on exécute la page suivante puis, qu'on revienne sur la page précédente ....

Bref de toute façon ce ne plus le navigateur d'actualité mais il va tout de même encore rester dans des proportions considérables pendant quelques temps alors attention :)



vendredi 25 janvier 2008

exit() et redirection via header()

25 01 2008
<?php
  if($redirect) 
  {
    header("Location: http://developpeur.mediabox.fr");
  }
  
  unlink('mon_fichier_tres_important.pdf');
 
  ma_fonction_qui_nexiste_pas();
 
  unset($_SESSION);
 
  mysql_query("DROP DATABASE mb_db", $connexion); // : )
?>

Essayez ceci pour voir ^^

Bon effectivement je sort l'artillerie lourde, mais il faut savoir que la fin d'une page php continue d'être exécutée sur le serveur malgré une redirection via un header Location.

Du coup vous pouvez faire échouer votre redirection si une erreur survient, faire une manipulation non souhaitée ou redéclarer des variables et ensuite vous demander à quelle endroit tout ceci a été modifié.

Donc un petit conseil :

<?php
  if($redirect) 
  {
    header("Location: http://developpeur.mediabox.fr");
    exit(); // Important !
  }
 
  unlink('mon_fichier_tres_important.pdf');
 
  ma_fonction_qui_nexiste_pas();
 
  unset($_SESSION);
 
  mysql_query("DROP DATABASE mb_db", $connexion); // : )
?>

Stoppez vos scripts après un header :)