PHP, 22 bajty
`<?=PATH_SEPARATOR>":";`
wypisuje, 1
jeśli separator ścieżek jest średnikiem (dwukropek lub pusty dla wszystkich innych systemów operacyjnych oprócz DOS i OS / 2), w przeciwnym razie nic.
także 22 bajty , ale nie tak bezpieczne:
<?=strpos(__FILE__,92);
wypisuje dodatnią liczbę całkowitą, jeśli ścieżka do pliku zawiera ukośnik odwrotny; inaczej nic.
Bezpieczna alternatywa z 27 bajtami : <?=DIRECTORY_SEPARATOR>"/";
odbitki 1
lub nic.
Dziwne znalezisko : <?=__FILE__[1]==":";
( 20 bajtów ) również nie powinno być bezpieczne, ale jest w porządku. Ale chociaż __FILE__
udaje, że jest łańcuchem (próbowałem var_dump
i gettype
), indeksowanie generuje błąd, chyba że skopiujesz go gdzie indziej (konkatenacja również działa) lub użyjesz go jako parametru funkcji.
Edycja:
<?=(__FILE__)[1]==":";
(także 22 bajty ) działa w PHP 7; ale to dlatego, że nawiasy kopiują wartość stałej do zmiennej tymczasowej.
27 bajtów : <?=stripos(PHP_OS,win)===0;
sprawdza, czy wstępnie zdefiniowana PHP_OS
stała zaczyna się od win
(bez rozróżniania wielkości liter; Windows, WIN32, WINNT, ale nie CYGWIN lub Darwin); drukuje 1
dla Windows, w przeciwnym razie nic.
17/18 bajtów :
<?=strlen("
")-1;
wypisuje, 1
jeśli był przechowywany z łamaniem linii systemu Windows (także na DOS, OS / 2 i Atari TOS - chociaż wątpię, aby ktokolwiek kiedykolwiek skompilował PHP dla TOS), inaczej 0
.
Możesz także sprawdzić stałą PHP_EOL
.
więcej opcji:
PHP_SHLIB_SUFFIX
jest dll
w systemie Windows, ale niekoniecznie tylko tam.
php_uname()
zwraca informacje o systemie operacyjnym i nie tylko; zaczyna się Windows
na Windows.
$_SERVER['HTTP_USER_AGENT']
będzie zawierać Windows
po wywołaniu w przeglądarce w systemie Windows.
<?=defined(PHP_WINDOWS_VERSION_BUILD);
(38 bajtów) działa w PHP> = 5.3
wniosek
Jedyny niezawodny sposób stwierdzenia, czy to naprawdę Windows, a nie coś takiego, wygląda na sprawdzenie nazwy systemu operacyjnego. Dla PHP: php_os()
może być wyłączone ze względów bezpieczeństwa; ale PHP_OS
prawdopodobnie zawsze będzie zawierać pożądane informacje.