PHP, 22 바이트
`<?=PATH_SEPARATOR>":";`
1
경로 구분 기호가 세미콜론 (DOS 및 OS / 2를 제외한 다른 모든 OS의 경우 콜론 또는 비어 있음) 인 경우 인쇄 합니다.
또한 22 바이트 이지만 안전하지는 않습니다.
<?=strpos(__FILE__,92);
파일 경로에 백 슬래시가 포함 된 경우 양의 정수를 인쇄합니다. 그 외에는 아무것도 없습니다. 27 바이트
의 안전한 대안 : 인쇄 또는 아무것도 없음.<?=DIRECTORY_SEPARATOR>"/";
1
이상한 발견 : <?=__FILE__[1]==":";
( 20 바이트 )도 안전하지 않지만 괜찮습니다. 그러나 __FILE__
문자열 인 것처럼 가장 하기는하지만 (내가 시도 var_dump
하고 gettype
) 인덱싱하면 다른 곳에서 복사하거나 (연결도 가능) 함수 매개 변수로 사용하지 않는 한 오류가 발생합니다.
편집 :
<?=(__FILE__)[1]==":";
(또한 22 바이트 ) PHP 7에서 작동합니다. 그러나 괄호는 상수 값을 임시 변수에 복사하기 때문입니다.
27 바이트 : <?=stripos(PHP_OS,win)===0;
미리 정의 된 PHP_OS
상수로 시작 하는지 테스트합니다 win
(대소 문자 구분, Windows, WIN32, WINNT, CYGWIN 또는 Darwin 제외). 1
Windows 용으로 인쇄 합니다.
17/18 바이트 :
<?=strlen("
")-1;
1
Windows 줄 바꿈으로 저장된 경우 인쇄 합니다 (DOS, OS / 2 및 Atari TOS에서도-TOS 용 PHP를 컴파일 한 사람은 의심 스럽습니다) 0
.
상수를 확인할 수도 있습니다 PHP_EOL
.
더 많은 옵션 :
PHP_SHLIB_SUFFIX
이다 dll
그러나 반드시 단지 거기, Windows에서.
php_uname()
운영 체제 등에 대한 정보를 반환합니다. Windows
Windows 용으로 시작합니다 . Windows의 브라우저에서 호출 될 때
$_SERVER['HTTP_USER_AGENT']
포함 Windows
됩니다.
<?=defined(PHP_WINDOWS_VERSION_BUILD);
(38 바이트)는 PHP> = 5.3에서 작동합니다
결론
실제로 Windows인지 아닌지 알 수있는 유일한 안전한 방법은 OS 이름을 확인하는 것 같습니다. PHP의 경우 : php_os()
보안상의 이유로 비활성화 될 수 있습니다. 그러나 PHP_OS
아마도 항상 원하는 정보를 포함 할 것입니다.