plaodj 发表于 2017-5-3 02:32

非图片连接 加上图片标签后 显示图片 这个怎么做出来的?[更新]

[ 本帖最后由 plaodj 于 2017-5-3 11:12 编辑 ]\n\n洒家看到论坛里有些人得签名显示 ip浏览器操作系统等信息

对应使用的链接不是图片形式

如 某人的签名http://www.ipip5.com/myip (本版洒家没有发图权限 所以不显示)对应的是图片地址   http://www.ipip5.com/myip

洒家想知道的是假若洒家的网站http://www.52pojie.cn   希望别人使用    http://www.52pojie.cn/myip    展示的图片    也能显示 ip 操作系统浏览器等信息

要怎么做???


希望洒家表达的意思大伙能明白
更新
找到一段代码自己试验一次   发现服务器500错误   可能是自身服务器配置问题
<?php
/*
*echo "hello";
*/
$u_agent = $_SERVER['HTTP_USER_AGENT'];
$bname = 'Unknown';
$platform = 'Unknown';
$version = '';
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';
}
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';
}
$known = array('Version', $ub, 'other');
$pattern = '#(?<browser>'.join('|', $known).')[/ ]+(?<version>*)#';
if (!preg_match_all($pattern, $u_agent, $matches)) {
}
$i = count($matches['browser']);
if ($i != 1) {
    if (strripos($u_agent, "Version") < strripos($u_agent,$ub)){
    $version = $matches['version'];
    }
    else {
    $version = $matches['version'];
    }
}
else {
    $version = $matches['version'];
}
if($version == null || $version=="") {
    $version="?";
}
$ua = [
    'userAgent' => $u_agent,
    'name'      => $bname,
    'version'   => $version,
    'platform'=> $platform,
    'pattern'   => $pattern
];
$browser = "Your browser: ".$ua['name']." ".$ua['version']." on ".$ua['platform'];
$img_number = imagecreate(850,60);
$backcolor = imagecolorallocate($img_number,125,185,222);
$textcolor = imagecolorallocate($img_number,255,255,255);
imagefill($img_number,0,0,$backcolor);
$agent=$_SERVER['HTTP_USER_AGENT'];
$ip=$_SERVER['REMOTE_ADDR'];
$host_name = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$url = "http://api.netimpact.com/qv1.php?key=uiWMSWCvUGimIahk&qt=geoip&d=json&q=$ip";
$d = file_get_contents($url);
$details = json_decode($d);
$data = explode(',' , $d);
$info = array(
    'country_code' => $data ,
    'country_name' => $data ,
    'region_name' => $data ,
    'city' => $data ,
    'latitude' => $data ,
    'longitude' => $data ,
    'isp' => $data ,
);
$messages = "Dear friends from $data, $data, $data($data, $data).";
$message2 = "Using $agent";
$time = date('Y-m-d H:i:s');
Imagestring($img_number,10,5,0,$messages,$textcolor);
Imagestring($img_number,10,5,20,$browser,$textcolor);
Imagestring($img_number,10,5,40,$time,$textcolor);
header("Content-type: image/jpeg");
imagejpeg($img_number);
?>

堕落ぁ狼 发表于 2017-5-3 08:33

这个地址并不是一个静态的图片文件地址

它的背后其实是一个后端语言动态输出的图片流信息

经过浏览器解析后展现为图片的形式

其原理就是根据http请求的头信息来分辨该请求的相关信息(浏览器、ip、地区之类)

然后动态的生成图片流返回到浏览器

Yo丨Se7ven 发表于 2017-5-3 09:27

懂PHP就明白这原理。
用php读取浏览用户的IP,浏览器,操作系统等。
再把这些读取信息伪装成JPEG/png图片流
再用img标签导出

nmsl 发表于 2017-5-3 03:26

好像是明白了?

zcq286495124 发表于 2017-5-3 03:33

就是一个简单的PHP探测器,需要有域名和虚拟主机来制作的。

dszsdyx 发表于 2017-5-3 05:17

一个php探测器吗

话糙理不糙911 发表于 2017-5-3 07:29

这是什么啊

chen1234 发表于 2017-5-3 07:35

绝版ren物 发表于 2017-5-3 08:35

之前有人发过,搜索一下吧

414269678 发表于 2017-5-3 08:41

动态网页吧

Rzzsss 发表于 2017-5-3 08:50

这种东西其实就是一张图片格式的PHP网页,用PHP打印你想要的信息等等。
页: [1] 2
查看完整版本: 非图片连接 加上图片标签后 显示图片 这个怎么做出来的?[更新]