2010-08-19 7 views
6

Passando attraverso il sito php.net, ha avuto un esempio per l'intestazione, che dice che mi avrebbe dato errore. L'ho copiato ed eseguito su WAMP, ma non mi ha mostrato alcun errore, ma ho reindirizzato al sito.come funziona l'intestazione in PHP?

<html> 
<?php 
/* This should give an error (but it doesn't!). Note the output 
* above, which is before the header() call */ 
header('Location: http://www.example.com/'); 
?> 

Volevo solo sapere, se un comportamento corretto sul mio WAMP, o il suo un errore, o se ho le impostazioni particolari attivi nel file php.ini che sta facendo questo lavoro !!!. Fammi sapere se qualcuno ha bisogno del mio php.ini per essere copiato qui !!

Grazie, Tanmay

risposta

4

Sembra che tu hai output_buffering abilitato.

http://php.net/manual/en/outcontrol.configuration.php

Configurazione standard sarebbe di errore perché i dati è già stato in uscita, e le intestazioni bisogno di venire prima. Il buffering dell'output consentirebbe agli header di apparire nel codice dopo altri output, ma in primo luogo verrebbe comunque emesso dalle intestazioni a causa del buffer.

+0

Ho controllato il mio file php.ini, con buffer di uscita attivato. Solo per curiosità, se avessi 3 diversi header ('Location: ....') comand, non eseguirò i primi due, e sarà reindirizzato al 3 ° sito !? – jtanmay

+0

Grazie per la tua risposta così veloce :) – jtanmay

+0

@jtanmay: mentre quella è una domanda interessante, non è qualcosa che dovrebbe mai accadere ... puoi solo essere reindirizzato a una singola posizione, quindi "codice buono" non creerebbe mai più di un'intestazione di posizione. – Fosco

0

Le intestazioni vengono inviate non appena il testo viene inviato al browser e possono essere inviate una sola volta. una volta inviato, le intestazioni vengono inviate insieme, quindi provando la funzione di intestazione dopo che lanciare un header già inviato un errore.

+0

L'OP chiede perché non ha generato un errore come previsto. –