PDA

View Full Version : ارور در تابع header



chaown
جمعه 01 اردیبهشت 1391, 03:23 صبح
این ارور رو وقتی از تابع header استفاده می کنم می گیرم
یه دستور کوئری اجرا می کنم بعد می گم اگه دستور کوئری اجرا بود توسط دستور header به صفحه ی ... برو
که این ارور رو به من می ده.


Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\1\pictures.php:111) in C:\wamp\www\1\pictures.php on line 307

ممنون

reza10wert
جمعه 01 اردیبهشت 1391, 07:53 صبح
سلام دوست عزیز
فایلت رو با با برنامه RapidPHP باز کن و دوباره با خاصیت UTF-8 whitout BOM دخیره کنید مشکلتون حل میشه

موفق باشید

chaown
جمعه 01 اردیبهشت 1391, 13:00 عصر
سلام دوست عزیز
فایلت رو با با برنامه RapidPHP باز کن و دوباره با خاصیت UTF-8 whitout BOM دخیره کنید مشکلتون حل میشه

موفق باشید

نه نشد.
خودش به همین شکل ذخیره شده بود ، منم همین کاری که گفتین رو انجام دادم نشد
BOM چیه؟

reza10wert
جمعه 01 اردیبهشت 1391, 13:11 عصر
BOM سه کاراکتره مخفی هست که اول فایلت میذاره و مانع از اجرای هدر میشه
کد صفحه ات رو بذار ببینم کاملش چطوره

chaown
جمعه 01 اردیبهشت 1391, 13:45 عصر
کار این قسمت انتخاب یک عکس از عکسهاییست که کاربر لود کرده و استفاده آن عکی به عنوان آواتار خودش.

<table border="0" cellspacing="0" cellpadding="0" style="width:80%; margin:0px 10% 5%; 10%; padding:1%; background-color:#D6D7D7; border:2px solid #6092B1; border-radius:5px;">
<tr>
<td style="width:30%; vertical-align:top;">انتخاب آواتارهاي قبلي</td>
<td style="width:70%;">';
$s=strtolower(substr($_SESSION["userName"],0,1));
echo '<table border="0" cellspacing="0" cellpadding="0" style=" margin-top:5px;">
<tr>';
// echo user images
echo '
<form name="selectImage" method="post" action="pictures.php?user=picture">';
$numOfArry=0;
$select=0;
foreach(glob("thumbnail/".$s."/".$_SESSION['userName']."/"."search"."/"."*.jpg") as $fileList)
{
$select+=1;
$link=str_replace("/search","",$fileList);
$numOfArray+=1;
echo '
<td style="vertical-align:top; padding-right:10px; width:33%;">
<input type="radio" style="width:100%;" name="imgSELECT" value="'.$fileList.'" /><br/><hr/>
<a href="'.$link.'"><img src="'.$fileList.'" style="border:0px;" /></a>
</td>
';
if(($numOfArray%3)==0)
echo '<tr>';
}
echo '
<input type="submit" name="selectSubmit" value="انتخاب به عنوان آواتار" style="border:1px solid #000; height:25px; background-color:#FFF; color:#000; border-radius:5px;" />
</form>
</tr>
</table>
</td>
</tr>
</table>

اگر کاربر دکمه selectSubmit را فشرد مقدار رکمه رادیوییه مربوط به عکس رو بگیر ( که مقدار آن همان آدرس فایل تصویریست ) . بعد با تابع explode و جمع مقادری آرایه های explode شده و رشته ثابت "thumbnail" آدرس عکس بزرگتر رو برگردون و توسط یک کوئری آدرس عکس بزرگتر رو به عنوان آواتار به جدول بده


if($_POST["selectSubmit"])
{
$selectFrom=$_POST["imgSELECT"];
$xplodeHiddenForm=explode("search",$selectFrom);

// get thumbnail picture address
$thumbnail=$xplodeHiddenForm['0']."thumbnail".$xplodeHiddenForm['1'];
$update=mysql_query("update users set imageT='".$thumbnail."'") or die(mysql_query());
if($update)
{
header("location:pictures.php?user=picture")or die(mysql_error());
}
}

reza10wert
جمعه 01 اردیبهشت 1391, 13:49 عصر
خوب دوست عزیز اول صفحه قبل از هر دستوری در خط اول دستور زیر رو بنویس


<?php ob_start(); ?>

از انتهای کدهای PHP هم این کد رو بنویس


<?php ob_end_flush(); ?>

chaown
جمعه 01 اردیبهشت 1391, 14:30 عصر
درست شد
ولی من قبلا از این تابع ها استفاده نمی کردم جواب هم می داد.
دلیل استفاده از این تابع ها چیه؟
تابع header چکار با بافر داره که حالا ما بخوایم یه دفعه بازش کنیم یه دفعه ببندیمش؟
چه مواقعی باید از این توابع استفاده کنیم، تویه صفحه های معمولی هم باید ازشون استفاده کرد ؟

reza10wert
جمعه 01 اردیبهشت 1391, 14:35 عصر
دوست عزیز تخصصی ترش رو میتونی از اساتید بپرسی

ولی فقط همین قدر میدونم که باید هنگام استفاده از تابع header در صفحه و در صورت وجود تگهای HTML باید از این توابع ( ob_start و ob_end_flush ) هم استفاده کنیم و اگر نکنیم صفحه ریدایرکت نمیشه

موفق باشید