PHP, 22 octets
`<?=PATH_SEPARATOR>":";`
Imprime 1
si le séparateur de chemin est un point-virgule (deux points ou vide pour tous les autres systèmes d’exploitation à l'exception de DOS et OS / 2), sinon rien.
également 22 octets , mais pas si sûr:
<?=strpos(__FILE__,92);
affiche un entier positif si le chemin du fichier contient une barre oblique inverse; sinon rien.
Une alternative sûre avec 27 octets : <?=DIRECTORY_SEPARATOR>"/";
impressions 1
ou rien.
Une découverte étrange : <?=__FILE__[1]==":";
( 20 octets ) devrait être, pas sûr non plus, mais ok. Mais bien que __FILE__
prétende être une chaîne (j'ai essayé var_dump
et gettype
), l'indexation génère une erreur, à moins que vous ne la copiiez ailleurs (la concaténation fonctionne également) ou que vous l'utilisiez comme paramètre de fonction.
Edit:
<?=(__FILE__)[1]==":";
(également 22 octets ) fonctionne en PHP 7; mais c’est parce que les parenthèses copient la valeur de la constante dans une variable temporaire.
27 octets : <?=stripos(PHP_OS,win)===0;
teste si la PHP_OS
constante prédéfinie commence par win
(insensible à la casse; Windows, WIN32, WINNT, mais pas CYGWIN ni Darwin); imprime 1
pour Windows, sinon rien.
17/18 octets :
<?=strlen("
")-1;
imprime 1
s'il a été stocké avec le saut de ligne Windows (également sous DOS, OS / 2 et Atari TOS - bien que je doute que quiconque ait déjà compilé PHP pour TOS), sinon 0
.
Vous pouvez également vérifier la constante PHP_EOL
.
plus d'options:
PHP_SHLIB_SUFFIX
est dll
sur Windows, mais pas nécessairement seulement là.
php_uname()
renvoie des informations sur le système d'exploitation et plus encore; commence par Windows
pour Windows.
$_SERVER['HTTP_USER_AGENT']
contiendra Windows
lorsqu’il sera appelé dans un navigateur sous Windows.
<?=defined(PHP_WINDOWS_VERSION_BUILD);
(38 octets) fonctionne en PHP> = 5.3
conclusion
Le seul moyen sûr de savoir s’il s’agit bien de Windows, ce qui ne ressemble à rien, semble être une vérification du nom du système d’exploitation. Pour PHP: php_os()
peut être désactivé pour des raisons de sécurité; mais PHP_OS
contiendra probablement toujours les informations souhaitées.