PDA

View Full Version : سوال: تعریف تعدادی متغیر در یک اسکریپت PHP با شرط نوع مرورگر کاربر



niktaal
سه شنبه 01 اردیبهشت 1388, 19:28 عصر
با سلام
یک اسکریپتی آماده کردم که توی مرورگرهای فایرفاکس و IE و اپرا ، کاملا شبیه هم اجرا نمیشه، یعین خروجی که به کاربر میده در هر 3 این مروگرها کاملا یکی نیست ، تست کردم برای اینکه اون چیزی که من می خوام عملی بشه ، می بایست متناسب با هر مروگری مقدارهای خاصی به بعضی از متغیرها بدم ، فرضا متغیر X رو برای فایرفاکس باید بدم 10 و برای اپرا بدم 5 و برای IE بدم 20 تا خروجی اسکریپتم توی هر 3 اینها مثل هم باشه ، حالا کاری که می خوام بکنم اینه که با قرار دادن مقدار متغیرهای داخل شرط این مشکل رو حل کنم ، یعنی شرطم اینطور باشه :
اگر مرورگر فایرفاکس بود {مقدار متغیرها این باشه}
در غیر اینصورت اگر اپرا بود {مقدار متغیرها این باشه}
در غیر اینصورت {مقدار متغیرها این باشه}

یخورده گشتم اما نتونستم اینو عملی کنم ، تنها دستوری که عایدم شد و مرورگر کاربر رو مشخص می کنه (در PHP) به این صورت هست :

$name= $_SERVER["HTTP_USER_AGENT"];
اما، نکته اینجاست که همچین چیزی رو من در یک فایل Ajax (در یک CMS) دیدم ، به صورت زیر شرط رو به کار برده بود :

if (is_moz)

{
**************
{

else if (is_opera)

{
**************
{

else

{
**************
{


ممنون میشم اگر راهنمایی بفرمایید .

alvanweb
سه شنبه 01 اردیبهشت 1388, 20:32 عصر
خوب با نوشتن یه تابع ساده مشکل حل میشه. من تابع detect رو به صورت زیر نوشتم:

<?php
function detect() {
$browser = array ("IE", "OPERA", "MOZILLA", "NETSCAPE", "FIREFOX", "SAFARI");
$os = array ("WIN","MAC","LINUX");
$info['browser'] = "OTHER";
$info['os'] = "OTHER";
foreach ($browser as $parent)
{
$s = strpos(strtoupper($_SERVER['HTTP_USER_AGENT']), $parent);
$f = $s + strlen($parent);
$version = substr($_SERVER['HTTP_USER_AGENT'], $f, 5);
$version = preg_replace('/[^0-9,.]/','',$version);
if ($s)
{
$info['browser'] = $parent;
$info['version'] = $version;
}
}
foreach ($os as $val)
{
if (eregi($val,strtoupper($_SERVER['HTTP_USER_AGENT']))) $info['os'] = $val;
}
return $info;
}
?>اینکه چطور ازش استفاده کنید ساده هست. تیکه کد زیر رو ببینید:

$d = detect();
$b = $d['browser'];
$v = $d['version'];
$o = $d['os'];


switch ($b) {
case 'IE';
echo "Internet Explorer";
break;

case 'FIREFOX';
echo "Firefox";
break;

default:
echo "Alvanweb";
break;
}با این تابع جدای از نوع مرورگر می‌تونید ورژن مرورگر و سیستم‌عامل رو هم وارد شرط کنید.
موفق باشید