无法使用MySQL和PHP修改标题信息
这是我的密码。。。我不明白为什么它总是这么说无法使用MySQL和PHP修改标题信息,php,Php,这是我的密码。。。我不明白为什么它总是这么说 Warning: Cannot modify header information - headers already sent by (output started at /opt/apache/htdocs/save/header.php:10) in /opt/apache/htdocs/****/attendance.php on line 41 Warning: Cannot modify header information - hea
Warning: Cannot modify header information - headers already sent by (output started at /opt/apache/htdocs/save/header.php:10) in /opt/apache/htdocs/****/attendance.php on line 41
Warning: Cannot modify header information - headers already sent by (output started at /opt/apache/htdocs/save/header.php:10) in /opt/apache/htdocs/****/attendance.php on line 42
我只想登录页面的工作。我还想将$_服务器[PHP_SELF()]更改为实际的url,这样我的css等仍然可以工作
include('header.php');
$server = "serverName";
$dUsername = "username";
$dPass = "password";
$username = "username2";
$password = "password2";
$randomword = "randomword";
if(isset($_COOKIE['MyLoginPage'])) {
if($_COOKIE['MyLoginPage'] == md5($password.$randomword)) {
$conn = mysql_connect($server, $dUsername, $dPass) or die("error connecting to MySQL database");
mysql_select_db("w3_save", $conn);
$query = "SELECT DISTINCT MemberName FROM attendance;";
$result = mysql_query($query, $conn) or die(mysql_error());
echo "<div id='rightColumn'><div id='title'><h1>Attendance</h1></div><div id='content'>";
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "Name: $row[MemberName] <br />";
}
echo "</div></div></body></html>";
mysql_close($conn);
exit;
}
else {
echo "<p>Bad Cookie. Please clear them out and try again</p>";
exit;
}
}
if(isset($_GET['p']) && $_GET['p'] == 'login') {
if($_POST['name'] != $username) {
echo "<p>Sorry the username you entered is incorrect.</p>";
exit;
}
else if($_POST['pass'] != $password) {
echo "<p>Sorry the password you entered is incorrect.</p>";
exit;
}
else if($_POST['name'] == $username && $_POST['pass'] == $password) {
**setcookie('MyLoginPage', md5($_POST['pass'].$randomword)); LINE 41
header("Location: $_SERVER[PHP_SELF]");** LINE 42
} else {
echo "<p>Sorry you could not be logged in at this time please try again</p>";
}
}
<div id='rightColumn'>
<div id='title'>
<h1>Attendance</h1>
</div>
<div id='content'>
<form action="``<?php echo $_SERVER['PHP_SELF']; ?>?p=login" method='post'>
<label>Username: <input type='text' name='name' id='name' /></label><br />
<label>Password: <input type='password' name='pass' id='pass' /></label><br />
<input type='submit' id='submit' value='Login' />
</form>
</div>
</div>
</body>
</html>
include('header.php');
$server=“serverName”;
$dUsername=“用户名”;
$dPass=“密码”;
$username=“username2”;
$password=“password2”;
$randomword=“randomword”;
如果(isset($\u COOKIE['MyLoginPage'])){
如果($_COOKIE['MyLoginPage']==md5($password.$randomword)){
$conn=mysql\u connect($server、$dUsername、$dPass)或die(“连接到mysql数据库时出错”);
mysql\u select\u db(“w3\u save”,$conn);
$query=“从考勤中选择不同的成员名;”;
$result=mysql\u query($query,$conn)或die(mysql\u error());
回应“出席”;
而($row=mysql\u fetch\u array($result,mysql\u ASSOC)){
echo“Name:$row[MemberName]
”;
}
回声“;
mysql_close($conn);
出口
}
否则{
echo“坏饼干。请清除它们,然后重试”;
出口
}
}
如果(isset($\u GET['p'])&&&$\u GET['p']=='login'){
如果($\u POST['name']!=$username){
echo“对不起,您输入的用户名不正确。”;
出口
}
else if($\u POST['pass']!=$password){
echo“对不起,您输入的密码不正确。”;
出口
}
否则如果($\u POST['name']=$username&$\u POST['pass']=$password){
**setcookie('MyLoginPage',md5($_POST['pass'].$randomword));第41行
标题(“位置:$\u服务器[PHP\u SELF]”;**第42行
}否则{
echo“很抱歉,此时无法登录,请重试”;
}
}
出席
您可以尝试将第42行更改为以下内容:
header("Location: $_SERVER[PHP_SELF]",TRUE,302);
重定向到新页面并在解析html之前使用SendCookie
我建议使用ob_start和end,但如下所示:
ob_start();
//your html
$content = ob_get_contents();
ob_end_clean();
在那里找到更多信息
如评论中所述,错误消息是不言自明的。显然,header.php
正在开始输出。你应该找出原因。解决方法是使用输出缓冲:
ob_start();
include('header.php');
...
ob_end_flush();
?>
这将防止在调用flush函数之前发送任何输出
至于$\u SERVER['PHP\u SELF']
:您不应该编辑超全局变量。在本例中,您要查找的信息位于不同的索引中:$\u SERVER['REQUEST\u URI']
请参阅右侧的“相关”问题的长列表?选择一个。看看Attention.php:第41行,错误消息应该是自我解释的。是的,我之前检查过echo语句,我尝试过转换代码,我尝试过一些随机的其他事情,但没有发现我的问题。我知道存在相关问题,但我想更具体地了解我的代码。另外,我还想得到一些帮助,将$_服务器['PHP_SELF']更改为我想要的url。我不确定这是否和将陈述更改为我想要的一样简单。下次,请在键入时阅读问题标题下方出现的内容,然后转到“提问”表格中的描述。对不起,有什么这么难理解?在发送标题之前,您不能输出任何内容!(这意味着,使用header()、setcookie()和其他特殊函数)非常感谢您,非常感谢您,非常感谢您!解决了我所有的问题