PHP生成动态的签名照 可显示ip地址 可放在论坛

原创 木鱼  2017-07-06 11:15  阅读 1,262 次

效果图

源码是来自其他论坛的,我这里给大家大致的讲一下源码和注意事项

 

文章末尾会放上源码下载地址

 

在这里先贴一下源码吧,源码未做任何改动。

<?php 
header("content-type:image/png"); 
function get_client_ip(){
    
    foreach (array(
                'HTTP_CLIENT_IP',
                'HTTP_X_FORWARDED_FOR',
                'HTTP_X_FORWARDED',
                'HTTP_X_CLUSTER_CLIENT_IP',
                'HTTP_FORWARDED_FOR',
                'HTTP_FORWARDED',
                'REMOTE_ADDR') as $key) {
        if (array_key_exists($key, $_SERVER)) {
            foreach (explode(',', $_SERVER[$key]) as $ip) {
                $ip = trim($ip);
                //会过滤掉保留地址和私有地址段的IP,例如 127.0.0.1会被过滤
                //也可以修改成正则验证IP
                if ((bool) filter_var($ip, FILTER_VALIDATE_IP,
                                FILTER_FLAG_IPV4 |
                                FILTER_FLAG_NO_PRIV_RANGE |
                                FILTER_FLAG_NO_RES_RANGE)) {
                    return $ip;
                }
            }
        }
    }
    return null;
}
$ip=get_client_ip();

date_default_timezone_set("Asia/Shanghai");


function getip($ip){
	if(preg_match('/^((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1 -9]?\d))))$/', $ip)){
			//直接获取IP
		$url ="http://api.map.baidu.com/highacciploc/v1?qcip={$ip}&qterm=mb&ak=D5xRa5QyGjb0NzwEBYk9wQaEpXyFOat9&coord=bd09ll&extensions=3";
		//初始化
		$ch = curl_init();
		curl_setopt($ch,CURLOPT_URL,$url);
		curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE); //获取数据(html)返回  且不显示页面
		$data = curl_exec($ch);
		curl_close($ch);
		return $data = json_decode($data,true);
	}
}

$add=getip($ip);

//print_r(getip("36.106.195.48",$ak));
 $img = @imagecreatefrompng("./info.png");
  $backgroud_color = imagecolorallocate($img,58,109,61); 
  $font_color = imagecolorallocate($img,0,0,0); 
  $red = imagecolorallocate($img,255,0,0); 
  $fontsize = 14; 

$add=$add['content']['formatted_address'].$add['content']['pois']['0']['name'];

 $text2 = date("Y年m月d日"); 
 $font = '4.otf'; 
 imagettftext($img,$fontsize,0,140,110,$font_color,$font,$add); 
 $url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
 imagettftext($img,$fontsize,0,140,150,$font_color,$font,$ip); 
  imagettftext($img,$fontsize,0,450,230,$font_color,$font,$text2);
 imagettftext($img,$fontsize,0,140,190,$font_color,$font,$_SERVER['HTTP_REFERER']); 
 imagepng($img); 
 imagedestroy($img);

 

首先需要注意的是,需要装有gd库和freetype库。

 

函数get_client_ip() ,会过滤保留地址和私有地址,所以在本地环境测试的话,会获取不到ip的。 可以自行修改验证规则或者放到云服务器上面。

 

$_SERVER['HTTP_REFERER']会获取前一页的地址,如果直接打开该php文件的话,会获取不到,所以可以在其他html文件里, 加入图片标签,把src的地址填写成php文件的地址,然后直接打开html文件就行。

 

下载地址:

点击下载 密码: t7e4

 

 

 

 

本文源码来自:吾爱破解论坛

原作者:无名小银

原帖地址:http://www.52pojie.cn/thread-586797-1-1.html

本文地址:https://www.m5yu.com/create-signature-image.html
关注我们:请关注一下我们的微信公众号:扫描二维码,公众号:木鱼博客
版权声明:本文为原创文章,版权归 木鱼 所有,欢迎分享本文,转载请保留出处!

发表评论



    Warning: A non-numeric value encountered in /var/www/html/wp-content/themes/Nana/inc/functions/comment-template.php on line 23
  1. 胜达SEO博客
    胜达SEO博客 【农民】 @回复

    谢谢分享,欢迎回访我的网站