情况是样的,我的小站有一部分的友链是使用的http的头像图片,所以呢,每次打开网站的友链页面地址栏都会出现一个感叹号,着实让人不爽,参考随机图片api直接输出图片的方式,我用一个简单的方法搞定了这个问题。

不多说,直接上代码,新建一个php文件,当然名称随意,我这里新建favicon.php

1
2
3
4
5
6
<?php
$get_u = $_SERVER["QUERY_STRING"]; //获取地址栏url中‘?’之后的内容
$url = substr($get_u,4); //取$get_u中获取内容的第五个字符到最后
$img = file_get_contents($url,true); //获取得到的字符串
header("Content-Type: image/jpeg;"); //告诉浏览器这个页面显示的是一张图片
echo $img; //输出图片

然后就可以通过https://url.com/favicon.php?url=xxxxxxxx来获取http资源的图片,xxxxxxxx表示http开头的图片

比如:https://acg.wgb.ink/favicon.php?url=http://tva4.sinaimg.cn/large/0072Vf1pgy1foxkj2ashuj31kw0w0hcp.jpg

花哨一点,后面放上随机图片

https://acg.wgb.ink/acgurl.php?return=http返回的是一张http的随机图片

https://acg.wgb.ink/favicon.php?url=https://acg.wgb.ink/acgurl.php?return=http

回到主题,修复了友链页面显示感叹号的问题

MD5是什么?

MD5是一种信息摘要算法,它可以从一个字符串或一个文件中按照一定的规则生成一个特殊的字符串,并且一个文件所对应的MD5摘要是固定的,当文件内容变化后,其MD5值也会不一样,当然,它的过程是不可逆的,只能进行加密而不能进行解密,常常用来进行数据的验证,有很多的网站提供的资源或者软件都提供了MD5的值,用来验证用户所下载的资源和文件是否被非法篡改。

PHP md5()函数

实例:

1
2
3
4
<?php
$str = "Hello";
echo md5($str);
?>

定义和用法

md5() 函数计算字符串的 MD5 散列。

md5() 函数使用 RSA 数据安全,包括 MD5 报文摘要算法。

来自 RFC 1321 的解释 - MD5 报文摘要算法:MD5 报文摘要算法将任意长度的信息作为输入值,并将其换算成一个 128 位长度的”指纹信息”或”报文摘要”值来代表这个输入值,并以换算后的值作为结果。MD5 算法主要是为数字签名应用程序而设计的;在这个数字签名应用程序中,较大的文件将在加密(这里的加密过程是通过在一个密码系统下[如:RSA]的公开密钥下设置私有密钥而完成的)之前以一种安全的方式进行压缩。

如需计算文件的 MD5 散列,请使用 md5_file() 函数。

语法

1
md5(string,raw)
参数 描述
string 必需。规定要计算的字符串。
raw 可选。规定十六进制或二进制输出格式:TRUE - 原始 16 字符二进制格式;FALSE - 默认。32 字符十六进制数

如果成功则返回计算的MD5散列

MD5加密字符串

在Ktools在线工具箱提供了md5的加密,源码很简单,通过一个form表单,将输入的值传给$str,如果值不为空,则进行计算,如果为空,则返回:请输入需要加密的内容,将在这里显示结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<div id="wrap" class="container">
<h2 style="text-align:center;">在线MD5加密</h2>
<div class="tools">
<form id="" action="" method="post" accept-charset="utf-8">
<style>
#text{
width: 100%;
}
</style>
<!--<input type="text" name="text" id="text" value="" placeholder="请输入内容"/>-->
<textarea type="text" class="tools" name="text" id="text" value="" placeholder="请输入需要加密的内容"></textarea>
<button type="submit" name="sub" class="btn btn-success">加密</button>
<button type="reset" name="sub" class="btn btn-danger">重置</button>
</form>
</div>
<div style="text-align:center;">
加密之后:
</div>
<p class="tools" style="color:#f05050">
<?php
$str = $_POST['text'];
if (!empty($_POST['text'])) {
echo md5($str);

exit;
}else {
echo "请输入需要加密的内容,将在这里显示结果";
}
?>
</p>

</div>

预览地址:https://tools.kaygb.top/parts/md5.php

更多用法

如果你使用gravatar作为头像,那么gravatar所使用的方式就是将邮箱进行MD5加密,然后进行返回,国内可以尝试V2EX的镜像:https://cdn.v2ex.com/gravatar/邮箱md5