Thứ Tư, 2 tháng 4, 2014

Code PHP tạo hình hiển thị IP và Map

Buồn buồn ngồi nghịch viết cái code tạo hình chứa thông tin từ file PHP đơn giản, share cho anh em xài cho vui.

Demo:
IP và user agent của các bác nè, xem đi có đúng không :

[​IMG]
Google map nhà bác nè :v
[​IMG]
Source đây nè:
PHP:
<?php
    
if($_REQUEST['mode']=='troll.png')
    {

        
$ua=getBrowser();
        
//print_r($yourbrowser);
        
$ip $_SERVER['REMOTE_ADDR'];
        
$details json_decode(file_get_contents("http://ipinfo.io/{$ip}/json"));
        
//$im = ImageCreate(1024, 1024);
        
$im imagecreatefromjpeg('ip.jpg');
        
$white ImageColorAllocate($im0xFF,0xFF,0xFF);
        
$black ImageColorAllocate($im0x00,0x00,0x00);
        
ImageTTFText ($im2004030$black'arial''What Đờ Lợn?');
        
ImageTTFText ($im1501055$black'arial''Địa chỉ IP: '.$details->ip);
        
ImageTTFText ($im1501075$black'arial''Hostname: '.$details->hostname);
        
ImageTTFText ($im1501095$black'arial''Thành Phố: '.$details->city);
        
ImageTTFText ($im15010115$black'arial''Quốc Gia: '.$details->country);
        
ImageTTFText ($im15010135$black'arial''Trình Duyệt: '.$ua['name'].$ua['version']);
        
ImageTTFText ($im15010155$black'arial''Hệ Điều Hành: '.$ua['platform']);
        
header('Content-Type: image/png');
        
ImagePNG($im);
    }
    if(
$_REQUEST['mode']=='map.png'){
        
$ip $_SERVER['REMOTE_ADDR'];
        
$details json_decode(file_get_contents("http://ipinfo.io/{$ip}/json"));
        
$uri 'https://maps.googleapis.com/maps/api/staticmap?center='.$details->loc.'&zoom=12&size=640x200&sensor=false';
        
//$im = imagecreatefromjpeg('https://maps.googleapis.com/maps/api/staticmap?center='.$details->loc.'&zoom=9&size=640x200&sensor=false');
        //$img = file_get_contents($uri);
        
$im imagecreatefrompng($uri);
        
header('Content-Type: image/png');
        
ImagePNG($im);
    }
    
//header('http://daiyen.info');
    
function getBrowser()
    {
        
$u_agent $_SERVER['HTTP_USER_AGENT'];
        
$bname 'Không Rõ';
        
$platform 'Không Rõ';
        
$version"";

        
//First get the platform?
        
if (preg_match('/linux/i'$u_agent)) {
            
$platform 'Linux';
        }
        elseif (
preg_match('/macintosh|mac os x/i'$u_agent)) {
            
$platform 'Mac';
        }
        elseif (
preg_match('/windows|win32/i'$u_agent)) {
            
$platform 'Windows';
        }
     
        
// Next get the name of the useragent yes seperately and for good reason
        
if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent))
        {
            
$bname 'Internet Explorer';
            
$ub "MSIE";
        }
        elseif(
preg_match('/Firefox/i',$u_agent))
        {
            
$bname 'Mozilla Firefox';
            
$ub "Firefox";
        }
        elseif(
preg_match('/Chrome/i',$u_agent))
        {
            
$bname 'Google Chrome';
            
$ub "Chrome";
        }
        elseif(
preg_match('/Safari/i',$u_agent))
        {
            
$bname 'Apple Safari';
            
$ub "Safari";
        }
        elseif(
preg_match('/Opera/i',$u_agent))
        {
            
$bname 'Opera';
            
$ub "Opera";
        }
        elseif(
preg_match('/Netscape/i',$u_agent))
        {
            
$bname 'Netscape';
            
$ub "Netscape";
        }
     
        
// finally get the correct version number
        
$known = array('Version'$ub'other');
        
$pattern '#(?<browser>' join('|'$known) .
        
')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
        if (!
preg_match_all($pattern$u_agent$matches)) {
            
// we have no matching number just continue
        
}
     
        
// see how many we have
        
$i count($matches['browser']);
        if (
$i != 1) {
            
//we will have two since we are not using 'other' argument yet
            //see if version is before or after the name
            
if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
                
$version$matches['version'][0];
            }
            else {
                
$version$matches['version'][1];
            }
        }
        else {
            
$version$matches['version'][0];
        }
     
        
// check if we have a number
        
if ($version==null || $version=="") {$version="?";}
     
        return array(
            
'userAgent' => $u_agent,
            
'name'      => $bname,
            
'version'  => $version,
            
'platform'  => $platform,
            
'pattern'    => $pattern
        
);
    }
    
//
?>
Tạo một file hình, định dạng là Jpeg hoặc Png để làm nền nhé, ở đây mình dùng file Jpeg, độ phân giải 460x180. Sửa lại dòng
PHP:
$im imagecreatefromjpeg('ip.jpg');
cho phù hợp với đường dẫn của hình nhé, nếu là hình png thì dùng
PHP:
$im imagecreatefrompng('ip.png');
Up code lên host, chạy bằng cách lấy link của ảnh và chèn vào chữ kí, bài viết thông qua thẻ
HTML:
[IMG] [/IMG]
ấy
Ví dụ:
Mã:
[img]http://daiyen.info/mail/ip4.php?mode=troll.png[/img]
Với tham số mode=troll.png là để lấy useragent.
Mã:
[img]http://daiyen.info/mail/ip4.php?mode=map.png[/img]
để lấy google map.
Chúc các bác vui vẻ :v

0 nhận xét: