PHP système d'exploitation
serges
-
serges -
serges -
Bonjour,
Je possède le code PHP suivant qui me renvoie le système d'exploitation utilisé par l'internaute qui accède à mon site web.
<?php
/*******************************************************
* Fonction : getOs
*----------------------------------------------
* @Desc : Retourne le nom de l'os grâce à l'user agent
* @Param : $ua (str) : l'user agent dont on veux trouver l'os
* @Return : (str) le nom de l'os trouvé sinon "Système d'exploitation inconnu"
* @licence : https://opensource.org/licenses/lgpl-license.php GNU LGPL
*********************************************************/
function getOS( $ua = '' )
{
if( ! $ua ) $ua = $_SERVER['HTTP_USER_AGENT'];
$os = 'Système d'exploitation inconnu';
$os_arr = Array(
// -- Windows
'Windows NT 6.1' => 'Windows Seven',
'Windows NT 6.0' => 'Windows Vista',
'Windows NT 5.2' => 'Windows Server 2003',
'Windows NT 5.1' => 'Windows XP',
'Windows NT 5.0' => 'Windows 2000',
'Windows 2000' => 'Windows 2000',
'Windows CE' => 'Windows Mobile',
'Win 9x 4.90' => 'Windows Me.',
'Windows 98' => 'Windows 98',
'Windows 95' => 'Windows 95',
'Win95' => 'Windows 95',
'Windows NT' => 'Windows NT',
// -- Linux
'Ubuntu' => 'Linux Ubuntu',
'Fedora' => 'Linux Fedora',
'Linux' => 'Linux',
// -- Mac
'Macintosh' => 'Mac',
'Mac OS X' => 'Mac OS X',
'Mac_PowerPC' => 'Mac OS X',
// -- Autres ...
'FreeBSD' => 'FreeBSD',
'Unix' => 'Unix',
'Playstation portable' => 'PSP',
'OpenSolaris' => 'SunOS',
'SunOS' => 'SunOS',
'Nintendo Wii' => 'Nintendo Wii',
'Mac' => 'Mac',
);
$ua = strtolower( $ua );
foreach( $os_arr as $k => $v )
{
if( ereg( strtolower( $k ), $ua ) )
{
$os = $v;
break;
}
}
return $os;
}
//-- Exemple d'utilisation :
echo getOS( $_SERVER['HTTP_USER_AGENT'] );
?>
Cependant, j'obtiens cela :
Deprecated: Function ereg() is deprecated in C:\Program Files (x86)\EasyPHP-5.3.3\www\accueil.php on line 71
Windows Seven
Le code est fonctionnel car il retourne bien l'OS (Windows Seven)
Mais la phrase : Deprecated: Function ereg() is deprecated... est gênante.
J'ai fais des recherche et je sais qu'il faut remplacer la fonction ereg par preg_match mais je n'arrive plus à faire fonctionner le code avec cette nouvelle fonction.
Merci par avance pour votre aide
Je possède le code PHP suivant qui me renvoie le système d'exploitation utilisé par l'internaute qui accède à mon site web.
<?php
/*******************************************************
* Fonction : getOs
*----------------------------------------------
* @Desc : Retourne le nom de l'os grâce à l'user agent
* @Param : $ua (str) : l'user agent dont on veux trouver l'os
* @Return : (str) le nom de l'os trouvé sinon "Système d'exploitation inconnu"
* @licence : https://opensource.org/licenses/lgpl-license.php GNU LGPL
*********************************************************/
function getOS( $ua = '' )
{
if( ! $ua ) $ua = $_SERVER['HTTP_USER_AGENT'];
$os = 'Système d'exploitation inconnu';
$os_arr = Array(
// -- Windows
'Windows NT 6.1' => 'Windows Seven',
'Windows NT 6.0' => 'Windows Vista',
'Windows NT 5.2' => 'Windows Server 2003',
'Windows NT 5.1' => 'Windows XP',
'Windows NT 5.0' => 'Windows 2000',
'Windows 2000' => 'Windows 2000',
'Windows CE' => 'Windows Mobile',
'Win 9x 4.90' => 'Windows Me.',
'Windows 98' => 'Windows 98',
'Windows 95' => 'Windows 95',
'Win95' => 'Windows 95',
'Windows NT' => 'Windows NT',
// -- Linux
'Ubuntu' => 'Linux Ubuntu',
'Fedora' => 'Linux Fedora',
'Linux' => 'Linux',
// -- Mac
'Macintosh' => 'Mac',
'Mac OS X' => 'Mac OS X',
'Mac_PowerPC' => 'Mac OS X',
// -- Autres ...
'FreeBSD' => 'FreeBSD',
'Unix' => 'Unix',
'Playstation portable' => 'PSP',
'OpenSolaris' => 'SunOS',
'SunOS' => 'SunOS',
'Nintendo Wii' => 'Nintendo Wii',
'Mac' => 'Mac',
);
$ua = strtolower( $ua );
foreach( $os_arr as $k => $v )
{
if( ereg( strtolower( $k ), $ua ) )
{
$os = $v;
break;
}
}
return $os;
}
//-- Exemple d'utilisation :
echo getOS( $_SERVER['HTTP_USER_AGENT'] );
?>
Cependant, j'obtiens cela :
Deprecated: Function ereg() is deprecated in C:\Program Files (x86)\EasyPHP-5.3.3\www\accueil.php on line 71
Windows Seven
Le code est fonctionnel car il retourne bien l'OS (Windows Seven)
Mais la phrase : Deprecated: Function ereg() is deprecated... est gênante.
J'ai fais des recherche et je sais qu'il faut remplacer la fonction ereg par preg_match mais je n'arrive plus à faire fonctionner le code avec cette nouvelle fonction.
Merci par avance pour votre aide
A voir également:
- PHP système d'exploitation
- Restauration systeme windows 10 - Guide
- Vérificateur des fichiers système - Guide
- Comment connaitre son système d'exploitation - Guide
- Easy php - Télécharger - Divers Web & Internet
- Vous avez besoin d'une autorisation de la part de système pour modifier ce dossier - Guide
2 réponses
Oui preg_match ne s'utilise pas de la même façon que ereg.
https://www.php.net/manual/fr/function.preg-match.php
Dans ton cas essaye :
https://www.php.net/manual/fr/function.preg-match.php
Dans ton cas essaye :
if( preg_match("#".$k."#i", $ua ) )Le i veut dire que que tu n'est pas sensible à la casse.