Vous pouvez d'abord essayer juste en écho Attempting to Redirect
à la place de l'en-tête, de sorte que vous pouvez ensuite voir si il essaie de rediriger quelqu'un. De cette façon, vous pouvez vérifier si la première moitié de la fonction fonctionne.
Voici un blog post sur quelque chose de très similaire à ce que vous faites, qui utilise strpos au lieu de preg_match, ce qui est probablement plus simple.
Si ce n'est pas 'rediriger', AKA, la fonction header
ne semble pas fonctionner, vous avez un tout autre problème.
Si la fonction header
ne fonctionne pas, essayez d'ajouter Firefox à la liste des navigateurs pour rediriger, puis utiliser Firebug pour vérifier les en-têtes envoyés au navigateur.
Cela peut poser un problème avec PHP et Apache.
Il est possible que error_reporting soit désactivé. Si vous le faites, PHP essaie peut-être de générer une erreur indiquant que des espaces sont envoyés avant votre commande d'en-tête.
Avant la commande header()
, en essayant la mise error_reporting(E_ALL);
, et vérifier si elle donne un message d'erreur au succès de
Headers could not be sent. Headers have already been sent on file.php line 1.
Fondamentalement, si vous envoyez un code HTML, Whitespace, ou à peu près toute sorte de sortie avant la commande header()
, PHP va erreur car les en-têtes doivent être envoyés avant le contenu de la page. Après le premier envoi des espaces, les en-têtes sont envoyés, et vous ne pouvez plus envoyer
Vous pouvez vérifier si les en-têtes sont envoyés à l'aide header_sent()
if(headers_sent()){ echo "Headers Sent"; }
Je l'ai fait, et je reçois le message de 'redirection', donc je sais qu'il essaie de le faire. .. – phpN00b