1. 用php寫出顯示客戶端IP與伺服器IP的代碼
伺服器IP用:
echo(gethostbyname($SERVER_NAME));
客戶端IP用下面函數:
function iptype1 () {
if (getenv("HTTP_CLIENT_IP")) {
return
getenv("HTTP_CLIENT_IP");
}
else {
return "none";
}
}
function iptype2 () {
if (getenv("HTTP_X_FORWARDED_FOR")) {
return getenv("HTTP_X_FORWARDED_FOR");
}
else {
return "none";
}
}
function iptype3 () {
if (getenv("REMOTE_ADDR")) {
return getenv("REMOTE_ADDR");
}
else {
return "none";
}
}
function ip() {
$ip1 = iptype1();
$ip2 = iptype2();
$ip3
= iptype3();
if (isset($ip1) && $ip1 != "none" && $ip1 !=
"unknown") {
return $ip1;
}
elseif (isset($ip2) && $ip2
!= "none" && $ip2 != "unknown") {
return $ip2;
}
elseif
(isset($ip3) && $ip3 != "none" && $ip3 != "unknown") {
return $ip3;
}
else {
return "none";
}
}
使用時,直接調用ip();
2. PHP中如何獲取伺服器IP
$_SERVER['SERVER_ADDR']獲取伺服器的IP地址
3. PHP代碼如何放行代理伺服器IP
<?php
//授權IP
$ips=['119.29.29.29','8.8.8.8'];
//代理IP直接退出
empty($_SERVER['HTTP_VIA'])orexit('AccessDenied');
//防止快速刷新
session_start();
$seconds='3';//時間段[秒]
$refresh='5';//刷新次數
//設置監控變數
$cur_time=time();
if(isset($_SESSION['last_time'])){
$_SESSION['refresh_times']+=1;
}else{
$_SESSION['refresh_times']=1;
$_SESSION['last_time']=$cur_time;
}
//處理監控結果
if($cur_time-$_SESSION['last_time']<$seconds){
if($_SESSION['refresh_times']>=$refresh&&!in_array($getIP,$ips)){
//跳轉至攻擊者伺服器地址
header(sprintf('Location:%s','
));
exit('AccessDenied');
}
}else{
$_SESSION['refresh_times']=0;
$_SESSION['last_time']=$cur_time;
}
functiongetIP(){
if(getenv('HTTP_CLIENT_IP')){
$ip=getenv('HTTP_CLIENT_IP');
}elseif(getenv('HTTP_X_FORWARDED_FOR')){
$ip=getenv('HTTP_X_FORWARDED_FOR');
}elseif(getenv('HTTP_X_FORWARDED')){
$ip=getenv('HTTP_X_FORWARDED');
}elseif(getenv('HTTP_FORWARDED_FOR')){
$ip=getenv('HTTP_FORWARDED_FOR');
}elseif(getenv('HTTP_FORWARDED')){
$ip=getenv('HTTP_FORWARDED');
}else{
$ip=$_SERVER['REMOTE_ADDR'];
}
return$ip;
}
4. php實現圖形顯示Ip地址的代碼及注釋
使用圖形顯示Ip,文件
sunip.php
復制代碼
代碼如下:
<?php
header("Content-type:
image/gif");
$im
=
imagecreate(130,15);
$background_color
=
ImageColorAllocate
($im,
255,
255,
255);
unset($ip);
if($_SERVER['HTTP_CLIENT_IP']){
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
else
if($_SERVER['HTTP_X_FORWARDED_FOR']){
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else{
$ip=$_SERVER['REMOTE_ADDR'];
}
//
www.jb51.net
$col
=
imagecolorallocate($im,
0,
51,
102);
imagestring($im,
3,
5,
1,
$ip
,
$col);
imagegif($im);
imagedestroy($im);
?>
1.
<?php
2.
header("Content-type:
image/gif");
第二行
聲明瀏覽器標頭
輸出為GIF圖形
3.
$im
=
imagecreate(130,15);
建立一個圖形
imagecreate(130,15)括弧內130,15分別代表寬度和高度
4.
$background_color
=
ImageColorAllocate
($im,
255,
255,
255);
設置背景顏色
imagecolorallocate
為一幅圖片分配顏色
($im,
255,
255,
255)im代表前面提到的新建圖形
後面的3個255則代表顏色表ffffff的10進制字元
5.
unset($ip);
無用
6.if($_SERVER['HTTP_CLIENT_IP']){
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
else
if($_SERVER['HTTP_X_FORWARDED_FOR']){
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else{
$ip=$_SERVER['REMOTE_ADDR'];
}
如果$_SERVER['HTTP_CLIENT_IP']可以使用則使用$_SERVER['HTTP_CLIENT_IP']下面類似
為判斷
此段是為了兼容多種伺服器設置
7.
$col
=
imagecolorallocate($im,
0,
51,
102);
定義文字顏色
8.
imagestring($im,
3,
5,
1,
$ip
,
$col);
將獲取到的IP畫到新建的畫布上
imagestring($im,
3,
5,
1,
$ip
,
$col);
分別代表imagestring(圖形表示,字元尺寸1-5,X坐標,Y坐標,輸出的IP,顏色)
9.
imagegif($im);
輸出GIF圖形
10.
imagedestroy($im);
釋放內存
11.
?>
程序結束
5. 用php來獲得客戶端伺服器ip的方法
<?php
echo
"當前腳本伺服器的主機名:".gethostbyaddr($_SERVER['REMOTE_ADDR'])."<br
/><hr
/>";
echo
"獲得當前運行PHP腳本(頁面)所在的伺服器的
IP
地址:".$_SERVER['SERVER_ADDR']."<br
/><hr
/>";
echo
"獲得當前運行PHP腳本(頁面)所在的伺服器的
主機名:".$_SERVER['SERVER_NAME'];
echo
'<hr>';
echo
'客戶端ip'.
$_SERVER['REMOTE_ADDR'];
echo
'<br>';
echo
'客戶端ip'.getenv('REMOTE_ADDR');
echo
"<br>";
echo
'伺服器主機ip'.gethostbyname("www.qq.com");
?>
運行出來:
當前腳本伺服器的主機名:XYL-PC
獲得當前運行PHP腳本(頁面)所在的伺服器的
IP
地址:127.0.0.1
獲得當前運行PHP腳本(頁面)所在的伺服器的
主機名:localhost
客戶端ip127.0.0.1
客戶端ip127.0.0.1
伺服器主機ip61.135.169.105
6. php 怎麼獲取伺服器端ip地址
<?php
functiongetIp()
{
$IPaddress='';
if(isset($_SERVER)){
if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
$IPaddress=$_SERVER["HTTP_X_FORWARDED_FOR"];
}elseif(isset($_SERVER["HTTP_CLIENT_IP"])){
$IPaddress=$_SERVER["HTTP_CLIENT_IP"];
}else{
$IPaddress=$_SERVER["REMOTE_ADDR"];
}
}else{
if(getenv("HTTP_X_FORWARDED_FOR")){
$IPaddress=getenv("HTTP_X_FORWARDED_FOR");
}elseif(getenv("HTTP_CLIENT_IP")){
$IPaddress=getenv("HTTP_CLIENT_IP");
}else{
$IPaddress=getenv("REMOTE_ADDR");
}
}
return$IPaddress;
}
echogetIp();//就可以輸出用戶的IP地址。
?>
獲取伺服器端ip地址
<?php
functionserverIp(){
if(isset($_SERVER)){
if($_SERVER['SERVER_ADDR']){
$server_ip=$_SERVER['SERVER_ADDR'];
}else{
$server_ip=$_SERVER['LOCAL_ADDR'];
}
}else{
$server_ip=getenv('SERVER_ADDR');
}
return$server_ip;
}
echoserverIp();
?>
此方法在本地不可用。需要上傳至伺服器
如果在本地使用此方法 列印出來的是127.0.0.1
希望對你有幫助
7. PHP獲取客戶端外網ip代碼
function get_real_ip()
{
$ip=FALSE;
//客戶端IP 或 NONE
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
//多重代理伺服器下的客戶端真實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;
}
}
}
//客戶端IP 或 (最後一個)代理伺服器 IP
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
8. PHP如何獲取伺服器外網IP
1.關於外網IP變更問題,如果你手頭上有 IP資源,建議綁定。就是你申請的靜態IP。
2.如果自己沒有靜態IP,那麼如果你有域名,可以通過 花生殼這些軟體,綁定自己的伺服器。這樣就算IP怎樣變化,直接訪問域名就可以了。
2.1.花生殼帶有一些二級域名的,功能也差不多。
-----------------------------------
另外,可以寫一個功能cURL,讓你的伺服器定期訪問一個站點(私有站點,要許可權進入),這個站點你可以獲取訪問者的IP。