首页 > 开发 > php > 正文

php提示「headers already sent by」是怎么回事?

2017-09-06 15:07:37  来源:网友分享

错误提示:
SAE_Warning: Cannot modify header information - headers already sent by (output started at /data1/www/htdocs/345/leank/1/bbs/login.php:15) in bbs/login.php on line 9

SAE_Warning: Cannot modify header information - headers already sent by (output started at /data1/www/htdocs/345/leank/1/bbs/login.php:15) in bbs/login.php on line 10

SAE_Warning: Cannot modify header information - headers already sent by (output started at /data1/www/htdocs/345/leank/1/bbs/login.php:15) in bbs/login.php on line 28

SAE_Warning: Cannot modify header information - headers already sent by (output started at /data1/www/htdocs/345/leank/1/bbs/login.php:15) in bbs/login.php on line 29

大致的代码:

<?php/** 未完成内容 : 添加判断的url中log?= "" 的if语句,来判断用户是登陆还是退出*添加一个判断是否已经登陆的if语句**/include("conn.php");function clearcookies(){    setCookie('username','',time()-3600);    setCookie('logset','',time()-3600);}?>  <?php    if ($_POST['loginsubmit'])  //检查是否提交    {        clearcookies();        $sql = "SELECT * FROM user WHERE username = '$_POST[username]'";        $query = mysql_query($sql);        $userinfo = mysql_fetch_array($query);        if ($_POST[password] != "" & $_POST[username] != "") //检查用户名密码是否填写        {            if ($userinfo['password'] == $_POST['password'] ) //在SQL中检查用户名密码是否正确            {                $username = $_POST[username];                                setcookie('username','$username',time()+31536000,'/');                setcookie('logset','ok',time()+31536000,'/');                echo "<meta http-equiv=refresh content=0;url=index.php?foo=$_POST[username]>";            }            else            {                echo "登录失败!";                echo "请检查您的用户名或密码是否都填写正确";            }        }        else        {            echo "登录失败!";            echo "请检查您的用户名或密码是否为空";        }    }  ?>

处错误的大致是这个位置:
setcookie('username','$username',time()+31536000,'/');
setcookie('logset','ok',time()+31536000,'/');

解决方案

因为在setCookie之前多输出了东西造成的,看代码似乎是输出了空格,把中间的

?>  <?php

去掉应该就可以了