remote_name = array(
//user info
'REMOTE_ADDR' => 'ユーザのIPアドレス',
'REMOTE_HOST' => 'ユーザのホスト名',
#'REMOTE_IDENT' => 'ユーザ名(IDENTプロトコルに対応している場合)',
'REMOTE_PORT' => 'ユーザがサーバとの通信に使用したポート番号',
#'REMOTE_USER' => 'ユーザ認証時のユーザID',
//browser info
'HTTP_ACCEPT' => 'ブラウザがサポートするMIMEタイプ',
'HTTP_ACCEPT_CHARSET' => 'ブラウザがサポートする文字コードセット',
'HTTP_ACCEPT_ENCODING' => 'エンコード方式',
'HTTP_ACCEPT_LANGUAGE' => 'ブラウザがサポートする言語コード',
'HTTP_CONNECTION' => '接続の状態',
'HTTP_COOKIE' => 'このURLに対するcookie',
'HTTP_EXTENSION' => 'CompuserveのRPAへの対応を示す拡張ヘッダ',
'HTTP_FROM' => 'ブラウザに設定されているE-Mailアドレス',
'HTTP_HOST' => '接続先ホスト名',
'HTTP_KEEP_ALIVE' => '接続先との接続を維持する最長時間',
'HTTP_PRAGMA' => 'キャッシュに関する動作方式(HTTP/1.0)',
'HTTP_REFERER' => '参照元URL',
'HTTP_UA_CPU' => 'クライアントのCPU',
'HTTP_UA_OS' => 'クライアントのOS',
'HTTP_USER_AGENT' => 'ブラウザに関する情報(UserAgent)',
#'HTTP_WEFERER' => 'Norton製品専用の拡張ヘッダ(Referer関連)',
#'HTTP_WSER_AGENT' => 'Norton製品専用の拡張ヘッダ(User-Agent関連)',
//for proxy judge
'HTTP_CACHE_CONTROL' => 'キャッシュに関する制御情報(最長時間等)',
'HTTP_CACHE_INFO' => 'キャッシュの情報',
'HTTP_CLIENT_IP' => '接続元のIPアドレス(TrafficServerやNetscapeProxyが付加)',
'HTTP_FORWARDED' => 'プロキシのURIおよびクライアントのFQDN',
'HTTP_IF_MODIFIED_SINCE'=> 'この時刻以降にコンテンツが更新されていればそのまま返す',
'HTTP_MAX_FORWARDS' => '経由できるプロキシの最大数',
'HTTP_PROXY_CONNECTION' => 'プロキシの接続形態',
'HTTP_SP_HOST' => '接続元のIPアドレス',
'HTTP_TE' => 'プロキシ等がサポートする転送エンコード方式',
'HTTP_VIA' => 'プロキシの情報(種類,バージョン等)',
'HTTP_X_FORWARDED_FOR' => '接続元のIPアドレス',
'HTTP_X_LOCKING' => '接続元またはプロキシ自身のIPアドレス(DeleGateが付加)',
'HTTP_XONNECTION' => 'CacheFlow専用の拡張ヘッダ(Connection関連)',
'HTTP_XROXY_CONNECTION' => 'CacheFlow専用の拡張ヘッダ(Proxy-Connection関連)'
);
}
//----------------
public function gettable(){
echo '
';
echo '環境変数名 | 値 | 説明 |
';
$sv = $_SERVER;
$sv[REMOTE_HOST] = gethostbyaddr($_SERVER["REMOTE_ADDR"]);//Enable when server did not support "REMOTE_HOST" value.
foreach($this->remote_name as $key => $desc){
$value = (empty($sv[$key]))? '(none)' :$sv[$key];
switch($key){
case 'REMOTE_ADDR':
echo 'ユーザ関連の情報 |
';
break;
case 'HTTP_ACCEPT':
echo 'クライアント関連の情報 |
';
break;
case 'HTTP_CACHE_CONTROL':
echo 'プロキシ関連の情報 |
';
break;
default:
}
echo ''.htmlspecialchars($key).' | '.htmlspecialchars($value).' | '.htmlspecialchars($desc).' |
';
}
echo '
';
}
//----------------
}
/**
* PEAR Net_GeoIP(for GeoLite Country)
* http://pear.php.net/package/Net_GeoIP/
*/
class geotools extends Net_GeoIP{
//----------------
public function get_geoip(){
if ($this->is_ipaddr($_SERVER["REMOTE_ADDR"])) $this->geoip($_SERVER["REMOTE_ADDR"]);
}
//----------------
private function geoip($ipadd){
$geoip = $this->getInstance(GEOIPDIR.'/GeoIP.dat');
$geo_value = array(
'COUNTRY_NAME' => $geoip->lookupCountryName($ipadd),
'COUNTRY_CODE' => $geoip->lookupCountryCode($ipadd)
);
echo '';
echo '接続元ホストの所在地 |
';
foreach($geo_value as $key => $value){
$value = (empty($value))? '(unknown)':$value;
echo ''.htmlspecialchars($key).' | '.htmlspecialchars($value).' |
';
}
echo '
';
}
/**
* is_ipaddr() Function
* Created by: Joshua H. (TRUSTAbyss)
*
* This function returns a boolean value.
* Usage: is_ipaddr("IP");
*/
private function is_ipaddr($ip){
$result = FALSE;
// Check to see if the IP Address is valid.
if (preg_match("/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/", $ip, $matches)){
// Check each of the IP digits to see if they're less than or equal to 255 (valid IP Range).
if (($matches[1] <= 255) && ($matches[2] <= 255) && ($matches[3] <= 255) && ($matches[4] <= 255)){
$result = TRUE; // Valid IP.
}
}
return $result;
}
//----------------
public function geoip_newest(){
$filename = 'GeoIP.dat';
if (file_exists($filename)) {
return date ("Y-m-d", filemtime($filename));
}
}
}
//----------------
class proxyjudge extends check_proxy{
/**
* PukiWiki Plus! Proxy Judge class
* https://github.com/miko2u/pukiwiki-plus-i18n/blob/master/lib/proxy.cls.php
*/
public function output_result(){
$proxy = ($this->is_proxy())?'プロキシ経由である':'プロキシ経由ではない';
echo htmlspecialchars($proxy);
}
}
//----------------
$ObjEVC = new EnvChecker();
$ObjPXJ = new proxyjudge();
$ObjGEO = new geotools();
//----------------
?>
ENV Checker
ENV Checker
gettable();?>
Pukiwiki Plus!の判定基準でoutput_result();?>と判定されました。
get_geoip();?>
Powered by GeoLite Country