2010-10-11 8 views

Répondre

4

Est-ce que die() est vraiment nécessaire ici?

Il est: Sinon, le client obtiendra toujours le code HTML dans le corps de la réponse. L'en-tête demande au client de se terminer et d'aller à la nouvelle page, mais il ne peut pas la forcer.

Le client peut toujours continuer à écouter la réponse et recevoir toutes les sorties par la suite, ce qui est un trou de sécurité fatal, par ex. lors de la protection des données sensibles dans une zone de connexion.

0

Oui. La simple génération d'un en-tête, même l'en-tête Location, ne termine pas le script en cours. La sortie HTML sera visible par ex. un renifleur de paquets.

0

Je trouve que: http://www.figured-it-out.com/figured-out.php?sid=181

Ainsi, selon cela, il semble que certains navigateurs arrêtent juste de recevoir le contenu html et redirigent directement à la nouvelle page où d'autres navigateurs comme IE attendent encore jusqu'à ce que le chargement de la page est prête .

1

Oui, est nécessaire. Un appel à header("Location: some-location.php") envoie l'en-tête spécifié (une redirection 302 dans ce cas) au navigateur; mais il ne termine pas le script. Cela devient plus important si les lignes après l'instruction de redirection contiennent du code PHP qui peut s'exécuter involontairement. Donc, si vous voulez envoyer l'en-tête de redirection et annuler tout traitement ultérieur, vous devez appeler die, exit, return ou toute autre construction similaire.

Notez qu'il est possible d'effectuer un traitement supplémentaire après en envoyant l'en-tête de redirection.