Tuesday, August 14, 2012

$_SERVER PHP


$HTTP_SERVER_VAR[deprecated]
SERVER နဲ႔ ပတ္သက္တဲ႔ တြက္ခ်က္မွဳေတြအေၾကာင္းေပါ႔
$_SERVER ဆိုတာကေတာ႔ headers,paths နဲ႔ script locations ေတြလို information ေတြပါ၀င္တဲ႔ array တစ္ခုပါ
Web Server ကဖန္တီးတဲ႔ array တစ္ခုလည္းျဖစ္ပါတယ္.Web Server တိုင္းမွာေတာ႔ ဒါကို run လို႔ အဆင္ေျပမယ္႔လို႔ေတာ႔အာမမခံပါဘူး
ဒါေပမယ္႔ေတာ္ေတာ္မ်ားမ်ားမွာေတာ႔ ok ပါတယ္ :)
ေအာက္မွာကေတာ႔ $_SERVER နဲ႔ သက္ဆိုင္တဲ႔ information ေတြပါ

1. 'PHP_SELF'
သူကေတာ႔ လက္ရွိ ကၽြန္ေတာ္တို႔ေရးထားတဲ႔ ဖိုင္ နာမည္ပါ document root နဲ႔လည္းဆက္စပ္မွဳရွိပါတယ္
နမူနာေျပာရရင္ script ထဲ႔မွာေရးထားတဲ႔ $_SERVER['PHP_SELF'] ရဲ႕ address ကေတာ႔ http://localhost/server.php
ကၽြန္ေတာ္ေရးထားတဲ႔ script file က server.php ပါ
Output is => server.php

2. 'GATEWAY_INTERFACE'
သူကေတာ႔ လက္ရွိကၽြန္ေတာ္တို႔သံုးေနတဲ႔ server ရဲ႕ CGI အမ်ိဳးစား ဘာလဲဆိုတာကိုျပေပးတာပါ
အသံုးျပဳပံု
<?php
    echo $_SERVER['GATEWAY_INTERFACE'];
?>
output => CGI/1.1

3.'SERVER_ADDR'
သူကေတာ႔ SERVER ေအာက္မွာ run ေနတဲ႔ script ရဲ႕ ip address ပါ
ကၽြန္ေတာ္သံုးတဲ႔ စက္မွာေတာ႔ Output => ::1 ပါ

4. 'SERVER_NAME'
သူကေတာ႔  လက္ရွိ ကၽြန္ေတာ္တို႔ execute လုပ္ေနတဲ႔ script ရဲ႕ server host ရဲ႕ နာမည္ပါ
တစ္ကယ္လို႔ virtual host မွာ run တယ္ဆိုရင္ေတာ႔ virtual host မွာ သတ္မွတ္ထားတဲ႔ host name ေပၚမွာပါ
Output => localhost

5. 'SERVER_SOFTWARE'
သူကေတာ႔ SERVER ရဲ႕ identification string ပါ request လုပ္တဲ႔အခါ ေပးထားတဲ႔ ့header ထဲ႔မွာ response လုပ္ေဆာင္ဖို႔ပါ
Output of my machine => Apache/2.4.2 (Win32) OpenSSL/1.0.1c PHP/5.4.0 :)

6. 'SERVER_PROTOCOL'
သူကေတာ႔ ကၽြန္ေတာ္တို႔ script က request လုပ္တဲ႔ protocol information ရဲ႕ name ပါ
Output => HTTP/1.1

7. 'REQUEST_METHOD'
သူကေတာ႔ ကၽြန္ေတာ္တို႔ page က ဘယ္ method ကိုသံုးျပီး request လုပ္မယ္ဆိုတာကို ေျပာတာပါ
ဥပမာ GET,HEAD,POST,PUT
မွတ္ခ်က္ တစ္ကယ္လို႔ request method က HEAD ျဖစ္မယ္ဆိုရင္ header ကို sending လုပ္ျပီးတဲ႔အခါမွာေတာ႔ PHP script က terminate ျဖစ္သြားမွာပါ
Output => GET

8. 'REQUEST_TIME'
သူကေတာ႔ request ကို စတင္လိုက္တဲ႔ အခ်ိန္ကိုေဖာ္ျပတာပါ PHP 5.1.0 အထက္မွာပဲ႔အဆင္ေျပပါတယ္
ကၽြန္ေတာ္စက္မွာေတာ႔ version 5.4.0 ဆိုေတာ႔
Output => 1344870357  it timestamp :)

9. 'REQUEST_TIME_FLOAT'
 နံပါတ္ 8 နဲ႔ တူပါတယ္ သူမွာေတာ႔ တိက်တဲ႔ microsecond ပါေဖာ္ျပေပးပါတယ္
 PHP version 5.4.0 မွာသာအလုပ္လုပ္ပါတယ္
 Output => 1344870524.401

 10. 'QUERY_STRING'
 သူကေတာ႔ ကၽြန္ေတာ္တို႔ access လုပ္ခဲ႔တဲ႔ query string ပဲ႔ျဖစ္ပါတယ္
 Output ကေတာ႔ query မသံုးထားတဲ႔အတြက္ေၾကာင္႔ empty ပါဟီး

 11. 'DOCUMENT_ROOT'
 သူကေတာ႔ ကၽြန္ေတာ္တို႔ script ရဲ႕ root directory document ပဲ႔ျဖစ္ပါတယ္
 server config file မွာသတ္မွတ္ထားတဲ႔ လမ္းေၾကာင္းပါ
 Output => D:/xampp/htdocs       ကၽြန္ေတာ္က server confiig ကို D မွာ install လုပ္ထားလို႔ပါ

 12. 'HTTP_ACCEPT'
 သူကေတာ႔ လက္ရွိ request လုပ္တဲ႔ header က Accept ရဲ႕ အေၾကာင္းအရာေတြပါ
 Output is => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

 13. 'HTTP_ACCEPT_CHARSET'
 12 နဲ႔ တူပါတယ္ charset ပဲ႔ပိုသြားတာပါ
 Output is => UTF-8,*;q=0.5

 14. 'HTTP_ACCEPT_ENCODING'
 သူကေတာ႔ လက္ရွိ request လုပ္တဲ႔ header ရဲ႕ Accept-Encoding ရဲ႕ အေၾကာင္းရာေတြပါပါတယ္
 Output => gzip,deflate,sdch
 
 15. 'HTTP_ACCEPT_LANGUAGE'
 သူကေတာ႔ လက္ရွိ request လုပ္တဲ႔ header ရဲ႕ Accept-Language ရဲ႕ အေၾကာင္းရာေတြပါပါတယ္
 Output => en-US,en;q=0.8,yi;q=0.6
 
 16. 'HTTP_CONNECTION'
လက္ရွိ request လုပ္တဲ႔ header ရဲ႕ Connection ရဲ႕ အေၾကာင္းရာေတြပါပါတယ္
Output => keep-alive

17. 'HTTP_HOST'
သူကေတာ႔ SERVER_NAME နဲ႔တူပါတယ္ လက္ရွိ request လုပ္တဲ႔ header ရဲ႕ Host ရဲ႕ အေၾကာင္းရာေတြပါပါတယ္
Output => localhost

18. 'HTTP_REFERER'
သူကေတာ႔ user agent က referred လုပ္တဲ႔ လက္ရွိ page ရဲ႕ address ပါ
ကၽြန္ေတာ္စက္မွာေတာ႔အလုပ္မလုပ္ပါဘူး
တစ္ကယ္လို႔ output ထြက္ရင္ေတာ႔ ဒီလိုပါ
http://localhost/server.php

19.'HTTP_USER_AGENT'
လက္ရွိ request လုပ္တဲ႔ header ရဲ႕ User-Agent ရဲ႕ အေၾကာင္းရာေတြပါပါတယ္
user agent က access လုပ္တဲ႔ page ရဲ ႔ အညႊန္း string တစ္ခုလည္းျဖစ္ပါတယ္
Output => Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1068.1 Safari/536.3

20. 'HTTPS'
တစ္ကယ္လို႔ script က HTTPS protocol ေပၚမွာ query လုပ္မယ္ဆုိရင္ non-empty value ကို set လုပ္ပါတယ္
IIS နဲ႔ ISAPI အသံုးျပဳမယ္ဆိုရင္ request က HTTPS protocol ေပၚမွာ မလုပ္ဘူးဆိုရင္ ဒီ value က OFF ျဖစ္သြားပါလိမ္႔မယ္

21. 'REMOTE_ADDR'
သူကေတာ႔ လက္ရွိ ၾကည္႔ေနတဲ႔ user ရဲ႕ IP address ကိုေဖာ္ျပေပးမွာပါ
Output => ::1

22. 'REMOTE_HOST'
သူကေတာ႔ လက္ရွိ page ကို ၾကည္႔ေနတဲ႔ user ရဲ႕ host name ကိိုေဖာ္ျပေပးပါတယ္
Output => Error တက္တုန္း မစမ္းရေသးဘူး

23. 'REMOTE_PORT'
သူကေတာ႔ user ရဲ႕ စက္နဲ႔ web server ကို communicate ျဖစ္ေအာင္လုပ္ေပးတဲ႔ အသံုးျပဳထားတဲ႔ port ကိုေဖာ္ျပေပးတာပါ
Output => 49209 ကၽြန္ေတာ္သံုးတဲ႔ port ပါ ဟီး

24.'REMOTE_USER'
The authenticated user. တိဘူးဟီး

25. 'REDIRECT_REMOTE_USER'
The authenticated user if the request is internally redirected. ဒါလည္းတိေသးဘူး

26. 'SCRIPT_FILENAME'
သူကေတာ႔လက္ရွိ ကၽြန္ေတာ္တို႔ script ရဲ႕ တိက်တဲ႔လမ္းေၾကာင္းအျပည္႔စံုပါ
Output => D:/xampp/htdocs/server.php

27. 'SERVER_ADMIN'
web server configuration file ထဲ႔မွာ SERVER_ADMIN ကိုေပးထားတဲ႔ တန္ဖိုးပါ
တစ္ကယ္လို႔ server က virtual host မွာ run ေနတယ္ဆိုရင္ virtual host က သတ္မွတ္ထားတဲ႔ တန္ဖိုးကိုျပေပးမွာပါ
Output => postmaster@localhost

28.'SERVER_PORT'
သူကေတာ႔ web server က communication လုပ္ဖို႔ အတြက္ server စက္ရဲ႕ အသံုးျပဳတဲ႔ port ပါ
default setup ကေတာ႔ 80 ပဲ႔ျဖစ္ပါတယ္
Output => 80

29.'SERVER_SIGNATURE'
သူကေတာ႔ server version နဲ႔  virtual host ပါ၀င္တဲ႔ string ျဖစ္ပါတယ္
Output => Apache/2.4.2 (Win32) OpenSSL/1.0.1c PHP/5.4.0 Server at localhost Port 80

30. 'PATH_TRANSLATED'
လက္ရွိ script ရဲ႕ Filesystem ရဲ႕ based path ပါ

31. 'SCRIPT_NAME'
လက္ရွိ script ရဲ႕ လမ္းေၾကာင္းကိုျပေပးမွာပါ PHP developer ေတြအသံုးမ်ားပါတယ္
Output => /server.php

32. 'REQUEST_URI'
31 နဲ႔ဆင္ပါတယ္
Output =>/server.php

33.'PHP_AUTH_DIGEST'
When doing Digest HTTP authentication this variable is set to the 'Authorization' header sent by the client
မသံုးဖူးေသးဘူး

34. 'PHP_AUTH_USER'
HTTP autheriticated လုပ္တဲ႔အခါ ဒီ variable ကို user က သတ္မွတ္တဲ႔ username အျဖစ္ထားပါတယ္

35. 'PHP_AUTH_PW
 HTTP autheriticated လုပ္တဲ႔အခါ ဒီ variable ကို user သတ္မွတ္ထားတဲ႔ password အျဖစ္ထားပါတယ္

36. 'AUTH_TYPE'
HTTP autheriticated လုပ္တဲ႔အခါ ဒီ variable ကို autherntication type အျဖစ္ထားပါတယ္

37.'PATH_INFO'
Client ကသတ္မွတ္ထားတဲ႔ path name information ေတြပါ၀င္ပါတယ္
ကၽြန္ေတာ္တို႔ script က ဒီလိုဆိုပါစို႔
http://localhost/server.php/server/stuff?foo=bar , ဒီေတာ႔ $_SERVER['PATH_INFO'] က server/stuff ျဖစ္သြားမွာေပါ႔

38.'ORIG_PATH_INFO'
PHP process မလုပ္ခင္က PATH_INFO ရဲ႕ Original Version ပါ

အေပၚက $_SERVER ကိုပိုျပီးသိခ်င္ရင္ေတာ႔
<?php
print_r($_SERVER);
?>

Thanks for Reading
Written by cyberoot1@gmail.com

No comments:

Post a Comment

Thanks for your comments
Welcome from cyberoot