tags:

views:

99

answers:

2

When working with Sessions, do you need to declare session_start() or ob_start() ? What are the advantages of doing so or not doing so?

Thank you!

+6  A: 

session_start() must be used to store and read from the $_SESSION global.

ob_start() is completely separate from sessions. ob_start() triggers output buffering which stores all output in a buffer for later use. When a PHP script ends, the buffer is automatically flushed to the user. Alternatively, you can fetch the contents of the buffer mid-execution and tweak the contents. See example below.

Example from php.net:

<?php
function callback($buffer)
{
  // replace all the apples with oranges
  return (str_replace("apples", "oranges", $buffer));
}

ob_start("callback");

?>
<html>
<body>
<p>It's like comparing apples to oranges.</p>
</body>
</html>
<?php

ob_end_flush();

?>

Output:

<html>
<body>
<p>It's like comparing oranges to oranges.</p>
</body>
</html>
Mike B
Thanks. This is a much more eloquent way of saying what I was trying to.
Randolph Potter
Thank you for your help! Makes much more sense now. Will check PHP.net in future :)
Frederico
+1  A: 

From PHP Manual

session_start() - Initialize session data

SUMMARY:

session_start() creates a session or resumes the current one based on the current session id that's being passed via a request, such as GET, POST, or a cookie.

If you want to use a named session, you must call session_name() before calling session_start().

session_start() will register internal output handler for URL rewriting when trans-sid is enabled. If a user uses ob_gzhandler or like with ob_start(), the order of output handler is important for proper output. For example, user must register ob_gzhandler before session start.

adatapost