首先不要以为它有重复的问题。我尝试了所有解决方案,但没有任何帮助。
我收到以下错误:“无法修改标头信息-标头已发送(输出始于/home/gogiavag/public_html/maxkapital/user.php:7)在/home/gogiavag/public_html/maxkapital/func.php中4“
我已将所有页面转换为utf8(无BOM)。我在开始时没有领导空间,但除此之外没有任何帮助。
这是我的代码:
login.php
<?php session_start();?>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
<?php include "header.php"; require_once 'func.php';?>
<form method="POST" action="user.php">
<table style="margin-top: 10px;">
<tr>
<td><label for ="txtuser">name:</label></td>
<td><input type="text" style="padding:5px;" id="txtuser" name="txtuser" value="<?php if (isset($_SESSION['txtuser'])
){echo $_SESSION['txtuser'];}else{echo '';} ?>" </input></td>
</tr>
<tr>
<td><label for ="txtpassword">password:</label></td>
<td><input type="password" style="padding:5px;" id="txtpassword" name="txtpassword"> </input></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value ="Enter" style="padding:5 55 5 55;background-color:#3f4194;color:#fff;" name="btnsubmit" id="btnsubmit"> </td>
</tr>
</table>
</form>
<?php
if (isset($_SESSION['err'])){
if ($_SESSION['err']===true){
echo gg_stringformat("<img src='error.png' style='margin-left:50px;'><img/> <span style='font-size:10pt; color:#ff0000'>{0}</span>", $_SESSION['errmsg']);
}
}
if(isset($_SESSION['err'])){unset ($_SESSION['err']);};
if(isset($_SESSION['errmsg'])){unset ($_SESSION['errmsg']);};
if(isset($_SESSION['txtuser'])){unset ($_SESSION['txtuser']);};
if(isset($_SESSION['txtpassword'])){unset ($_SESSION['txtpassword']);};
?>
</body>
</html>
user.php
<?php session_start();?>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<?php require_once'func.php';
if (!isset($_POST['btnsubmit'])){
gg_redirect('block.php');
exit;
}
$user=$_POST['txtuser'];
$pass=$_POST['txtpassword'];
$_SESSION['txtuser'] = $user;
$_SESSION['txtpassword'] = $pass;
if (gg_trim($user)===''){
$_SESSION['err']=true;
$_SESSION['errmsg']='User name required';
gg_redirect('login.php');
exit;
}elseif(gg_trim($pass)===''){$_SESSION['err']=true;$_SESSION['errmsg']='Password required';gg_redirect('login.php');
exit;
}
echo $user, "<BR>", $pass;
?>
</body>
</HTML>
header.php
<div id="divheader" >
<p> <img src="coins.png"></img>MAX_KAPITAL</p>
</div>
func.php以...开头
<?php
mb_internal_encoding("UTF-8");
function gg_redirect($url){
header("location: $url");
}
....
用户不输入密码或用户名时出现错误。
请在我的代码中找到错误。提前致谢。
问候乔治·戈贾瓦
PHP并不是在骗你,实际上您已经在第2行开始输出user.php
-您<html>
可以在此处进行打印。
然后打印<head>
并添加更多HTML,然后gg_redirect()
从func.php
if调用函数!isset($_POST['btnsubmit'])
,这会导致错误,因为自从输出已经开始以来,不再可以发送重定向标头。
在将任何内容发送回客户端(其他响应标头除外)之前,您需要检查输入并可能进行重定向。特别是,在完成可能的重定向之前,请勿打印任何HTML:
<?php
// includes here - they must have no output!
// check if all is OK, set $redirectURL if redirect is needed to that URL
if ($redirectUrl) {
header("location: $redirectUrl");
exit(); // header() won't cause the script to stop executing
}
?>
<html>
<head>
...
重定向之前包含的文件一定不能打印任何输出-甚至不能是空行,因此它们都必须<?php
作为文件的第一个字符,整个文件必须是PHP,而没有任何输出到响应正文,并且必须以?>结尾之后再没有换行符或空格(在这种情况下,PHP可能会剪裁一些空格,但不要依赖于此)。
调用session_start()
是安全的,可以在重定向之前进行(如果需要会话变量,则可以使用),因为它不会发送任何响应主体。它可以设置一个cookie,但是可以,因为cookie是在标头中发送的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句