How can a specific device be allowed to access and log in? I want my users to be able to log in only with the device they have already authenticated. Of course, I don't mean using session (non-expiring cookie) because it will be lost after some time or by clear chach. It should also be in such a way that this access remains after changing the IP.
For this, I first checked the browsers (Chrome, Firefox, Safari and Internet Explorer). Then the type of device and its operating system (Linux, Ubuntu, Windows, Android and Apple)
But if a user logs in with two identical devices, the same operating system and the same browser, this code cannot figure it out.
with the following code:
class Detect
{
public static function systemInfo()
{
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$os_platform = "Unknown OS Platform";
$os_array = array('/windows phone 8/i' => 'Windows Phone 8',
'/windows phone os 7/i' => 'Windows Phone 7',
'/windows nt 6.3/i' => 'Windows 8.1',
'/windows nt 6.2/i' => 'Windows 8',
'/windows nt 6.1/i' => 'Windows 7',
'/windows nt 6.0/i' => 'Windows Vista',
'/windows nt 5.2/i' => 'Windows Server 2003/XP x64',
'/windows nt 5.1/i' => 'Windows XP',
'/windows xp/i' => 'Windows XP',
'/windows nt 5.0/i' => 'Windows 2000',
'/windows me/i' => 'Windows ME',
'/win98/i' => 'Windows 98',
'/win95/i' => 'Windows 95',
'/win16/i' => 'Windows 3.11',
'/macintosh|mac os x/i' => 'Mac OS X',
'/mac_powerpc/i' => 'Mac OS 9',
'/linux/i' => 'Linux',
'/ubuntu/i' => 'Ubuntu',
'/iphone/i' => 'iPhone',
'/ipod/i' => 'iPod',
'/ipad/i' => 'iPad',
'/android/i' => 'Android',
'/blackberry/i' => 'BlackBerry',
'/webos/i' => 'Mobile');
$found = false;
$device = '';
foreach ($os_array as $regex => $value) {
if ($found)
break;
else if (preg_match($regex, $user_agent)) {
$os_platform = $value;
$device = !preg_match('/(windows|mac|linux|ubuntu)/i', $os_platform)
? 'MOBILE' : (preg_match('/phone/i', $os_platform) ? 'MOBILE' : 'SYSTEM');
}
}
$device = !$device ? 'SYSTEM' : $device;
return array('os' => $os_platform, 'device' => $device);
}
public static function browser()
{
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$browser = "Unknown Browser";
$found = false;
$browser_array = array('/msie/i' => 'Internet Explorer',
'/firefox/i' => 'Firefox',
'/safari/i' => 'Safari',
'/chrome/i' => 'Chrome',
'/opera/i' => 'Opera',
'/netscape/i' => 'Netscape',
'/maxthon/i' => 'Maxthon',
'/konqueror/i' => 'Konqueror',
'/mobile/i' => 'Handheld Browser');
foreach ($browser_array as $regex => $value) {
if ($found)
break;
else if (preg_match($regex, $user_agent, $result)) {
$browser = $value;
}
}
return $browser;
}
}
print_r(Detect::systemInfo());
print_r(Detect::browser());