2011-11-02 103 views
-1

这是我的代码头信息......我想不通为什么它口口声声说不能修改与MySQL和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 - headers already sent by (output started at /opt/apache/htdocs/save/header.php:10) in /opt/apache/htdocs/****/attendance.php on line 42 

我只是想登录页面的工作。我也想将$ _SERVER [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> 
+7

查看右侧“相关”问题的长列表?选一个。 – animuson

+0

看看attendance.php:第41行,错误信息应该是自我解释的。 –

+0

是的,我已经检查过它之前的回声,我试过转移我的代码,我试过一些随机的其他东西,并没有找到我的问题。我知道有相关的问题,但我想更详细地了解我的代码。 另外我想要一些帮助将$ _SERVER ['PHP_SELF']更改为我想要的网址。我不确定这是否与将声明更改为我想要的一样简单。 – eric

回答

3

更多信息正如在评论中指出,该错误信息是非常自我解释。显然header.php正在启动输出。你应该追踪并找出原因。解决方法是使用输出缓冲:

ob_start(); 
include('header.php'); 
... 
ob_end_flush(); 
?> 

这会阻止在调用flush函数之前发送任何输出; Documenation

至于$_SERVER['PHP_SELF']:你不应该编辑superglobals。而在这种情况下,您所处的信息位于不同的索引中:$_SERVER['REQUEST_URI']

+0

美丽的谢谢你sooo很完美!解决了我所有的问题 – eric

1

您可以尝试转产42类似:

header("Location: $_SERVER[PHP_SELF]",TRUE,302); 

重定向到一个新的页面和解析HTML之前使用sendcookies。

我建议使用ob_start和最后阶段,如:

ob_start(); 
//your html 
$content = ob_get_contents(); 
ob_end_clean(); 

发现有 http://php.net/manual/pt_BR/function.ob-start.php