2017-07-31 5 views
-2
<?php 
if(!isset($_SERVER["HTTPS"]) || $_SERVER["HTTPS"] != "on") 
{ 
error_reporting(E_ALL | E_WARNING | E_NOTICE); 
ini_set('display_errors', TRUE); 

header("Location: https://somesite.com/it"); 
die('should have redirected by now'); 

} 
?> 

Ceci est le code que j'utilise, il n'y a pas d'espace ou quoi que ce soit avant la première ligne de code.php En-tête déjà envoyé en première ligne

Retours: Avertissement: Impossible de modifier les informations d'en-tête - têtes déjà envoyés par (sortie commencé à /home/somesite/public_html/it/test.php:1) dans/home/unsite/public_html/iq/test. php sur la ligne 8 aurait dû rediriger maintenant

Pourquoi dit-on que j'ai envoyé des en-têtes sur la première ligne? Comment puis-je réparer ça?

+0

Vous ne pouvez pas envoyer d'en-têtes après 'flush()'. – GrumpyCrouton

+1

Cela ressemble à une meilleure réponse que j'ai donné, jetez un oeil à https://stackoverflow.com/questions/4398951/force-ssl-https-using-htaccess-and-mod-rewrite – RiggsFolly

+0

Cette réponse a travaillé pour mettre les choses en https, mais je dois toujours être en mesure de changer les en-têtes. Puisqu'il n'y a rien de mal avec mon code, qu'est-ce qui ferait que les en-têtes ne fonctionneraient pas comme ils sont? –

Répondre

2

N'appelez pas flush(); avant d'envoyer les en-têtes. Il envoie le tampon de sortie, de sorte qu'il déclenche la fin de la phase d'envoi d'en-tête.

+0

Essayé encore Avertissement: Impossible de modifier les informations d'en-tête - en-têtes déjà envoyés par (sortie démarrée à /home/somesite/public_html/iq/test.php:1) dans /home/somesite/public_html/iq/test.php en ligne 7 aurait dû rediriger maintenant –