Warning: Cannot modify header information - headers - Грешка

topchokt

Registered
Здравейте имам ето този код:
Код:
<?php
$vote=$_POST['vote'];//Присвояваме стойноста на въпроса
$ip= getenv("REMOTE_ADDR"); //Взимаме ИП адреса на потребителя
include('anketaconf.php');//Инклудваме конфиг файла
$sql="SELECT * FROM otgovori WHERE o_id LIKE '$vote'";//Селектираме от таблицата с отговори отговора които съответства на $vote ( на изпратения отговор )
$rez=mysql_query($sql,$link);
$red=mysql_fetch_array($rez);

$v_id=$red['v_id'];
$tvote=$red['rezultat'];

$tvote++ ;

$sql1="SELECT * FROM ip WHERE `uip` LIKE '$ip' AND `v_id` LIKE '$v_id' ";//Проверяваме дали този потребител вече не е гласувал
$rez1=mysql_query($sql1,$link);
$chekip=mysql_num_rows($rez1);//Проверяваме дали този потребител вече не е гласувал

//Ако не е гласувал записваме в полето с ИД които сме приели от $vote стоиноста на $tvote
if($chekip==0){
$sql="UPDATE otgovori SET rezultat='$tvote' WHERE o_id='$vote'";
$rez=mysql_query($sql,$link);

$sql="INSERT ip (v_id , uip) VALUES ('$v_id', '$ip')";
$rez=mysql_query($sql,$link);
}
//Ако потребителя вече е гласувал ...
else {echo "Вие вече сте гласували!";}
mysql_close($link);
//Пренасочваме го към страницата от която идва
$refe=getenv("HTTP_REFERER");
header("Location: $refe");
?>
Когато гласувам получавам следната грешка:
Warning: Cannot modify header information - headers already sent by (output started at /home/sait.com/sait.com/includes/sendvote.php:1) in /home/sait.com/sait.com/includes/sendvote.php on line 31
Като на този 31 ред е :
Код:
header("Location: $refe");
Някакви идеи как да оправя проблема ?
 
Трябва да махнеш това echo ....

header трябва да се извежда преди нещо друго да бъде изведено на екрана.
 
lub4o каза:
Сложи най в началото на кода това
<?php
ob_start();
?>

Преди целия код


madmax3 каза:
Трябва да махнеш това echo ....

header трябва да се извежда преди нещо друго да бъде изведено на екрана.


И по двата начина пробвах, но проблема си остава.
 
Код:
<?php 
$vote=$_POST['vote'];//Присвояваме стойноста на въпроса 
$ip= getenv("REMOTE_ADDR"); //Взимаме ИП адреса на потребителя 
include('anketaconf.php');//Инклудваме конфиг файла 
$sql="SELECT * FROM otgovori WHERE o_id LIKE '$vote'";//Селектираме от таблицата с отговори отговора които съответства на $vote ( на изпратения отговор ) 
$rez=mysql_query($sql,$link); 
$red=mysql_fetch_array($rez); 

$v_id=$red['v_id']; 
$tvote=$red['rezultat']; 

$tvote++ ; 

$sql1="SELECT * FROM ip WHERE `uip` LIKE '$ip' AND `v_id` LIKE '$v_id' ";//Проверяваме дали този потребител вече не е гласувал 
$rez1=mysql_query($sql1,$link); 
$chekip=mysql_num_rows($rez1);//Проверяваме дали този потребител вече не е гласувал 

//Ако не е гласувал записваме в полето с ИД които сме приели от $vote стоиноста на $tvote 
if($chekip==0){ 
$sql="UPDATE otgovori SET rezultat='$tvote' WHERE o_id='$vote'"; 
$rez=mysql_query($sql,$link); 

$sql="INSERT ip (v_id , uip) VALUES ('$v_id', '$ip')"; 
$rez=mysql_query($sql,$link); 
} 
//Ако потребителя вече е гласувал ... 
else {echo "Вие вече сте гласували!"; 
//Пренасочваме го към страницата от която идва 
$refe=getenv('HTTP_REFERER'); 
header('Location: $refe'); } 
mysql_close($link);
 
така
Код:
	 <?php 
$vote=$_POST['vote'];//Присвояваме стойноста на въпроса 
$ip= getenv("REMOTE_ADDR"); //Взимаме ИП адреса на потребителя 
include('anketaconf.php');//Инклудваме конфиг файла 
$sql="SELECT * FROM otgovori WHERE o_id LIKE '$vote'";//Селектираме от таблицата с отговори отговора които съответства на $vote ( на изпратения отговор ) 
$rez=mysql_query($sql,$link); 
$red=mysql_fetch_array($rez); 

$v_id=$red['v_id']; 
$tvote=$red['rezultat']; 

$tvote++ ; 

$sql1="SELECT * FROM ip WHERE `uip` LIKE '$ip' AND `v_id` LIKE '$v_id' ";//Проверяваме дали този потребител вече не е гласувал 
$rez1=mysql_query($sql1,$link); 
$chekip=mysql_num_rows($rez1);//Проверяваме дали този потребител вече не е гласувал 

//Ако не е гласувал записваме в полето с ИД които сме приели от $vote стоиноста на $tvote 
if($chekip==0){ 
$sql="UPDATE otgovori SET rezultat='$tvote' WHERE o_id='$vote'"; 
$rez=mysql_query($sql,$link); 

$sql="INSERT ip (v_id , uip) VALUES ('$v_id', '$ip')"; 
$rez=mysql_query($sql,$link); 
} 
//Ако потребителя вече е гласувал ... 
else {echo "Вие вече сте гласували!";} 
mysql_close($link); 
//Пренасочваме го към страницата от която идва 
$refe=getenv("HTTP_REFERER"); 
echo  header("Location: $refe"); 
?>
 
Тази грешка означава, че преди хедъра е изведено нещо друго.

Провери:

1. Извежда ли някакъв текст преди съобщението за грешка ?

2. Виж кода на страницата (вече изведената в браузъра). Там преди съобщението за грешка е възможно да имаш нещо друго.

3. Почни да слагаш // пред редовете докато изчезне съобщението. Така ще разбереш от къде идва проблема.

4. Възможно е някоя заявка да дава грешка. Виж файловете които инклудваш.

5. Провери си променливата $refe

6. Напиши само header("Location: http://google.bg"); например.

7. Зарежи всичко и си сипи едно.
 
Сега ново 20...
Върнах старият код, както си беше в система за анкети.
Този път грешка не показа когато гласувах, но и не ме прехвърли в страницата от която съм дошъл.


П.с. Май наистина ще ида да пия едно...
 
Като не става с header , ще стане с meta таг , така:

<?php
$vote=$_POST['vote'];//Присвояваме стойноста на въпроса
$ip= getenv("REMOTE_ADDR"); //Взимаме ИП адреса на потребителя
include('anketaconf.php');//Инклудваме конфиг файла
$sql="SELECT * FROM otgovori WHERE o_id LIKE '$vote'";//Селектираме от таблицата с отговори отговора които съответства на $vote ( на изпратения отговор )
$rez=mysql_query($sql,$link);
$red=mysql_fetch_array($rez);

$v_id=$red['v_id'];
$tvote=$red['rezultat'];

$tvote++ ;

$sql1="SELECT * FROM ip WHERE `uip` LIKE '$ip' AND `v_id` LIKE '$v_id' ";//Проверяваме дали този потребител вече не е гласувал
$rez1=mysql_query($sql1,$link);
$chekip=mysql_num_rows($rez1);//Проверяваме дали този потребител вече не е гласувал

//Ако не е гласувал записваме в полето с ИД които сме приели от $vote стоиноста на $tvote
if($chekip==0){
$sql="UPDATE otgovori SET rezultat='$tvote' WHERE o_id='$vote'";
$rez=mysql_query($sql,$link);

$sql="INSERT ip (v_id , uip) VALUES ('$v_id', '$ip')";
$rez=mysql_query($sql,$link);
}
//Ако потребителя вече е гласувал ...
else {echo "Вие вече сте гласували!";}
mysql_close($link);
//Пренасочваме го към страницата от която идва
$refe=getenv("HTTP_REFERER");
echo '<META HTTP-EQUIV="Refresh" CONTENT="0; URL='.$refe.'">';
?>

:wink:
 

Back
Горе