PDA

View Full Version : مشکل headers already sent



MRmoon
شنبه 05 اسفند 1391, 12:31 عصر
Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\EasyPHP-12.1\www\wordnews\theme\article.php:25) in C:\Program Files\EasyPHP-12.1\www\wordnews\article.php on line 28
سلام من با این ارور به مشکل برخوردم encoding صفحه هم utf-8 with BOM هست!

خواضا را هنمایی کنید!

خط 25 این هست:


if(isset($_POST[$val]))

رضا قربانی
شنبه 05 اسفند 1391, 12:36 عصر
کل صفحه article.php رو بذارید

MRmoon
شنبه 05 اسفند 1391, 13:07 عصر
<?PHP
require 'app/boot.php';
class Gpage extends article
{

function Gpage( )
{
$this->show_page = 'article.php';
}
function runner()
{
$this->chek_Get();
$article = mysql_query("SELECT * FROM article WHERE id=".$_GET['a']." ",$this->connect()) or die(mysql_error());
$this->likes_ip();
if(isset($_GET['like']) AND $this->like == TRUE)
{
$this->Update_like($article);
}
$articles = mysql_fetch_assoc($article);
include FILE_PATH.DIRECTORY_SEPARATOR.$this->show_page;
$com = mysql_query("SELECT * FROM comment WHERE aid=".$_GET['a']."",$this->connect()) or die(mysql_error());
include FILE_PATH.DIRECTORY_SEPARATOR."comment_show.php";
if(isset($_POST['c_b'])){$vals = array('c_n','c_e','c_t','c_bl','c_type');
foreach( $vals as $val ){
if(!isset($_POST[$val]))
{
header("location: index.php");return;
}
}
if($_POST[$vals[4]]!= '1' AND $_POST[$vals[4]]!= '0')
{
$type = '0';
}else{$type = $_POST[$vals[4]];}
if($_POST[$vals[0]] == ""){echo "??? ??? ?? ???? ????";}else{
if($_POST[$vals[1]] == ""){echo "????? ??? ??? ??? ????!";}else{
if($_POST[$vals[2]] == ""){echo "??? ??? ?? ???? ????";}else{
$name = htmlspecialchars($_POST[$vals[0]]);$email=htmlspecialchars($_POST[$vals[2]]);$text=$_POST[$vals[2]];$blog=htmlspecialchars($_POST[$vals[3]]);
$this->comment_send($_GET['a'],$name,$email,$text,$blog,$type);
$this->redirect("location: ");
}
}
}
}
include FILE_PATH.DIRECTORY_SEPARATOR."comment.php";

}
}
$m = new Gpage;
$m -> run( );

omidabedi
شنبه 05 اسفند 1391, 14:14 عصر
در خط 27 شما از header() استفاده کردید که بخاطر قوانین زیر این ارور رو میده

تابع header باید اول صفحه پیش از هر کدی (منظور از کد اجرایی هست) نوشته بشه
قبل از تابع header نباید از space استفاده شده باشد.
اگر به شرط بستگی دارد میتونید اینجوری بنویسیدش البته در اول صفحه قبل از هر کدی



if(){
header('location:../example.php or http://google.com');
}

2undercover
شنبه 05 اسفند 1391, 14:40 عصر
تابع
ob_start() رو توی ابتدای صفحه فراخوانی کردید یا نه...؟

plague
دوشنبه 07 اسفند 1391, 01:32 صبح
بجای

header("location: index.php");return;

بنویس


echo '<script> document.location = "index.php" ; </script>';
exit;

eshpilen
دوشنبه 07 اسفند 1391, 09:11 صبح
encoding صفحه هم utf-8 with BOM هست!
اشتب کردی.
باید utf-8 without BOM باشه.

omidabedi
دوشنبه 07 اسفند 1391, 10:51 صبح
اره eshpilen جان درست میگن
البته فکر کنم MRmoon اشتباه گفتن چون تنها فرمتی که داریم without هست with که نداره
with BOM میشه همون utf-8 معمولی

MRmoon
دوشنبه 07 اسفند 1391, 13:07 عصر
بله من اشتباه گفتم معذرت میخوام از اساتید گرامی .

به جز جاوا راه دیگری نیست؟

plague
دوشنبه 07 اسفند 1391, 15:30 عصر
مشکل از انکدینگ نیست احتمالا
صفحه شما یه خطا داره و احتمالا نمایش خطا رو آف کردین نمیبینید
بجای این


foreach( $vals as $val ){
if(!isset($_POST[$val]))
{
header("location: index.php");return;
}
}

-----

بنویسید



foreach( $vals as $val ){
echo "<br /> val is : $val ";
if(!isset($_POST[$val]))
{
echo "-> OK ";
}
}

ببینید چی به چیه
در ضمن بجای return باید بنویسی break و قبل از هدر هم بزاری
اررور ریپورتینگ رو هم حتما مطمئن شو که on هستش

MMSHFE
سه شنبه 08 اسفند 1391, 12:18 عصر
مطمئنید Encoding روی UTF-8 without BOM تنظیمه؟ آخه اون علامت سؤالها خیلی مشکوک بنظر میرسن. ضمناً اولین خط اسکریپت دستور ;()ob_start و آخرین خطش ;()ob_end_flush رو بگذارین. به احتمال زیاد مشکل حل میشه.

MMSHFE
سه شنبه 08 اسفند 1391, 12:31 عصر
لطفاً برای تاپیکتون هم عنوان مناسب انتخاب کنید. اینبار صرفاً به تذکر اکتفا شد اما از دفعات بعد، مطابق قوانین سایت، تاپیک حذف خواهد شد.