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

如果处理程序需要会话数据,如何在PHP中实现post/redirect/get?,php,session,Php,Session,我试图理解如何实现if my handler页面,其中所有内容都是$\u POST'd,需要会话数据(比如检查用户是否登录) 我不能调用:标题(“Location/somenewplace”,303)php会将其输出给用户并设置标题。@AndréLaszlo-这个问题与这个问题不同。OP知道它发生的原因,这专门询问在重定向之前如何处理会话数据。@Tim:是的,你说得对。但答案是一样的,有点像。:)@AndréLaszlo嗯,有点不准确,你在评论中留下的链接还在这里。一切都很好:)哇!就是这样。我

我试图理解如何实现if my handler页面,其中所有内容都是$\u POST'd,需要会话数据(比如检查用户是否登录)

我不能调用:
标题(“Location/somenewplace”,303)
如果您的处理程序需要与会话数据交互,是否有人可以帮助我更好地理解此模式


谢谢,

您的代码中有错误。
会话\u start()
不应发送标题。使用PHP输出缓冲以确保不发送任何输出。

调用session_start()只应修改头。您可能在脚本的其他地方输出了一些数据。当PHP给您消息“CannotModifyHeaders”时,它通常会告诉您输出是在哪一行启动的


因此,会话不应阻止您执行任何重定向或其他操作。

请使用和检查以使用输出缓冲。

通常当我收到该错误时,是因为某些内容已输出给用户。在调用header()之前,不能输出任何数据。在调用header之前,检查是否正在打印/回显任何内容。另外,如果在结束标记后有空格,请检查脚本上的结束标记?>php会将其输出给用户并设置标题。

@AndréLaszlo-这个问题与这个问题不同。OP知道它发生的原因,这专门询问在重定向之前如何处理会话数据。@Tim:是的,你说得对。但答案是一样的,有点像。:)@AndréLaszlo嗯,有点不准确,你在评论中留下的链接还在这里。一切都很好:)哇!就是这样。我在其中一个包含的文件的底部有一个空格字符,并且正在输出它。一旦我删除它,header()调用就起作用了。非常感谢。一些编码社区采用的一种非常常见的做法是始终省略结束?>标记。这不会导致任何错误或警告,并将在将来防止此错误