PDA

View Full Version : سوال: مشکل عجیب با header



Master_Power
یک شنبه 28 تیر 1394, 19:08 عصر
سلام

چرا توی لوکال هاست وقتی سایت را ساختم هیچ مشکلی با header ندارم و سایت به درستی کار میکنه
ولی وقتی سایت را روی سرور Cpanel بارگزاری میکنم ایراد از header میگیره و وقتی هم یه آدرس صفحه از پنل کاربری را به صورت مستقیم بدون نام کاربری و پسورد میزنم وارد میشه ؟

آقا یکی کلا ریزه کاری های کار با header را بگه
خب من توی چندتا جای سایت از header برای اینکه وقتی session ایجاد نشده باشه استفاده کردم که بره به فرم های ورود

ککککککککممممممممککککککککک ککککک

ashid098
یک شنبه 28 تیر 1394, 20:26 عصر
نفهمیدم دقیقا خطاش چیه ولی بهتره از این دو تا به جای هدر ریدایرکت(به فرم ورود) و کوکی هاتون استفاده کنید

function redirect_to($location = false)
{
if(!$location)$location = $_SERVER['HTTP_REFERER'];
if (!headers_sent())
header('Location: ' . $location);
else {
echo '<script type="text/javascript">';
echo 'window.location.href="' . $location . '";';
echo '</script>';
echo '<noscript>';
echo '<meta http-equiv="refresh" content="0;url=' . $location . '" />';
echo '</noscript>';

}

Unique
یک شنبه 28 تیر 1394, 22:25 عصر
من اینجا (http://www.geekfarsi.com/%D8%AA%D9%88%D8%B6%DB%8C%D8%AD%D8%A7%D8%AA-%D9%85%D8%AE%D8%AA%D8%B5%D8%B1-%D9%88-%D9%85%D9%81%DB%8C%D8%AF-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-%D8%AE%D8%B7%D8%A7%DB%8C-headers-already-send-%D8%AF/397) در مورد خطای headers already sent توضیحات مختصر و مفیدی دادم.

اگه توی ویندوز مشکل ندارین ولی روی سرور لینوکسی مشکل دارین احتمال وجود BOM تیو فایل ها بالاست همینطور وجود کاراکتر Space یا هر چیز دیگه ای اگه دارین چیزی را require میکنید.

Master_Power
دوشنبه 29 تیر 1394, 00:02 صبح
سلام
ممنون. مطلب سایت را خوندم
بله اینا را میدونم
ولی مشکل اینجاست که چجوری بفهمیم کاراکتری هست یا نه ؟

من با notpad++ یونیکد را روی utf-8 whit out boom میزارم

آیا درسته یا باید یه چیز دیگه بزارم ؟

راستی تو notpad++ توی گزینه encoding ما 2 قسمت داریم که توی هر 2 قسمت یونیکد ها یکی هستن
این 2 قسمت چه تفاوتی باهم دارن ؟

Unique
دوشنبه 29 تیر 1394, 00:19 صبح
آیا درسته یا باید یه چیز دیگه بزارم ؟
درسته


راستی تو notpad++ توی گزینه encoding ما 2 قسمت داریم که توی هر 2 قسمت یونیکد ها یکی هستن
این 2 قسمت چه تفاوتی باهم دارن ؟

من با ++notepad کار نکردم. encoding ها را بنویسین تا من یا دوستان دیگه راهنمایی کنند.

برای پیدا کردن مشکل بهترین راه trace کردن هست ، خطای headers اعلام میکنه که header توی چه فایلی و کجا داره ارسال میشه.

Master_Power
دوشنبه 29 تیر 1394, 01:13 صبح
تصویرشو فرستادم

Unique
دوشنبه 29 تیر 1394, 01:49 صبح
درسته ، همینه. دومی BOM میگذاره اول فایل.

این مطلب (http://www.geekfarsi.com/%D9%BE%DB%8C%D8%AF%D8%A7-%DA%A9%D8%B1%D8%AF%D9%86-%D9%81%D8%A7%DB%8C%D9%84%E2%80%8C%D9%87%D8%A7%DB%8 C%DB%8C-%DA%A9%D9%87-bom-%D8%AF%D8%A7%D8%B1%D9%86-%D9%88-%D8%B7%D8%B1%DB%8C%D9%82%D9%87-%D8%AD%D8%B0/411) را بخونید تا بتونید فایل های BOM دار را شناسایی و حذف کنید.

Amir9891
دوشنبه 29 تیر 1394, 15:10 عصر
اگر مشکل حل نشد Output Buffering رو یه تستی بزن ردیف میشه... :)

asma69
دوشنبه 29 تیر 1394, 23:11 عصر
سلام

چرا توی لوکال هاست وقتی سایت را ساختم هیچ مشکلی با header ندارم و سایت به درستی کار میکنه
ولی وقتی سایت را روی سرور Cpanel بارگزاری میکنم ایراد از header میگیره و وقتی هم یه آدرس صفحه از پنل کاربری را به صورت مستقیم بدون نام کاربری و پسورد میزنم وارد میشه ؟

آقا یکی کلا ریزه کاری های کار با header را بگه
خب من توی چندتا جای سایت از header برای اینکه وقتی session ایجاد نشده باشه استفاده کردم که بره به فرم های ورود

ککککککککممممممممککککککککک ککککک

سلام...منم قبلا با این مشکل مواجه شدم...
این خطا بیشتر برای اینه که قبل دستور هیدر کدهای html وجود داره و یا چیزی رو echo کرده باشین.....

من این چند خط کد رو به اول برنامم قبل از این که session رو start کنم و در بالای صفحه قرار دادم و مشکلم برطرف شد....




ob_start();
header( 'Cache-Control: no-store, no-cache, must-revalidate' );
header( 'Cache-Control: post-check=0, pre-check=0', false );
header( 'Pragma: no-cache' );



امیدوارم مشکل کد شما هم برطرف شه...

Unique
سه شنبه 30 تیر 1394, 01:40 صبح
من این چند خط کد رو به اول برنامم قبل از این که session رو start کنم و در بالای صفحه قرار دادم و مشکلم برطرف شد....
استفاده از output buffering راه حل نیست ، پاک کردن صورت سوال هستش. ما باید یاد بگیریم تمیز کد بزنیم و اصول را رعایت کنیم نه اینکه اصول را دور بزنیم.

Master_Power
سه شنبه 30 تیر 1394, 09:53 صبح
مشکل همچنان باقیست

یکی کمک کنه

captain_hamid
سه شنبه 30 تیر 1394, 09:59 صبح
بنده هم این مشکل رو یکی از مشتری ها گفته داره. هر کار کردم درست نشد.
پنل شما DirectAdmin هست؟

Master_Power
سه شنبه 30 تیر 1394, 17:14 عصر
پنل CPanel هست

asma69
سه شنبه 30 تیر 1394, 23:39 عصر
استفاده از output buffering راه حل نیست ، پاک کردن صورت سوال هستش. ما باید یاد بگیریم تمیز کد بزنیم و اصول را رعایت کنیم نه اینکه اصول را دور بزنیم.


آخه منم خیلی با این header مشکل داشتم...هرچی سرچ زدم و پرسیدم راهی پیدا نکردم...بعد اینو پیدا کردم و استفاده کردم..دیدم مشکلم حل شد....
ولی نمی دونستم راه درستی نیست......
ینی اشکال داره از این چندخط استفاده کنیم تو برنامه هامون؟؟

Unique
چهارشنبه 31 تیر 1394, 01:18 صبح
خه منم خیلی با این header مشکل داشتم...هرچی سرچ زدم و پرسیدم راهی پیدا نکردم...بعد اینو پیدا کردم و استفاده کردم..دیدم مشکلم حل شد....
وقتی من و خیلی برنامه نویس های دیگه مشکل نداریم یعنی کسانی که با این خطا روبرو میشن درک و دانش درستی از پرتوکل http و اینکه کی باید header ها را ارسال کنن ندارند.


ولی نمی دونستم راه درستی نیست......

ینی اشکال داره از این چندخط استفاده کنیم تو برنامه هامون؟؟
بحث این نیست که Output Buffering بده یا به کار نمیاد که اتفاقا در جاهایی بسیار کاربرد هم داره. اما اینکه فکر کنیم خطای Headers Already Sent یک مشکل در PHP هست و با Output Buffering مشکل را حل میکنیم کاملا اشتباهه. برنامه نویسی که نتونه کدش را Trace و Debug کنه برای این کار ساخته نشده و باید تجدید نظر کنه.

Master_Power
چهارشنبه 31 تیر 1394, 09:25 صبح
بحث این نیست که Output Buffering بده یا به کار نمیاد که اتفاقا در جاهایی بسیار کاربرد هم داره. اما اینکه فکر کنیم خطای Headers Already Sent یک مشکل در PHP هست و با Output Buffering مشکل را حل میکنیم کاملا اشتباهه. برنامه نویسی که نتونه کدش را Trace و Debug کنه برای این کار ساخته نشده و باید تجدید نظر کنه.

سلام. آقایی که درک درستی از http داری و میتونید debug کنید لطفا توضیحی بدید که چطور این مشکل را برطرف کنیم.

و اینکه من تمامی فایل هام utf-8whith out Bom هست و اینکه header را هم هم قبل از session زدم و هم بعدش ولی روی سرور کار نمیده در صورتی که روی لوکال هاست درسته.

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

مگه شما از روز اول برنامه نویس بودی ؟ شما هم حتما یه روزی همین مشکلاتو داشتی و از کسی پرسیدی. پس نباید به کسی که یک سری مشکلات داره و سوال میپرسه اینجوری بگید.
متاسفم برای طرز تفکرتون و اینکه اگه نمیتونید به سوالی جواب بدید بهتره اصلا تو انجمن نیاید.

Unique
چهارشنبه 31 تیر 1394, 13:12 عصر
سلام. آقایی که درک درستی از http داری و میتونید debug کنید لطفا توضیحی بدید که چطور این مشکل را برطرف کنیم.

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

مگه شما از روز اول برنامه نویس بودی ؟ شما هم حتما یه روزی همین مشکلاتو داشتی و از کسی پرسیدی. پس نباید به کسی که یک سری مشکلات داره و سوال میپرسه اینجوری بگید.
متاسفم برای طرز تفکرتون و اینکه اگه نمیتونید به سوالی جواب بدید بهتره اصلا تو انجمن نیاید.

نمیدونم چرا از کوره در میرید ، من داشتم توجیه استفاده از output buffering برای رفع مشکل headers already sent را به چالش میکشیدم و هنوز هم معتقدم دوستانی که فکر میکنند برای رفع این مشکل باید از output buffering استفاده کنن اشتباه بزرگی مرتکب میشن و قابلیت های trace و debgu ی که یک برنامه نویس باید داشته باشه را ندارن.

من برام خیلی جالبه که شما اینطوری برخورد میکنید ، من شاید حرفم را رک و راست زده باشم اما اصلا قصد توهین نداشتم و از کلمه نا مناسبی هم استفاده نکردم ، درک و دانش معنی آگاهی میده و اصلا کلمات زشتی نیستند. حالا نمیخوام موضوع را کش بدم و چون شما شروع کننده تاپیک هستین ازتون عذر میخوام اگه سوء تفاهم شده براتون. من قصدم فقط راهنمایی و اشتراک سواد کم خودم بوده و اصلا و ابدا قصد جسارت به شما یا هر کس دیگه ای را نداشتم و اگر چنین برداشتی کردین باز هم عذرخواهی میکنم.


و اینکه من تمامی فایل هام utf-8whith out Bom هست و اینکه header را هم هم قبل از session زدم و هم بعدش ولی روی سرور کار نمیده در صورتی که روی لوکال هاست درسته.

متاسفانه فقط با بررسی کدهای شما میشه دقیق گفت مشکل چیه و امکانش برای من نیست. ممکنه بتونم با داشتن آدرس صفحه ای که خطا میده بیشتر راهنمایی کنم ، میتونید آدرس را همینجا بگذارین یا پیام خصوصی کنید.

موفق باشین.

captain_hamid
چهارشنبه 31 تیر 1394, 13:16 عصر
واقعا جناب unique این طرز برخورد درست نیست.
master_power من همین مشکل رو داشتم رو یه هاست رایگان(برای تست) آپلود کردم مشکل برطرف شد و دیگه اون خطا رو نداد. بهتره با پشتیبانی هاست مشکلتو درمیون بگذاری. چون فکر میکنم صد درصد به هاست ربط داره.

Master_Power
چهارشنبه 31 تیر 1394, 13:47 عصر
والا با مدیریت هاست هم مشکل را مطرح کردم ولی میگن که مشکل از طرف ما نیست

آقای Unique مسیر سایت را به همراه مشکل براتو تو پیام خصوصی فرستادم

pejman_view
چهارشنبه 31 تیر 1394, 18:31 عصر
یه سوال احمقانه بکنم؟

این کد را کجا استفاده می کنید:

header('location: test.php')

احیاناً بعد از باز شدن تگ <head> تو html که نیست؟

Unique
چهارشنبه 31 تیر 1394, 19:33 عصر
حیاناً بعد از باز شدن تگ <head> تو html که نیست؟
بازم دم پژمان گرم حرف منو توی مثال میزنه ! نمیدونم چرا بچه های دخیل توی این تاپیک حرف منو نمیفهمن ! احتمالا خیلی ضعیفی داره ایشون و بقیه چنین کاری کرده باشن اما خدایی اگه این باشه حرف من کجاش ایراد داره که درک درستی از http و header وجود نداره ۱؟


آقای Unique مسیر سایت را به همراه مشکل براتو تو پیام خصوصی فرستادم
باشه توی پیام خصوصی با هم پیگیریمیکنیم و نتیجه را میگذاریم بقیه هم استفاده کنن/

Unique
چهارشنبه 31 تیر 1394, 19:36 عصر
واقعا جناب unique این طرز برخورد درست نیست.
شما منو Report کنید ببینم مدیر هم میاد بگه من حرف بدی زدم !؟ حالا بماند مدیر با من خیلی گل و بلبل نیست اما جهنم و ضرر.