PDA

View Full Version : سوال: مشکل در استفاده از header ها (تکراری نیست)



ahmadbadpey
سه شنبه 30 مهر 1387, 11:33 صبح
با سلام خدمت دوستان
شاید سوالی که می خوام بپرسم بار ها توی انجمن بحث شده . سوالام درباره استفاده از header ها و اون خطای لعنتیه . می دونم که قبل از header ها هیچی نباید print یا echo بشه و حتما هدر ها قبل از همه دستورات و در ابتدای صفحه نوشته بشه اما مشکلی که من دارم اینه که می خوام ابتدا یه شرط اجرا بشه و در صورتی درستی اون ، هدر فراخونی بشه . در اینصورت باید چیکار کنم؟. تکه ای از کد رو در زیر می بینید :

<?php
require("config.php");
$query=mysql_db_query(db_name,"select * from linkdoni where link_id=\"$link_id\"",$conn);
$count=@mysql_result($query,0,4)+1;
if(mysql_db_query(db_name,"update linkdoni set click_count=\"$count\" where link_id=\"$link_id\"",$conn)){

header("location:".@mysql_result($query,0,2)."");
}else{print("<center><font style=\"color:red;font-size:11px;font-family:taoma\" dir=\"rtl\">مشکلی پیش آمده
است</font></center>");}
mysql_close($conn);
?>

vahid4134
سه شنبه 30 مهر 1387, 11:47 صبح
الان مشکل کجاست؟
چه چیزی رو شما می بینید؟

ahmadbadpey
سه شنبه 30 مهر 1387, 12:02 عصر
الان مشکل کجاست؟
چه چیزی رو شما می بینید؟

مشکل اینه که در صورت درستی شرط خطای زیر صادر میشه . برای اصلاح هم که نمی تونم header رو به بالا منتقل کنم باید حتما داخل بلاک شرط باشه :


Warning: Cannot add header information - headers already sent by (output started at c:\program files\easyphp\www\redirecting.php:9) in c:\program files\easyphp\www\redirecting.php on line 13

vahid4134
سه شنبه 30 مهر 1387, 12:10 عصر
آیا mysql_db_queryداخل شرط if اخطار میده و شما نمی خواین اخطار بده؟ اگر اینطور هست که @ اولش بزارید
درضمن اخطاری رو هم که میده بزارید شاید بهتر بشه کمک کرد

cybercoder
سه شنبه 30 مهر 1387, 12:16 عصر
تا جایی که من می دونم هیچ راهی نداره جز این که Redirect رو با استفاده از Javascript انجام بدید یا از نمایش خطا جلوگیری کنید.

ahmadbadpey
سه شنبه 30 مهر 1387, 12:27 عصر
تا جایی که من می دونم هیچ راهی نداره جز این که Redirect رو با استفاده از Javascript انجام بدید یا از نمایش خطا جلوگیری کنید.
با جاوا اسکریپت چه جوری میشه این کار رو کرد؟ لطفا یه نمونه هم بذار

ahmadbadpey
سه شنبه 30 مهر 1387, 12:31 عصر
آیا mysql_db_queryداخل شرط if اخطار میده و شما نمی خواین اخطار بده؟ اگر اینطور هست که @ اولش بزارید
درضمن اخطاری رو هم که میده بزارید شاید بهتر بشه کمک کرد

خود query مشکلی نداره خطا مال هدر است . خود خطا را بالا گذاشتم

iranwz
سه شنبه 30 مهر 1387, 12:33 عصر
سلام
من زیاد وارد نیستم ولی وقتی این خطای headers already sent by را می بینم
متوجه میشم توی کلمات فارسی encoding رو باید uft-8 without bom بزارم

الان هم دیدم شما از کلمات فارسی استفاده کردید !

cybercoder
سه شنبه 30 مهر 1387, 12:33 عصر
http://barnamenevis.org/forum/showthread.php?t=41056&highlight=document.location

ahmadbadpey
سه شنبه 30 مهر 1387, 12:50 عصر
http://barnamenevis.org/forum/showthread.php?t=41056&highlight=document.location

من رفتم از javascript استفاده کنم با همون کدی که شما معرفی کردین اما اون کد رو فقط توی صفحه نمایش می ده . من برای ریدایرکتینگ این کد رو نوشتم:

echo("document.location.href=\"yourpage.php\";");

cybercoder
سه شنبه 30 مهر 1387, 13:22 عصر
کد جاوا اسکریپت رو باید در تگ <script> قرار بدید!

ahmadbadpey
سه شنبه 30 مهر 1387, 13:38 عصر
با تشکر از تمامی دوستان خصوصا cybercoder
مشکلم حل شد . کد رو باید به صورت زیر می نوشتم :


echo("<script>document.location.href='".@mysql_result($query,0,2)."'</script>");