PDA

View Full Version : نوشتن هدر Location به این شکل



eshpilen
دوشنبه 15 خرداد 1391, 12:13 عصر
من هدر Location رو به این شکل نوشتم و در فایرفاکس و IE تست کردم کار میکنه:

header("Location: ?per_page=$per_page&page=$page");
یعنی اسم صفحه رو دیگه بهش ندیم و فقط پارامترهایی که تغییر میکنن رو مشخص کنیم.
میخواستم ببینم این شکل استانداردی هست یا حداقل تمام مرورگرهای متداول ساپورتش میکنن یا نه.

اینطوری نوشتن از لحاظ انعطاف و راحتی کدنویسی بهتره خب.

djsaeedkhan
دوشنبه 15 خرداد 1391, 12:21 عصر
سلام
من هم در بسیاری از سایت ها دیدم همین جوری هست که شما نوشتی
-
من خودمم همیشه از این روش استفاده می کنم که به صفحه جاری هم بره

H:Shojaei
دوشنبه 15 خرداد 1391, 12:39 عصر
با سلام
عاليه تست كردم درست هم كار ميكنه
توي همه ي مرورگر ها من تست كردم جواب داد.:تشویق:

Unique
دوشنبه 15 خرداد 1391, 17:33 عصر
دوستان ! شما موضوع را دارین اشتباه مطرح میکنید !
طبق استاندارد HTTP/1.1 داریم :

HTTP/1.1 requires an absolute URI as argument to » Location: including the scheme, hostname and absolute path

بله ! ممکنه Browser ها در حال حاضر متوجه Relative URI بشوند اما طبق Protocol مربوطه شما دارین اشتباه عمل میکنید و هیچ گارانتی وجود نداره که در نسخه های بعدی Browser ها کد شما کار کنه ! چون تولید کننده Browser میتونه خودش را با استاندارد ها یکی کنه و شما دچار مشکل بشین. میدونم کمی دارم سخت میگیرم و Browser های فعلی این موضوع را پشتیبانی میکنند اما اون چیزی که اصل و درست هست را باید گفت و از تنبلی برای نوشتن یک URI کامل دست کشید.

MMSHFE
دوشنبه 15 خرداد 1391, 18:29 عصر
من خودم شخصاً اعتقاد زیادی به سخت گیری بیش از حد ندارم ولی در این مورد، توی پروژه های تجاری که مینویسم همیشه آدرس سایت رو توی یک ثابت میگذارم (توی فایل config) و اون رو به آدرس میچسبونم. مثلاً اینطوری:

header('Location: '.URL.'?id=5');
هرچند توی کارهای آموزشی و... اینقدر سختگیری نمیکنم (البته اگه قصد اون آموزش چیز دیگری غیر از استاندارد نویسی باشه وگرنه روی اصول خیلی سختگیرم)!

eshpilen
دوشنبه 15 خرداد 1391, 21:39 عصر
دوستان ! شما موضوع را دارین اشتباه مطرح میکنید !
طبق استاندارد HTTP/1.1 داریم :

HTTP/1.1 requires an absolute URI as argument to » Location: including the scheme, hostname and absolute path

بله ! ممکنه Browser ها در حال حاضر متوجه Relative URI بشوند اما طبق Protocol مربوطه شما دارین اشتباه عمل میکنید و هیچ گارانتی وجود نداره که در نسخه های بعدی Browser ها کد شما کار کنه ! چون تولید کننده Browser میتونه خودش را با استاندارد ها یکی کنه و شما دچار مشکل بشین. میدونم کمی دارم سخت میگیرم و Browser های فعلی این موضوع را پشتیبانی میکنند اما اون چیزی که اصل و درست هست را باید گفت و از تنبلی برای نوشتن یک URI کامل دست کشید.
آره مثل اینکه استاندارد نیست!!
ولی خب ظاهرا ساپورتش هست :لبخند:
بخوای خیلی استانداردبازی دربیاری ممکنه خیلی چیزای دیگه هم استاندارد نباشن.
بعدم قضیه تنبلی نبود. خب کد هرچی ساده تر و کوتاهتر و Generic تر باشه بهتره معمولا. باگ ها کمتر میشن، انعطاف بیشتر میشه، خطای انسانی کمتر میشه، امنیت بالاتر میره.
حالا نمیدونم چرا در پروتکل گفته باید آدرس مطلق باشه. حتما اون موقع فکر و دلیلی برای خودشون داشتن. ولی کم پیش نیامده که پروتکل ها چیزهایی بگن که واقعا بهترین گزینه نباشه یا حتی دچار مشکل و تناقض باشه یا بعدها که شرایط و تجربیات جدیدی بوجود میان دیگه مناسب نباشن.
بعضی چیزها هم هست که توی پروتکل ها نیامده یا حتی برخلاف پروتکل ها هستن، اما بعدها واسه خودشون تقریبا استاندارد شدن، چون همه استفاده کردن و روش توافق گرچه غیررسمی شده.
البته کلا باید درموردش بیشتر فکر کنم. شاید ارزش ریسک کردن رو نداشته باشه. هرچند اگر فردا وضعیت ساپورت تغییر کرد خب عوض کردن کد که کار سخت و پرهزینه ای نیست لزوما.
فکر کردم بعید نیست بعضی مرورگرها ساپورت نکنن. مثلا چه میدونم شاید یک مرورگر موبایل ساپورتش نکنه. اما بیخیال ما که کلا موبایل و اینا ساپورت نمیکنیم فعلا!! :لبخند:
بعید میدونم این همه سایتی هم که هست همشون واقعا برای استفاده با موبایل و اینطور چیزا بدرد بخورن.
ای استیو مرحوم خدا بگم چکارت بکنه زدی کلی از این جک جونورها زیاد کردی واسمون!

eshpilen
دوشنبه 15 خرداد 1391, 21:43 عصر
من خودم شخصاً اعتقاد زیادی به سخت گیری بیش از حد ندارم ولی در این مورد، توی پروژه های تجاری که مینویسم همیشه آدرس سایت رو توی یک ثابت میگذارم (توی فایل config) و اون رو به آدرس میچسبونم.

چرا اسم دامین و اینها رو از متغییرهای سرور نمیگیری که دیگه نیازی به تنظیمات دستی نداشته باشه و برنامه منعطف تر و هوشمندتر باشه؟
مثلا از HTTP_HOST در آرایهء _SERVER استفاده کن خب.

MMSHFE
دوشنبه 15 خرداد 1391, 21:49 عصر
چرا اسم دامین و اینها رو از متغییرهای سرور نمیگیری که دیگه نیازی به تنظیمات دستی نداشته باشه و برنامه منعطف تر و هوشمندتر باشه؟
مثلا از HTTP_HOST در آرایهء _SERVER استفاده کن خب.
خوب توی فایل config از همون میخونم و توی ثابت میگذارم. اینطوری دیگه نمیخواد همه جا بگم ['SERVER['HTTP_HOST_$ و... بجاش فقط یک ثابت URL دارم که ازش استفاده میکنم.

eshpilen
دوشنبه 15 خرداد 1391, 22:07 عصر
منم نگفتم همه جا بگید ['SERVER['HTTP_HOST_$. منظورم این بود در یک فایلی که مثل فایلهای کانفیگ در تمام صفحات اینکلود میشه، بر اساس ['SERVER['HTTP_HOST_$ بیاید و ثابت یا متغییر و هرچی که میخواید تعریف کنید و در بقیهء جاها از اون ثابت یا متغییر استفاده کنید.
اصلا این میتونه در خود فایل کانفیگ انجام بشه، یا در فایل کانفیگ اون فایل رو اینکلود کنید. نخواستید هم میتونید جداگانه بذارید. مثلا شاید بخواید فایل کانفیگ فقط حاوی متغییرهای کانفیگ باشه؛ هرچند بنظر بنده وسواس بیخودیه.

ویرایش:

آهان شما هم همین کار رو میکنی!!
ببخشید من متوجه نشدم. فکر کردم میگی دستی ست میکنی.

Unique
سه شنبه 16 خرداد 1391, 02:36 صبح
بخوای خیلی استانداردبازی دربیاری ممکنه خیلی چیزای دیگه هم استاندارد نباشن.
شما درست میگین و خیلی چیز ها استاندارد نیستن ! همین IE کلا خودش استاندارد نیست و میتونم بگم مهمترین مشکل طراحان وب استفاده کاربران از IE هستش ! اما اینجا موضوع HTTP/1.1 هست که واقعا روش خیلی کار شده , و من این مطلب را خیلی جا ها خوندم که یا absolute بدین ! بعضی چیز ها به اندازه ای تکرار میشن که توی ذهن قرار میگیرند ! مطلب شما را که خوندم گفتم نظرم را بگم. وگرنه خودم هم خیلی پایبند استاندارد ها نیستم ! بالاخره توی ایران و در عصر حاضر زندکی میکنم !

eshpilen
سه شنبه 16 خرداد 1391, 10:51 صبح
When redirecting from one page to another within the same site, it is a common mistake to use a relative URI. As a result most browsers tolerate relative URIs in the Location header, but some browsers display a warning to the end user.


ترجمه: «وقتی که از یک صفحه به صفحهء دیگری در سایت یکسانی Redirect میشود، استفاده از یک URL نسبی یک اشتباه متداول است. در نتیجه بیشتر مرورگرها URL های نسبی را در هدر Location تحمل میکنند، اما بعضی مرورگرها یک هشدار به کاربر نشان میدهند.»

منبع: http://en.wikipedia.org/wiki/URL_redirection

بابا هشدار ندید مگه آزار دارید حالا :لبخند: