① php怎麼獲取系統信息和伺服器詳細信息
獲取系統類型及版本號: php_uname() (例:Windows NT COMPUTER 5.1 build 2600)
只獲取系統類型: php_uname('s') (或:PHP_OS,例:Windows NT)
只獲取系統版本號: php_uname('r') (例:5.1)
獲取PHP運行方式: php_sapi_name() (PHP run mode:apache2handler)
獲取前進程用戶名: Get_Current_User()
獲取PHP版本: PHP_VERSION
獲取Zend版本: Zend_Version()
獲取PHP安裝路徑: DEFAULT_INCLUDE_PATH
獲取當前文件絕對路徑: __FILE__
獲取Http請求中Host值: $_SERVER["HTTP_HOST"] (返回值為域名或IP)
獲取伺服器IP: GetHostByName($_SERVER['SERVER_NAME'])
接受請求的伺服器IP: $_SERVER["SERVER_ADDR"] (有時候獲取不到,推薦用:GetHostByName($_SERVER['SERVER_NAME']))
獲取客戶端IP: $_SERVER['REMOTE_ADDR']
獲取伺服器解譯引擎: $_SERVER['SERVER_SOFTWARE']
獲取伺服器CPU數量: $_SERVER['PROCESSOR_IDENTIFIER']
獲取伺服器系統目錄: $_SERVER['SystemRoot']
獲取伺服器域名: $_SERVER['SERVER_NAME'] (建議使用:$_SERVER["HTTP_HOST"])
獲取用戶域名: $_SERVER['USERDOMAIN']
獲取伺服器語言: $_SERVER['HTTP_ACCEPT_LANGUAGE']
獲取伺服器Web埠: $_SERVER['SERVER_PORT']
訪問用戶的瀏覽器信息: $_SERVER['HTTP_USER_AGENT'];
<script language="JavaScript">
document.write("瀏覽器名稱: "+navigator.appName+"<br>");
document.write("瀏覽器版本號: "+navigator.appVersion+"<br>");
document.write("系統語言: "+navigator.systemLanguage+"<br>");
document.write("系統平台: "+navigator.platform+"<br>");
document.write("瀏覽器是否支持cookie: "+navigator.cookieEnabled+"<br>");
</script>
② jsp中request.getHeader()獲取客戶端的各種信息,那php中什麼方法來獲取
伺服器變數 $_SERVER 詳解:
1、$_SESSION['PHP_SELF'] -- 獲取當前正在執行腳本的文件名
2、$_SERVER['SERVER_PROTOCOL'] -- 請求頁面時通信協議的名稱和版本。例如,「HTTP/1.0」。
3、$_SERVER['REQUEST_TIME'] -- 請求開始時的時間戳。從 PHP 5.1.0 起有效。和time函數效果一樣。
4、$_SERVER['argv'] -- 傳遞給該腳本的參數。我試了下,get方法可以得到$_SERVER['argv'][0];post方法無法給他賦值。
5、$_SERVER['SERVER_NAME'] -- 返回當前主機名。
6、$_SERVER['SERVER_SOFTWARE'] -- 伺服器標識的字串,在響應請求時的頭信息中給出。 如Microsoft-IIS/6.0
7、$_SERVER['REQUEST_METHOD'] -- 訪問頁面時的請求方法。例如:「GET」、「HEAD」,「POST」,「PUT」。
8、$_SERVER['QUERY_STRING'] -- 查詢(query)的字元串(URL 中第一個問號 ? 之後的內容)。
9、$_SERVER['DOCUMENT_ROOT'] -- 當前運行腳本所在的文檔根目錄。在伺服器配置文件中定義。 如E:\server
10、$_SERVER['HTTP_ACCEPT'] -- 當前請求的 Accept: 頭信息的內容。
11、$_SERVER['HTTP_ACCEPT_CHARSET'] -- 當前請求的 Accept-Charset: 頭信息的內容。例如:「iso-8859-1,*,utf-8」。
12、$_SERVER['HTTP_ACCEPT_ENCODING'] -- 當前請求的 Accept-Encoding: 頭信息的內容。例如:「gzip」。
13、$_SERVER['HTTP_ACCEPT_LANGUAGE'] -- 當前請求的 Accept-Language: 頭信息的內容。例如:「en」。
14、$_SERVER['HTTP_CONNECTION'] -- 當前請求的 Connection: 頭信息的內容。例如:「Keep-Alive」。
15、$_SERVER['HTTP_HOST'] -- 當前請求的 Host: 頭信息的內容。
16、$_SERVER['HTTP_REFERER'] -- 鏈接到當前頁面的前一頁面的 URL 地址。
17、$_SERVER['HTTP_USER_AGENT'] -- 返回用戶使用的瀏覽器信息。也可以使用 get_browser() 得到此信息。
18、$_SERVER['HTTPS'] -- 如果通過https訪問,則被設為一個非空的值,否則返回off.
19、$_SERVER['REMOTE_ADDR'] -- 正在瀏覽當前頁面用戶的 IP 地址。
20、$_SERVER['REMOTE_HOST'] -- 正在瀏覽當前頁面用戶的主機名。反向域名解析基於該用戶的 REMOTE_ADDR。如本地測試返回127.0.0.1
21、$_SERVER['REMOTE_PORT'] -- 用戶連接到伺服器時所使用的埠。我在本機測試沒通過,不知道什麼原因。
22、$_SERVER['SCRIPT_FILENAME'] -- 當前執行腳本的絕對路徑名。如返回E:\server\index.php
23、$_SERVER['SERVER_ADMIN'] -- 該值指明了 Apache 伺服器配置文件中的 SERVER_ADMIN 參數。如果腳本運行在一個虛擬主機上,則該值是那個虛擬主機的值
24、$_SERVER['SERVER_PORT'] -- 伺服器所使用的埠。默認為「80」。如果使用 SSL 安全連接,則這個值為用戶設置的 HTTP 埠。
25、$_SERVER['SERVER_SIGNATURE'] -- 包含伺服器版本和虛擬主機名的字元串。
26、$_SERVER['PATH_TRANSLATED'] -- 當前腳本所在文件系統(不是文檔根目錄)的基本路徑。這是在伺服器進行虛擬到真實路徑的映像後的結果。 Apache 2 用 戶可以使用 httpd.conf 中的 AcceptPathInfo On 來定義 PATH_INFO。
27、$_SERVER['SCRIPT_NAME'] -- 包含當前腳本的路徑。這在頁面需要指向自己時非常有用。__FILE__ 包含當前文件的絕對路徑和文件名(例如包含文件)。
28、$_SERVER['REQUEST_URI'] -- 訪問此頁面所需的 URI。例如,「/index.html」。
29、$_SERVER['PHP_AUTH_DIGEST'] -- 當作為 Apache 模塊運行時,進行 HTTP Digest 認證的過程中,此變數被設置成客戶端發送的「Authorization」HTTP 頭內容(以便作進一步的認證操作)。
30、$_SERVER['PHP_AUTH_USER']-- 當 PHP 運行在 Apache 或 IIS(PHP 5 是 ISAPI)模塊方式下,並且正在使用 HTTP 認證功能,這個變數便是用戶輸入的用戶名。
31、$_SERVER['PHP_AUTH_PW'] -- 當 PHP 運行在 Apache 或 IIS(PHP 5 是 ISAPI)模塊方式下,並且正在使用 HTTP 認證功能,這個變數便是用戶輸入的密碼。
32、$_SERVER['AUTH_TYPE']--當 PHP 運行在 Apache 模塊方式下,並且正在使用 HTTP 認證功能,這個變數便是認證的類型。
③ 如何獲取PHP客戶端及伺服器端IP了
客戶端的ip變數:
$_SERVER['REMOTE_ADDR'] :客戶端IP,也有可能是代理IP
$_SERVER['HTTP_CLIENT_IP']:代理端的IP,可能存在,也可能偽造
$_SERVER['HTTP_X_FORWARD_FOR'] :用戶在哪個ip上使用的id,可能存在,也可能偽造
服務端的ip變數:
$_SERVER['SERVER_NAME'] :需要使用函數gethostname()來獲得,這個無論是伺服器端還是客戶端都能正常顯示。
$_SERVER['SERVER_ADDR']:伺服器端的ip地址,在伺服器端測試ip地址,在客戶端測試正常
getnev 獲得系統的環境變數:
④ php 如何獲取 客戶端http header
<?php
$dir=$HTTP_GET_VARS["dir"];//.......取得上個頁面傳遞來的路徑
$file=$HTTP_GET_VARS["file"];//.......取得傳遞來的文件名
$url=parse_url($HTTP_REFERER);/*......取得前一頁面的URL地址,並將其放入一個數組中*/
if($url[host]!=$HTTP_HOST){echo"要下載本軟體請到<ahref=http://www.df365.org>東方小屋</a>";exit;}/*檢查來源網站是不是自己的網站,如果不是,返回「要下載本……」*/
if(empty($dir))$dir="/";//......如果路徑名為空,則為指定根目錄
if(empty($file)){echo"未指定要下載的文件!";exit;}/*如果文件名為空,返回「未指定……」*/
$rootdir="文件存放的根目錄";//......你的下載路徑根目錄
$realurl=$rootdir.$dir;//.......取得你的下載目錄
chdir($realurl);//......將當前目錄轉到下載目錄中
if(!file_exists($file)){echo"對不起,此鏈接已經失效,請在下載頁面上向我們報告,謝謝!";exit;}//......測試文件是否存在
$filename=$file;
//發送文件頭信息
header("Cache-control:private");//fixforIE
header("Content-Type:application/octet-stream");
header("Content-Length:".filesize($filename));
header("Content-Disposition:attachment;filename=$filename");
$fp=fopen($filename,'r');//以讀取方式打開指定文件
fpassthru($fp);//**CORRECT**以二進制方式讀取文件
fclose($fp);//關閉文件
?>
⑤ php 如何獲取客戶端唯一標識
標識一個客戶端:
首先服務端就排除了,因為可以用多個用戶登錄。
然後看客戶端有什麼辦法,只能是採用客戶端存儲的方式
1、cookie 這個你排除了,可能是因為清除cookie比較容易操作。但這也是一種辦法。
2、客戶端的dom存儲,這個有一定的局限,只有新的瀏覽器支持。而且同樣可以刪除。
3、插件方式,這個需要客戶安裝,一般不可能,但可以利用比較流行的安裝率比較高的插件,例如flash,採用flash的本地存儲記錄。同樣可以刪除。
綜上,不可能完全的防止,但可以採用幾種技術的結合,這樣可以增加重復發布的難度。
但是還是那句話,是否重復發表信息是由用戶決定的。如果用戶認為重復發布的成本高於了解除這個限制的成本,那麼也就降低了用戶重復發布的幾率。
這個沒有完美的解決方案,只能是盡力。
⑥ php用socket獲得客戶端的ip和埠
socket_getpeername() 獲取遠程類似主機的ip地址
socket_getsockname() 獲取本地socket的ip地址
怎麼感覺你用的實際上是對的,難道用nginx一類的負載均衡伺服器了
⑦ php怎麼獲取手機客戶端ip
php獲取客戶端ip地址方法總結
用php獲取客戶端ip地址的方法,具體代碼如下:
?php
$iipp=$_server["remote_addr"];
echo
$iipp;
?
///////////////////////////////////////////////
?php
$user_ip
=
($_server["http_via"])
?
$_server["http_x_forwarded_for"]
:
$_server["remote_addr"];
$user_ip
=
($user_ip)
?
$user_ip
:
$_server["remote_addr"];
echo
$user_ip;
?
///////////////////////////////////////////////
?php
function
get_real_ip(){
$ip=false;
if(!empty($_server["http_client_ip"])){
$ip
=
$_server["http_client_ip"];
}
if
(!empty($_server['http_x_forwarded_for']))
{
$ips
=
explode
(",
",
$_server['http_x_forwarded_for']);
if
($ip)
{
array_unshift($ips,
$ip);
$ip
=
false;
}
for
($i
=
0;
$i
<
count($ips);
$i++)
{
if
(!eregi
("^(10|172.16|192.168).",
$ips[$i]))
{
$ip
=
$ips[$i];
break;
}
}
}
return
($ip
?
$ip
:
$_server['remote_addr']);
}
echo
get_real_ip();
?
///////////////////////////////////////////////
php獲取ip的演算法:
?php
if
($http_server_vars["http_x_forwarded_for"])
{
$ip
=
$http_server_vars["http_x_forwarded_for"];
}
elseif
($http_server_vars["http_client_ip"])
{
$ip
=
$http_server_vars["http_client_ip"];
}
elseif
($http_server_vars["remote_addr"])
{
$ip
=
$http_server_vars["remote_addr"];
}
elseif
(getenv("http_x_forwarded_for"))
{
$ip
=
getenv("http_x_forwarded_for");
}
elseif
(getenv("http_client_ip"))
{
$ip
=
getenv("http_client_ip");
}
elseif
(getenv("remote_addr"))
{
$ip
=
getenv("remote_addr");
}
else
{
$ip
=
"unknown";
}
echo
"你的ip:".$ip
;
?
///////////////////////////////////////////////
?php
if(getenv('http_client_ip'))
{
$onlineip
=
getenv('http_client_ip');
}
elseif(getenv('http_x_forwarded_for'))
{
$onlineip
=
getenv('http_x_forwarded_for');
}
elseif(getenv('remote_addr'))
{
$onlineip
=
getenv('remote_addr');
}
else
{
$onlineip
=
$http_server_vars['remote_addr'];
}
echo
$onlineip;
?