PDA

View Full Version : تغییر در charset درون header پس از فرستادن



ngmajid
پنج شنبه 27 بهمن 1384, 09:32 صبح
سلام دوستان
من یک فرم upload عکس دارم. در این صفحه اگه عکس حجمش و فورمتش مقدارهای مجاز باشند هیچ مشکلی پیش نمی آید.
ولی در صورتی که شرط حجم فایل و فورمت فایل با مقادیر قابل قبول مطابقت نداشته باشه یه پیغام خطا ظاهر می شه که به فارسی نوشتم که کاربر متوجه بشه عکس انتخابی از نظر حجم و فورمت قابل قبول نیست.
این پیغام بصورت حروف ناشناخته بنمایش در می آیند.
برای رفعش کد زیر رو گذاشتم و درست شد

header('Content-Type: text/html; charset=utf-8');
ولی در این حالت موقعی که عکس قابل قبول باشه پیغام header already sent ظاهر میشه.
از جستجو کردن داخل این سایت و استفاده از
if (!headers_sent()) هم نتیجه نگرفتم
.
اگه کسی راهی بلده که بشه هدر قبلی که هدر پیش گزیده شده توسط آپاچی باشه رو unset کرد و هدر جدید رو set کرد لطفا راهنمایی کنه

nematia
پنج شنبه 27 بهمن 1384, 10:25 صبح
یک سووال: چرا موقعی که عکس قابل قبول باشه پیغام header already sent ظاهر میشه؟ مگه قراره header مجددی set بشه؟

به هر حال روش من اینه: لود شدن header ها طبق شرایطی انجام نشه. مثلا وقتی sh=0 باشه (این متغیر را به صورت دستی موقع فراگذاری عکس از طریق get بفرستید.)

ngmajid
پنج شنبه 27 بهمن 1384, 11:04 صبح
ظاهرا قبل از اینکه فرمان درون echo رو که من برای تائید فرستادن عکس نوشتم رو اجرا کنه و هدری رو که من نوشتم بنمایش در بیاره هدر فرستاده شده توسط template رو اجرا می کنه.
البته من نمیتونم هدر خودم رو بردارم چون در شرایطی که عکس قبل قبول نباشه پیغام خطایی که به فارسی نوشتم از این هدر استفاده میکنه چون در اینصورت صفحه template لود نمیشه و هدری از طرف اون فرستاده نمیشه.
در ضمن من پیغام خطا ی upload و یا موفقیت آمیز بودن رو درون همون صفحه نشون می دم.

armin390
پنج شنبه 27 بهمن 1384, 18:56 عصر
احتمالا مشکل همیشگی یعنی 3 تا کاراکتر اول رو از اسکریپتتون حذف نکردین برای این کار می تونی فایل unicode رو که save! کردی با یه ادیتوری که از unicode پشتیبانی نمی کنه باز کنی و سه تا کاراکتر اول رو حذف کنید

nematia
جمعه 28 بهمن 1384, 03:35 صبح
فکر می‌کردم توضیح مختصری که نوشتم کافی باشه ولی...
اول: شما نگفته بودید که می‌خواهید عکس همزمان با فراگذاری نمایش داده بشه. جواب سوال اول قبلی را گرفتم.
دوم: اگر ممکنه کدهای خودتون رو بذارید اینجا تا بررسی و اصلاح بشن.

ngmajid
جمعه 28 بهمن 1384, 23:30 عصر
آقای armin390 مشکل از اون سه کاراکتر نیست
در ضمن کد خیلی طولانی است و قابل فهم ممکنه نباشه فقط میخواهم بدونم آیا کسی بلده با یک دستور شرطی مثلا
if (!headers_sent()) یا
if (charset='UTF-8') یا اینکه
if (isset(header)) مشخص کنه که قبلا header فرستاده شده یا خیر.
یعنی قبل از اینکه پیغام خطای header already sent بیاد بشه فهمید.

armin390
شنبه 29 بهمن 1384, 12:19 عصر
خوب با ()header_sent (خودت نوشتی)می تونی چک کنی که header ارسال شده یا نه.

فکر کنم با بافر کردن خروجی بتونی به نتیجه برسی(_ob)

ngmajid
شنبه 29 بهمن 1384, 19:26 عصر
برنامه من با دو روش زیر کار کرد که از دوستانی که این جوابها رو گذاشتن خیلی متشکرم
1- روش بهتر headers_sent است.
2- وقتی sh=0 باشه میشه هدر رو ست کرد(این متغیر را به صورت دستی موقع فراگذاری عکس از طریق get بفرستید.)