如果我的处理程序需要会话数据,我如何在PHP中实现post/redirect/get


How do I implement post/redirect/get in PHP if my handler requires session data?

我试图理解我将如何实现post/redirect/get模式,如果我的处理程序页面,一切都是$_POST'd需要会话数据(检查用户是否登录,让我们说)

我不能调用:header("Location /somenewplace", 303);,因为我会得到一个'不能修改头'错误,因为我已经调用了session_start()来获取会话数据。

有人可以帮助我更好地理解这个模式,你的处理程序需要与会话数据交互吗?

谢谢你,

通常当我得到这个错误是因为一些东西已经输出给用户了。在调用header()之前不能输出任何数据。检查是否在header调用之前打印/回显任何内容。还要检查脚本上的结束标签,如果结束标签后有空格?> php将输出给用户并设置标题。

你的代码有问题。session_start()不应该发送报头。使用PHP输出缓冲来确保没有输出被发送。

调用session_start()应该只修改头。您可能在脚本的其他地方输出了一些数据。当PHP告诉你'Cannot modify headers'时,它通常会告诉你输出是从哪一行开始的。

所以会话不应该阻止你做任何重定向或其他事情。

查看使用ob_start()和ob_end_flush()使用输出缓冲