【问题标题】:Warning: session_start(): Cannot send session cookie - headers already sent by (output started at [duplicate]警告:session_start():无法发送会话 cookie - 标头已由(输出开始于 [重复]
【发布时间】:2014-02-26 14:37:05
【问题描述】:

登录页面出现以下警告:它在本地主机中工作,但在远程主机中不工作

警告: session_start() [function.session-start]: 无法发送会话 cookie - 标头已由(第 8 行开始输出)发送

警告: session_start() [function.session-start]:无法发送会话缓存限制器 - 标头已发送(从第 8 行开始输出)

index.php

<?php
session_start();
if(isset($_SESSION['usr']) && isset($_SESSION['pswd'])){
header('Location: content.php');}
?>
<body>
<center>
<form method='post' action='login.php'>
<!– in this example I link it with login.php to check the password & username–>
<table>
<tr><td>Username:</td><td><input type='text' name='usr'></td></tr>
<tr><td>Password:</td><td><input type='password' name='pswd'></td>
</tr>
<tr><td><input type='submit' name='login' value='Login'></td>
<td><input type='reset' name='reset' value='Reset'></td></tr>
</table>
</form>
</center>
</body>  

content.php

<body>
<a href="resumedownload.php">Click here to Download to Resume</a>
<?php
session_start();
if(!isset($_SESSION["usr"]) || !isset($_SESSION["pswd"])){
 header('Location: index.php');}
include 'logoff.php';
?>
</body>

login.php

<body>
<?php
session_start();
if($_REQUEST['usr']=='suman.trytek' && $_REQUEST['pswd']=='solutions'){
$_SESSION['usr'] = 'suman.trytek';
$_SESSION['pswd'] = 'solutions';
header('Location: content.php');
}
else{
header('Location: index.php');
}
?>
</body>

【问题讨论】:

  • 在这里找到答案:stackoverflow.com/questions/8028957/…
  • 它由于多个标头位置发送,因此您可以在 之后的顶部使用
  • 在我的情况下,我必须设置没有 BOM 的文件编码。

标签: php html mysql


【解决方案1】:

始终将session_start(); 移动到页面顶部。

<?php
@ob_start();
session_start();
?>

【讨论】:

  • 感谢@Krish R 的工作
  • 感谢@krish R,救了我的皮肤! :D
  • 检查您没有使用 BOM(也称为 Unicode 签名)进行保存。我尝试了一切,BOM 是问题所在。如果您使用的是 UTF-8 文件,这很常见。
  • 太棒了。瞬间生效
  • 谢谢,它成功了。我尝试了一段时间。
【解决方案2】:
  1. session_start() 必须在源代码的顶部,之前没有 html 或其他输出!
  2. 您只能发送一次 session_start()
  3. 这样if(session_status()!=PHP_SESSION_ACTIVE) session_start()
【解决方案3】:

你不能 session_start();当您的缓冲区已部分发送时。

这意味着,如果您的脚本已经向客户端发送了信息(您想要的东西或错误报告),那么 session_start() 将失败。

【讨论】:

    猜你喜欢
    • 2017-08-29
    • 2014-06-24
    • 1970-01-01
    • 2018-01-29
    • 2019-09-25
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 2013-09-11
    相关资源
    最近更新 更多