2012-10-29 84 views
-1

可能重复:
“Warning: Headers already sent” in PHP
Reference - What does this error mean in PHP?PHP无法修改标题信息

我得到:
警告:不能更改头信息 - 已经由(输出发送头开始在/diverson/index.php:9)在/diverson/index.php在线69

这让我的头重定向到谷歌网站。试图用缓冲来解决这个问题,它根本没有帮助。 (ob函数)。我想这是因为我发送HTML代码给用户。我在PHP中100%newb,但我一直在寻找解决方案,并提出了一些想法,如缓冲,这没有帮助。
对不起,在html标签中的波兰语,但这是用户的信息,所以它也不会帮助英文。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>DIVERSON</title> 
<link rel="stylesheet" href="styl.css" type="text/css" /> 
</head> 
<body> 
<?php 
ob_start(); 
// Pobieramy adres IP komentującego 
$IP = $_SERVER['REMOTE_ADDR']; 
// Pobieramy pełny adres strony na której wysyłany jest komentarz 
$lokalizacja = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
// Pobieramy adres aktualnej strony bez nazwy domeny, czyli np.: "jakis-artykul.php", do bazy danych 
$adres = $_SERVER['REQUEST_URI']; 


/* Dane potrzebne do połączenia z bazą danych, oraz nawiązanie połączenia. 
Poniżej są domyślne dane do połączenia z serwerem WampServer (po instalacji). 
Więcej informacji o instalacji tego serwera na: http://www-4u.pl/instalacja-serwera.php 
Jeżeli masz lepszy sposób na łączenie z bazą mysql - zastosuj go zamiast poniższego */ 
DEFINE ('DB_USER', 'notachance'); 
DEFINE ('DB_PASSWORD', 'evennow'); // Jeżeli masz jakieś hasło to wpisz 
DEFINE ('DB_HOST', 'localhost/lexiurista'); 
DEFINE ('DB_NAME', 'lexiurista'); // Jeżeli masz inną nazwę bazy danych - podaj swoją 
// Nawiązuje połączenie i wybiera bazę danych. 
$dbc = @mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) OR die ('Nie mogłem połączyć się z MySQL-em: ' . mysql_error()); 
@mysql_select_db(DB_NAME) OR die ('<b>Nie udało mi się wybrać bazy danych:</b> ' . mysql_error()); 



// Jeżeli został wciśnięty przycisk "wyślij" 
if (isset ($_POST['wys_kom'])) { 

    // Jeżeli nick jest pusty 
    if (empty($_POST['nick'])) { 
    $komunikat .= '<p>Podaj swój nick (imię).</p>'; 
    } else { 
    $nick = ($_POST['nick']); 
    } 

    // Jeżeli komentarz jest pusty 
    if (empty($_POST['tel'])) { 
    $komunikat .= '<p>Podaj numer telefonu.</p>'; 
    } else { 
    $tel = stripslashes($_POST['tel']); 
    } 


    if (empty($_POST['e_mail'])) { 
    $komunikat .= '<p>Podaj swój e-mail</p>'; 
    } else { 
    $e_mail = ($_POST['e_mail']); 
    } 
    if (empty($_POST['haslo'])) { 
    $komunikat .= '<p>Podaj swoje hasło</p>'; 
    } else { 
    $haslo = ($_POST['haslo']); 
    } 

    //Jeżeli nie ma żadnego błędu 
    if (!isset($komunikat)) { 
    $zapytanie = "INSERT INTO Diverson (url, nick, data, ip, tel, e_mail, haslo) VALUES ('$adres', '$nick', NOW(), '$IP', '$tel', '$e_mail', '$haslo')"; 
    mysql_query("set names utf8;"); 
    if ($rezultat = mysql_query ($zapytanie)) {  
     mysql_close();  

     header('Location: http://www.google.pl'); 


     exit() ; 
     $komunikat = '<p>Dziekujemy za wypełnienie formularza.</p>'; 

    } else { 
     $komunikat = '<p>Przepraszamy za chwilowe usterki. Wysłanie formularza nie było możliwe. Spróbuj później.</p>'; 
    } 
    } 
} 


// Jeżeli są jakieś komunikaty - wyświetl je 
if (isset($komunikat)) { 
    echo '<div class="komunikat">'.$komunikat.'</div>'; 
} 

// Formularz wysyłania komentarza 
echo' 
<div class="formularz"> 
<h2>Wypełnij formularz:</h2> 
    <form action="'.$lokalizacja.'" method="post"> 
    <p><b>Podaj nick do rejestracji</b>: <br /><input type="text" name="nick" size="35" maxlength="35" /></p> 
    <p><b>Podaj hasło do rejestracji</b>: <br /><input type="text" name="haslo" size="35" maxlength="35" /></p> 
    <p><b>Podaj numer telefonu</b>:<br /><input type="text" name="tel" size="35" maxlength="35" /></p> 
    <p><b>Twój e-mail</b>: <br /><input type="text" name="e_mail" size="35" maxlength="35" /></p> 
    <input type="submit" name="wys_kom" value="Wyślij" class="przycisk"/> 
    </form> 
</div> 

'; 

     ob_end_flush(); 
     ob_end_clean(); 
     ?> 
</body> 
</html>[/code] 
+1

加上''在第一行,即文件的第一个字符,即在<!DOCTYPE之前。 – air4x

+1

[**请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护,[弃用过程](http://j.mp/Rj2iVR)已经开始。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 –

+0

这不是这个地方。让我们[在聊天中继续讨论](http://chat.stackoverflow.com/rooms/18718/discussion-between-madara-uchiha-and-kev) –

回答

0

头之前,你一定不能输出任何东西

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>DIVERSON</title> 
<link rel="stylesheet" href="styl.css" type="text/css" /> 
</head> 
<body> 

是这个错误

写的可能原因,这送头之后

0

把你的<?php之前代码html,th erefore它应该是这样的

<?php echo"<html>..."; ?> 
+0

非常感谢亲爱的先生!它确实解决了,我想我不能像那样混合它们。 – Tomasz

+0

那么你应该接受一个答案,如果解决了。祝你好运 –

0
Use the below code: 

<?php 
ob_start(); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>DIVERSON</title> 
<link rel="stylesheet" href="styl.css" type="text/css" /> 
</head> 
<body> 
<?php 
// Pobieramy adres IP komentującego 
$IP = $_SERVER['REMOTE_ADDR']; 
// Pobieramy pełny adres strony na której wysyłany jest komentarz 
$lokalizacja = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
// Pobieramy adres aktualnej strony bez nazwy domeny, czyli np.: "jakis-artykul.php", do bazy danych 
$adres = $_SERVER['REQUEST_URI']; 


/* Dane potrzebne do połączenia z bazą danych, oraz nawiązanie połączenia. 
Poniżej są domyślne dane do połączenia z serwerem WampServer (po instalacji). 
Więcej informacji o instalacji tego serwera na: http://www-4u.pl/instalacja-serwera.php 
Jeżeli masz lepszy sposób na łączenie z bazą mysql - zastosuj go zamiast poniższego */ 
DEFINE ('DB_USER', 'notachance'); 
DEFINE ('DB_PASSWORD', 'evennow'); // Jeżeli masz jakieś hasło to wpisz 
DEFINE ('DB_HOST', 'localhost/lexiurista'); 
DEFINE ('DB_NAME', 'lexiurista'); // Jeżeli masz inną nazwę bazy danych - podaj swoją 
// Nawiązuje połączenie i wybiera bazę danych. 
$dbc = @mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) OR die ('Nie mogłem połączyć się z MySQL-em: ' . mysql_error()); 
@mysql_select_db(DB_NAME) OR die ('<b>Nie udało mi się wybrać bazy danych:</b> ' . mysql_error()); 



// Jeżeli został wciśnięty przycisk "wyślij" 
if (isset ($_POST['wys_kom'])) { 

    // Jeżeli nick jest pusty 
    if (empty($_POST['nick'])) { 
    $komunikat .= '<p>Podaj swój nick (imię).</p>'; 
    } else { 
    $nick = ($_POST['nick']); 
    } 

    // Jeżeli komentarz jest pusty 
    if (empty($_POST['tel'])) { 
    $komunikat .= '<p>Podaj numer telefonu.</p>'; 
    } else { 
    $tel = stripslashes($_POST['tel']); 
    } 


    if (empty($_POST['e_mail'])) { 
    $komunikat .= '<p>Podaj swój e-mail</p>'; 
    } else { 
    $e_mail = ($_POST['e_mail']); 
    } 
    if (empty($_POST['haslo'])) { 
    $komunikat .= '<p>Podaj swoje hasło</p>'; 
    } else { 
    $haslo = ($_POST['haslo']); 
    } 

    //Jeżeli nie ma żadnego błędu 
    if (!isset($komunikat)) { 
    $zapytanie = "INSERT INTO Diverson (url, nick, data, ip, tel, e_mail, haslo) VALUES ('$adres', '$nick', NOW(), '$IP', '$tel', '$e_mail', '$haslo')"; 
    mysql_query("set names utf8;"); 
    if ($rezultat = mysql_query ($zapytanie)) {  
     mysql_close();  

     header('Location: http://www.google.pl'); 


     exit() ; 
     $komunikat = '<p>Dziekujemy za wypełnienie formularza.</p>'; 

    } else { 
     $komunikat = '<p>Przepraszamy za chwilowe usterki. Wysłanie formularza nie było możliwe. Spróbuj później.</p>'; 
    } 
    } 
} 


// Jeżeli są jakieś komunikaty - wyświetl je 
if (isset($komunikat)) { 
    echo '<div class="komunikat">'.$komunikat.'</div>'; 
} 

// Formularz wysyłania komentarza 
echo' 
<div class="formularz"> 
<h2>Wypełnij formularz:</h2> 
    <form action="'.$lokalizacja.'" method="post"> 
    <p><b>Podaj nick do rejestracji</b>: <br /><input type="text" name="nick" size="35" maxlength="35" /></p> 
    <p><b>Podaj hasło do rejestracji</b>: <br /><input type="text" name="haslo" size="35" maxlength="35" /></p> 
    <p><b>Podaj numer telefonu</b>:<br /><input type="text" name="tel" size="35" maxlength="35" /></p> 
    <p><b>Twój e-mail</b>: <br /><input type="text" name="e_mail" size="35" maxlength="35" /></p> 
    <input type="submit" name="wys_kom" value="Wyślij" class="przycisk"/> 
    </form> 
</div> 

'; 

     ob_end_flush(); 
     ob_end_clean(); 
     ?> 
</body> 
</html> 
+0

非常感谢你,在你的回应前几秒钟就做到了这一点; _;感谢您的工作! – Tomasz