代码如下:<?php
ob_start();
@include_once("./XXX.inc.php");
@include_once("./XXXC.inc.php");
@include_once("./XXXX.inc.php");
//取得从login.php页传过来的用户名和密码
$user_name=safe_str($_POST["username"]);
$user_password=md5($_POST["password"]);
$connect=connect($host_name,$host_user,$host_password,$db_name);
if($connect==0)
header("Location:error.php?em=5");
else
{
$str='select * from '.$db_table["XXXX"].' where username="'.$user_name.'" and userpassword="'.$user_password.'"';
//COOKIE登录函数
$check=login2_user($connect,$str);
//SESSION登录未完成??????????????????????????????
/*$check=login_user($connect,$str,$session_table);
*/
@mysql_close($connect);
if(1==$check)
{
$url="dir_tree.php";
Header("Location: $url");
}
else
{
$url="error.php";
Header("Location:$url?em=4&r=$check");
}
}
?>
ob_start();
@include_once("./XXX.inc.php");
@include_once("./XXXC.inc.php");
@include_once("./XXXX.inc.php");
//取得从login.php页传过来的用户名和密码
$user_name=safe_str($_POST["username"]);
$user_password=md5($_POST["password"]);
$connect=connect($host_name,$host_user,$host_password,$db_name);
if($connect==0)
header("Location:error.php?em=5");
else
{
$str='select * from '.$db_table["XXXX"].' where username="'.$user_name.'" and userpassword="'.$user_password.'"';
//COOKIE登录函数
$check=login2_user($connect,$str);
//SESSION登录未完成??????????????????????????????
/*$check=login_user($connect,$str,$session_table);
*/
@mysql_close($connect);
if(1==$check)
{
$url="dir_tree.php";
Header("Location: $url");
}
else
{
$url="error.php";
Header("Location:$url?em=4&r=$check");
}
}
?>
还有,login2_user($connect,$str);中的setcookie()函数!
把报错信息都贴出来,找到“Cannot modify header information ”前面的报错信息,根据这个信息找问题原因。
如果前面没有报错信息,查查前面有没有输出空格什么的~
另外
<?php
ob_start();
这几个必须顶到页面最上面写,不能留任何空格,换行以及其他输出
最后to stan23(小刀) :你不懂ob_start这个函数吗?无语....
319----322行处都是setcookie();
而其他对应usercheck.php出现在header();
加ob_start()还是对的~!
可是,这个函数是干什么的,为什么出现这个问题,
能解释一下吗?我想把问题搞明白~!
你这里就是程序本身的问题,解决好了,根本没有用ob_start()的必要,查查PHP手册你就知道ob_start是在什么时候用到的了~
header前面不能有输出,比如echo等.还有html的空格等.
如果不能保证没有输出,加ob_start是最好的方法. 而且这样比较好控制. 随时可以用ob_clean()清除缓冲输出.
治标不治本??你能确定这里所出现的问题是我上一次回复中说的第二种情况吗?
如果不是,那么:
我保证了header的执行,也保证了程序输出的执行...还有什么地方需要治?
我实在不想和你在这里纠缠,只是希望你不要让自己的言论误导别人.
如果重复调用 header 信息
也会出现这样的错误我以前经常遇到
总结的经验
少动肝火
用ob_start来屏蔽错误信息,不知我们谁在误导呵呵~
估计是include的文件名大小写问题导致出错
因为输出了错误信息,所以不能header
如果我在网页开头加入<?PHP ob_start();?>
而在网页最下面加入<?PHP ob_clean();?>
这样就能解决header()与setcookie()问题吗?
把每个页面最下方的<?PHP ob_clean();?>去掉保留最上方的<?PHP ob_start();?>
才能正常,可是像你们所的这种方法只是把错误信息留到了缓存区中,
如果时间久拉,会不会出现段溢出,内存碎片等问题呢,?
思考中。。
现在,我的解决办法,只有把header()与setcookie()去掉,
晕死我拉!
结贴了,!,