调用session_start()的正确方法是什么

Har*_*rma 3 php

我有两个共享主机.我的问题是通过调用session_start()来实现的.在我的localhost和我的共享主机之一.会话启动适用于用户通知:无法调用标头.然后我习惯写下面的代码:

<?php
if(! isset($_SESSION)){
 session_start()
}
?>
Run Code Online (Sandbox Code Playgroud)

但在另一台主机中,它仍然回显"通知:无法启动会话()......"的消息 也是我的问题,即会话在第一次访问时没有启动.当我再次刷新浏览器窗口然后启动会话.客户端和服务器端之间的关系是什么.再次我的session_start()有什么问题?请帮我.

任何人都可以告诉我,调用session_start()的正确方法是什么,它永远不会失败.我应该在哪里打电话.页面顶部或配置文件中的任何位置.一个小例子肯定会对我有所帮助.

Jon*_*Jon 8

两个简单的事情:

1.始终session_start无条件呼叫.

2. session_start在页面上输出任何内容之前始终打电话.

所以你应该这样做:

<?php
session_start();

// and now anything else
Run Code Online (Sandbox Code Playgroud)

特别要注意的是,您可以通过多种方式违反指令#2,例如:

  • 明确自己打印任何与echo
  • 在标记之前的PHP脚本中有任何字符<?php
  • 包含执行上述操作的其他脚本

这里有很多关于SO 的问题,它们描述了第2点以及如何解决它.