کاف
5 سال پیش توسط کاف مطرح شد
2 پاسخ

مشکل دستور هدر

سلام من دستور هدری ک رو سیستم خودم جواب میداد رو بردم رو هاست اصن کار نمیکنه

header('Location: http://'. URL .'admin/showproduct');

ثبت پرسش جدید
پویا هاشم زاده
@poya194 5 سال پیش آپدیت شد
0

سلام.
این مورد به دلیل output buffering اتفاق میوفته چون پیش فرض در لوکال فعاله ولی در بیشتر هاست ها خیر.
پس شما اگر یک خروجی قبل اجرای header دارید این مشکل پیش میاد که توصیه میشه با اضافه کردن ob_start() به اول کد php خودتون (قبل از هرچیزی و درست بعد از <?php اضافه کنید) مشکل حل میشه. بعد هدر سعی کنید exit(); هم بزنید.
همچنین اگر error_reporting(E_ALL); رو بزنید اول فایل ارور header already sent.. رو هم باید ببینید که بسته به کانفیگ هاست یا نشون میده یا داخل error_log لاگ میندازه (داخل دایرکت ادمین که اصلا دیباگ دردسره ولی سی پنل بهتره باز)
اگر نمی خواید ob رو فعال کنید میتونید از js برای ریدایرکت استفاده کنید :

echo "<script type='text/javascript'>window.location.href = 'http://".URL . 'admin/showproduct' ."';</script>"
exit();

این exit هم برای اینه که مثلا اگر این هدر رو در بخش های دارای احراز هویت مثل پنل ادمین اگر میزارید و در ادامه اینها کدهای نمایش پنل باشه کاربر به راحتی با پلاگین های مرورگر این هدر رو دور میزنه (چون ماله مرورگره) و بعد ادامه کد رو برای خود اجرا میگیره (مثلا نمایش کامل پنل). در کل بستگی به استفاده در جاش داره ولی همیشه بهتره که exit بشه

https://netparadis.com/php-redirect/
https://netparadis.com/output-buffering-php/


کاف
تخصص : برنامه نویس وب
@kaf 5 سال پیش مطرح شد
0

@poya194
سلام و ممنون من تازه کارم و روی سیستم mvc کار میکنم هرجا برنامه ob_start() i رو اجرا کرذم کار نکزد میه دقیق بگید کجا باید بنویسمش ممنونم.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام