2009-09-11 58 views
0

当会话的工作,你需要声明的session_start()或ob_start()?这样做或不这样做的优点是什么?使用sessions - PHP

谢谢!

回答

6

session_start()必须用于存储和从$ _SESSION全局读。

ob_start()是从会话完全独立。 ob_start()触发输出缓冲,将所有输出存储在缓冲区中供以后使用。当PHP脚本结束时,缓冲区会自动刷新给用户。或者,您可以获取,执行中期缓冲区的内容和调整的内容。看下面的例子。从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(); 

?> 

输出:

<html> 
<body> 
<p>It's like comparing oranges to oranges.</p> 
</body> 
</html> 
+0

谢谢。这是一种更能说出我想要的东西的方式。 – 2009-09-11 14:03:50

+0

谢谢你的帮助!现在更有意义了。将来会检查PHP.net – Petrogad 2009-09-11 14:09:55

1

从PHP手册

session_start() - 初始化会话数据

SUMMARY:

在session_start()创建一个会话或 恢复基于该被真实经由请求传递 ,如GET,POST,或 cookie中的 当前会话ID的电流之一。

如果要使用命名会话 ,则必须在调用session_start()之前调用session_name(),然后调用 。

当 trans-sid启用时,session_start()将注册内部 用于URL重写的输出处理程序。如果用户使用 ob_gzhandler或像 ob_start(),输出 处理程序的顺序是正确 输出重要。例如,用户必须 会议 开始之前注册ob_gzhandler。