要在现有的 GetSystemOsName
函数中获取用户是否是手机访问以及手机系统信息,你可以使用更详细的 User-Agent 解析库,如 Mobile-Detect
。
首先,你需要在你的项目中安装 Mobile-Detect
库。通过 Composer 运行以下命令进行安装:
composer require mobiledetect/mobiledetectlib
接下来,你可以进行以下修改:
use Mobile_Detect;
function GetSystemOsName()
{
$detect = new Mobile_Detect;
if (!empty($_SERVER['HTTP_USER_AGENT'])) {
$userAgent = $_SERVER['HTTP_USER_AGENT'];
// 判断是否是手机访问
if ($detect->isMobile($userAgent)) {
// 获取手机系统
if ($detect->is('iOS')) {
$OS = 'iOS';
} elseif ($detect->is('AndroidOS')) {
$OS = 'Android';
} else {
$OS = 'Other Mobile';
}
} else {
// 非手机访问,根据 User-Agent 判断操作系统
if (preg_match('/win/i', $userAgent)) {
$OS = 'Windows';
} elseif (preg_match('/mac/i', $userAgent)) {
$OS = 'MacOS';
} elseif (preg_match('/linux/i', $userAgent)) {
$OS = 'Linux';
} elseif (preg_match('/unix/i', $userAgent)) {
$OS = 'Unix';
} elseif (preg_match('/bsd/i', $userAgent)) {
$OS = 'BSD';
} else {
$OS = 'Other';
}
}
return $OS;
} else {
return "获取访客操作系统信息失败!";
}
}
在这段代码中,我们引入了 Mobile_Detect
类,并创建了一个对象 $detect
,用于检测是否是手机访问。如果是手机访问,我们进一步检测手机系统(iOS 或 Android)并返回相应的结果。如果不是手机访问,我们继续使用原来的方式来判断操作系统。
请注意,使用 User-Agent 来判断系统和设备并不是绝对可靠的方法,因为 User-Agent 可以被伪造或修改。此外,不同的手机和操作系统可能会有不同的 User-Agent 格式,因此一些情况可能无法正确识别。尽管如此,大多数情况下,这种方法应该能够提供基本的准确性。