- یکشنبه 3 آبان 1405 ساعت 00:00
- 3.1.9
- کامل شده
- منقضی شده
User Agent Class اطلاعاتی درباره مرورگر، دستگاه، سیستمعامل و Robot درخواستکننده استخراج میکند. این اطلاعات از Header ارسالی مرورگر خوانده میشوند و برای گزارشگیری یا ارائه تجربه سازگارتر مفیدند، اما نباید مبنای احراز هویت یا تصمیم امنیتی باشند.
ساختار و API اصلی
is_browser() مرورگر بودن را بررسی میکند، browser() و version() نام و نسخه را میدهند، is_mobile() و mobile() دستگاه موبایل را تشخیص میدهند، platform() سیستمعامل را برمیگرداند و is_robot() و robot() اطلاعات Robot را ارائه میکنند.
نمونه استفاده
$this->load->library('user_agent');
if ($this->agent->is_mobile()) {
$device = $this->agent->mobile();
}
$browser = $this->agent->browser();
$platform = $this->agent->platform();نکته مهم
User-Agent قابل جعل است و همیشه دقیق نیست. برای امنیت، محدودیت دسترسی و تشخیص کاربر به این Header تکیه نکنید.
مطالعه مرتبط
برای ادامه مطالعه، MVC، کوئری، ترنزکشن را ببینید.
متدهای User Agent
| متد یا مفهوم | کاربرد |
|---|---|
is_browser() و browser() | تشخیص مرورگر و نام آن. |
version() | نسخه مرورگر. |
is_mobile() و mobile() | تشخیص دستگاه موبایل. |
platform() | سیستمعامل. |
is_robot() و robot() | تشخیص Robot شناختهشده. |
accept_lang() و accept_charset() | Headerهای زبان و Charset. |
نحوه استفاده و عیبیابی
در یک Controller ابتدا Library را با Loader بارگذاری کنید، سپس تنظیمات محیطی را به آن بدهید و عملیات را اجرا کنید. نتیجه را از مسیر مشخص دریافت کنید و در صورت شکست، پیام خطا را در Log ثبت کنید. اگر Library به Driver خارجی وابسته است، وجود افزونه PHP یا برنامه موردنیاز را روی سرور بررسی کنید.
در محیط توسعه، مسیر موفق و مسیر خطا را جداگانه آزمایش کنید. ورودی خالی، مقدار نامعتبر، فایل بزرگ، Timeout سرویس خارجی و نبود مجوز نوشتن از سناریوهایی هستند که باید بررسی شوند. منابعی مانند اتصال شبکه و فایلهای موقت را پس از پایان عملیات آزاد کنید.
در بازبینی کد، ترتیب و نتیجه متدهای is_browser() و browser()، version()، is_mobile() و mobile()، platform() را بررسی کنید. نام متد بهتنهایی تضمین نمیکند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.