PDA

View Full Version : عدم نمایش صفحات



syasamboo3
چهارشنبه 04 اردیبهشت 1392, 09:21 صبح
سلام.
چند تا صفحه دارم.توی لوکال به راحتی اجرا میشن ولی توی هاست که میریزمشون درست کار نمیکنن.
عملیات مورد نظر اجرا میشه ولی به صفحه مورد نظر وارد نمیشه.
مشکل از کجاست؟

mohsen6500
چهارشنبه 04 اردیبهشت 1392, 10:33 صبح
سلام
توضیحاتت خیلی کلی هستش
یکمی خوردش کن!

syasamboo3
چهارشنبه 04 اردیبهشت 1392, 10:46 صبح
چشم.چند تا صفحه ساختم
تو صفحه اول اطلاعات وارد میشن و به دیتابیس و ایمیل ارسال میشن. در صورت انجام صحیح عملیات به صفحه بعد منتقل میشه با این دستور

header('Location: '.$success_url);
این عملیات توی لوکال به درستی انجام میشه ولی وقتی آپلود میکنم اطلاعات به دیتابیس و ایمیل ارسال میشن ولی صفحه بعدی نمایش داده نمیشه. یه صفحه خالی نمایش داده میشه

syasamboo3
چهارشنبه 04 اردیبهشت 1392, 17:19 عصر
کسی نبود یه راهنمایی به ما بکنه

qartalonline
چهارشنبه 04 اردیبهشت 1392, 18:38 عصر
لطفا کدهاتون رو بذارید تا بهتر بشه راهنمایی کرد.

nsco_nsco
پنج شنبه 05 اردیبهشت 1392, 03:46 صبح
سلام دوست من این مشکل مال PHP.INI سرور هست مال نرم افزار لوکالتون رو جایگزینش کنید و سرور را ریستارت کنید مشکل حل می شود موفق باشید

Unique
جمعه 06 اردیبهشت 1392, 02:06 صبح
اولا Location را باید به صورت مسیر کامل بدی ! relation نده‌ ! (خیلی مواقع مشکل ساز میشه)
ثانیا اطمینان حاصل کن که header را قبل از ارسال هر کاراکتری میفرستی ،‌مخصوصا موضوع BOM خیلی مهمه ! الان نشد تست کنم اما بین ویندوز و لینوکس تفاوتهایی وجود داره ! شما لوکالت ویندوزه و سرورت لینوکسه و این میتونه مشکل ساز بشه ،‌ معمولا سرور ها خطاها را log میگیرند و توی تنظیمات default نمایش نمیدهند که ممکنه شما متوجه headers already sent نشده باشی ! پس فایل log روی سرور را چک کن یا error_reporting و وضعیت نمایش خطا ها را درست ست کن !

lordofphp
جمعه 06 اردیبهشت 1392, 12:26 عصر
به نام خدا
سلام برای رفع این مشکل این کار بکن:
تو اولین خط اینو بنویس


<?php ob_start(); ?>

و بعد در انتها بعد از تابع هدر این بنویس


<?php ob_end_flush(); ?>

مشکلتون ان شاء الله که حل میشه
درپناه وراه ایزدمنان پیروز و پایدار باشید
یاحق

Unique
شنبه 07 اردیبهشت 1392, 02:49 صبح
من نمیدونم چرا هر کسی همینکه به مشکل ارسال اطلاعات قبل از header میخوره ! فورا میاد ob_start ! بهتر نیست عملیات header را کاملا اصولی در ابتدای صفحات انجام بدین و حواستون باشه چیکار میکنیم که نخواین اطلاعات را یکدفعه ارسال کنید ؟

یا مثلا require_once کردن ! یه مقاله ای میخوندم پیداش نکردم اما به شدت ازش بد گفته بود. بهتره کمی توی کدنویسی دقت کنیم و فقط دنبال حل مشکل کوچیک از طریق قربانی کردن performance نباشیم !

saeidpsl
شنبه 07 اردیبهشت 1392, 03:46 صبح
اول از همه فایلت رو با UTF-8 Encoding سیو کن
بعد اول لاین فایلت این کد رو بزار


<?php session_start(); ob_start() ?>

تموم.




من نمیدونم چرا هر کسی همینکه به مشکل ارسال اطلاعات قبل از header میخوره ! فورا میاد ob_start ! بهتر نیست عملیات header را کاملا اصولی در ابتدای صفحات انجام بدین و حواستون باشه چیکار میکنیم که نخواین اطلاعات را یکدفعه ارسال کنید ؟
!
داش درست میگه خوب منم قبلا قسمت header مشکل داشتم تو گوگل جستجو کردم اینو گفته بودن بعد نوشتم مشکلم حل شد

lordofphp
شنبه 07 اردیبهشت 1392, 13:30 عصر
سلام
جناب unique سلام! حالتون خوبه! ببخشد جسارت میکنم اما دقیق توضیح ندادید میشه کامل توضیح بدین
باتشکر

Tarragon
شنبه 07 اردیبهشت 1392, 14:02 عصر
اول از همه فایلت رو با UTF-8 Encoding سیو کن
بعد اول لاین فایلت این کد رو بزار


<?php session_start(); ob_start() ?>

تموم.




داش درست میگه خوب منم قبلا قسمت header مشکل داشتم تو گوگل جستجو کردم اینو گفته بودن بعد نوشتم مشکلم حل شد
جاااااان؟ چه ربطه به سشن ها داره؟

saeidpsl
شنبه 07 اردیبهشت 1392, 14:29 عصر
جاااااان؟ چه ربطه به سشن ها داره؟

چون بعضی وقت ها مثلا سشن رو وسط کدها یا بعد از هدر سشن اجرا میکنی باعث میشه که header ارور بده بهتره خط اول باشه که مزاحم دیگرون نشه من تست کردم که اینو نوشتم و گوگل .



Any HTML output, including the DOCTYPE declaration or any HTML tag, including the head of the page
Extra whitespace before the opening PHP tag of the page, or outside the PHP tags of an include file
Using print() or echo before calling header() or session_start()
Using virtual() to include files
Using the byte-order mark (BOM) at the beginning of a page

Unique
یک شنبه 08 اردیبهشت 1392, 02:07 صبح
جناب unique سلام! حالتون خوبه! ببخشد جسارت میکنم اما دقیق توضیح ندادید میشه کامل توضیح بدین

ببینید در حالت عادی php شما هرچی خروجی میدین را همون موقع برای client ارسال میکنه ،‌ حالا اول از همه باید header ها ارسال بشوند ! شما با دستور header میتونید مقادیر دیگه ای را به header های پیش فرض اضافه کنید ،‌حالا اگه حتی یک کاراکتر هم ارسال کنید دیگه نمیشه توی header ها تغییر داد چون دیگه ارسال شده اند ! ob_start میاد و output buffering را فعال میکنه که در این حالت هیچ چیزی تا زمان صدا زدن ob_end_flush ارسال نمیشه و همه چیز میره توی internal buffer. حالا حرف من اینه که این کار واقعا خیلی از جاها نیاز نیست ! یعنی شما با حذف کاراکتر های الکی مثل bom و ... از ابتدای فایل و یا ارسال خروجی ها بعد از ست کردن header میتونید بدون output buffering عمل کنید ،‌کاری نداره ! از توی جدول ۱۰۰۰۰۰ تا رکورد بخونید و یکبار بدون ob_start همه ردیف ها را echo کنید و یکبار با output buffering ! متوجه میشین !

engmmrj
یک شنبه 08 اردیبهشت 1392, 12:32 عصر
مثلا require_once کردن ! یه مقاله ای میخوندم پیداش نکردم اما به شدت ازش بد گفته بود. بهتره کمی توی کدنویسی دقت کنیم و فقط دنبال حل مشکل کوچیک از طریق قربانی کردن performance نباشیم !
به جای require_once از چی استفاده کنیم ؟

lordofphp
یک شنبه 08 اردیبهشت 1392, 15:24 عصر
سلام
خوبین؟
جناب unique مرسی از توضیحاتتون !
اون مورد هم هست درسته!

Unique
دوشنبه 09 اردیبهشت 1392, 02:25 صبح
به جای require_once از چی استفاده کنیم ؟

حالاست که یکی بیاد بگه دیگه داری مته به خشخاش میگذاری ! اما همون require کفایت میکنه. require_once میاد مطمئن میشه که شما قبلا فایل مورد نظر را require نکرده باشین و این چک کردنش یکجور over head هستش ! اگه درست فایل ها را require کنید و همینطوری دیمی چون یادتون نیست کجا require شده از require_once استفاده نکنین اصلا نیازی بهش نیست.