PDA

View Full Version : سوال: تشخیص نوع مرورگر



imanit
یک شنبه 30 بهمن 1390, 12:35 عصر
من می خوام از کد زیر استفاده کنم تا اگه کاربری با IE6 اومد به صفحه ای دیگه منتقل بشه :

<?php
$browser = $_SERVER['HTTP_USER_AGENT'];
if(preg_match('/MSIE 6/i',$browser))
{
echo 'شما از اینترنت اکسپلورر 6 استفاده می‌کنید. لطفاً مروگر خود را ارتقا دهید';
}
?>

با چه کدی باید منتقلش کنم ؟؟؟

mohsen24000
یک شنبه 30 بهمن 1390, 12:43 عصر
با تابع ()header منتقل کنید.

imanit
یک شنبه 30 بهمن 1390, 13:03 عصر
با تابع ()header منتقل کنید.

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

header("Location: exit.php");

masoud_tamizy
یک شنبه 30 بهمن 1390, 13:17 عصر
با آدرس کامل فایل هم امتحان کنید ببینید که عملیات redirect انجام می شود ؟!

eshpilen
یک شنبه 30 بهمن 1390, 13:22 عصر
باید دستور exit رو هم بعدش بذارید.
به این شکل:

header("Location: exit.php");

exit;

با header("Location: exit.php"); فقط یک هدر به مرورگر ارسال میشه که میگه به صفحهء دیگه بره (ضمنا شما نمیتونید تضمین کنید که کلاینت حتما از این دستور اطاعت میکنه). اجرای اسکریپت PHP شما با این دستور متوقف نمیشه و تا آخرش اجرا میشه، مگر اینکه بعدش دستور exit رو بذارید.

mtchabok
یک شنبه 30 بهمن 1390, 13:26 عصر
شاید خطایی میده ، که کاری انجام نمیشه .
در ضمن سعی کنین user agent رو به این صورت بگیرین :

$browser = empty($_SERVER['HTTP_USER_AGENT'])?'':$_SERVER['HTTP_USER_AGENT'];

یه موردی رو هم باید بگم به همه و اونم اینه که ایندکسهایی که با HTTP در متغیر $_SERVER ، شرورع میشن توسط کلاینت برای شما ارسال میشه و کلاینت به سادگی میتونه ارسال نکنه و یا مقادیر اشتباهی وارد کنه . به همین دلیل زیاد به این ایندکسها اطمینان نکنین .

masoud_tamizy
یک شنبه 30 بهمن 1390, 13:28 عصر
یعنی بدون exit عملیات redirect انجام نمی شه ؟
لطفا بیشتر راجع به server_$ توضیح بدید !!!

mtchabok
یک شنبه 30 بهمن 1390, 13:44 عصر
همونطوریکه جناب eshpilen گفتن هدر ارسال میشه ولی کلاینت میتونه تبعیت بکنه و یا نه . البته مرورگرها اینکار رو انجام میدن ( در صورتی که با افزونه ای جلوش گرفته نشده باشه )
در مورد exit هم بهتره بزارید سریعتر کد خاتمه پیدا کنه . البته اگه exit رو نذارید هدر ارسال میشه ولی موتور php همچنان به پردازش فایل ادامه میده تا به پایان فایل برسه .


لطفا بیشتر راجع به server_$ توضیح بدید !!!
کدوم قسمتش رو توضیح بدم ؟

imanit
یک شنبه 30 بهمن 1390, 13:56 عصر
دستور درست کار می کنه
اگه به جای header از echo استفاده کنم پیغام نمایش داده می شه ولی با دستور header انتفال انجام نمی شه .

mtchabok
یک شنبه 30 بهمن 1390, 14:00 عصر
نمایش خطا رو در سایتتون فعال کنین و خطا رو در اینجا بزارین .

imanit
یک شنبه 30 بهمن 1390, 15:31 عصر
نمایش خطا رو در سایتتون فعال کنین و خطا رو در اینجا بزارین .

خطایی در کار نیست
مشکل انتقال هست که هیچ عملی رو نشون نمیده و حتی یک خط خطا رو هم نشون نمیده
اگه به آدرس زیر با IE ورژن 8 یا 9 برین متوجه میشین که خطایی نمیده ولی با سایر مرورگرها برین براحتی وارد میشه .

www.amolnovin.ir (http://amolnovin.ir/main/)

mtchabok
یک شنبه 30 بهمن 1390, 18:00 عصر
در IE8 من که همونطوریکه خواستید کار کرد و صفحه تغییر مرورگر اومد .
البته بله ریدایرکتی صورت نگرفت .
مطمئن هستین که تابع هدر رو قبل از هر خروجی فراخوانی کردید ؟

imanit
یک شنبه 30 بهمن 1390, 21:13 عصر
با دستور exit; مشکل رو حل کردم و نیازی به تغییر آدرس نیست