PHP, 22 बाइट्स
`<?=PATH_SEPARATOR>":";`
प्रिंट 1
यदि पथ विभाजक अर्धविराम (डीओएस और ओएस / 2 को छोड़कर अन्य सभी ओएस के लिए कोलन या खाली है), और कुछ नहीं।
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
(केस असंवेदनशील; विंडोज, Win32, WINNT, लेकिन CYGWIN या डार्विन नहीं); 1
विंडोज के लिए प्रिंट , और कुछ नहीं।
17/18 बाइट्स :
<?=strlen("
")-1;
प्रिंट 1
यह विंडोज LINEBREAK साथ जमा हो गया था, तो (भी डॉस पर, ओएस / 2 और अटारी TOS - हालांकि मुझे लगता है कि TOS के लिए क्या कभी किसी ने संकलित पीएचपी शक) और,0
।
आप स्थिरांक भी देख सकते हैं PHP_EOL
।
अधिक विकल्प:
PHP_SHLIB_SUFFIX
है dll
विंडोज पर, लेकिन जरूरी नहीं कि केवल वहाँ नहीं।
php_uname()
ऑपरेटिंग सिस्टम और अधिक पर जानकारी देता है; Windows
विंडोज के साथ शुरू होता है । जब विंडोज पर एक ब्राउज़र में बुलाया
$_SERVER['HTTP_USER_AGENT']
जाएगा Windows
।
<?=defined(PHP_WINDOWS_VERSION_BUILD);
(38 बाइट्स) PHP> = 5.3 में काम करता है
निष्कर्ष
यह बताने का एकमात्र विफल तरीका है कि क्या यह वास्तव में विंडोज है, ऐसा कुछ भी नहीं दिख रहा है, यह ओएस नाम पर एक चेक लगता है। PHP के लिए: php_os()
सुरक्षा कारणों से अक्षम किया जा सकता है; लेकिन PHP_OS
संभवतः हमेशा वांछित जानकारी होगी।