I wrote a PHP program,
I use session_start()
and header()
functions, I know I should use this functions before I sending anything to client. it\'s ok,
This might be possible because you write into an output buffer (ob_start) which doesn't actually return anything to the client until you explicitly flush the buffer (ob_flush or ob_end_*) or the script ends.
The fact that you can't send headers after you begun writing the body part of your HTTP response is not a php but a HTTP protocol limitation, so this cannot be version specific either.
Many frameworks like the Zend Framework use output buffers so a developer doesn't need to care about the order.