php地址

使用PHP获取必应Bing每日图片

微软的必应搜索的每日图片不得不说,都是经典,美得一塌糊涂。看到很多把必应壁纸做电脑壁纸的软件,今天闲的蛋疼,就折腾了一下。

接口

我们用到的接口是

https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1

这里的

idx=0

表示是显示当天的时间,如果要显示昨天的就将

idx=0

改为

idx=1

,以此类推。注意:bing支持查看历史图片15天以内的,数字就有范围限制了(0-15)。

获取当日图片

我们有了接口就可以直接利用正则表达式去匹配相关字符串了。下面给出一个获取并输出当日美图的php代码

<?php $str=file_get_contents('https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1');if (preg_match("/<url>(.+?)<\/url>/ies", $str, $matches)) { $imgurl='https://cn.bing.com'.$matches[1];}if ($imgurl) { header('Content-Type: image/JPEG'); @ob_end_clean(); @readfile($imgurl); @flush(); @ob_flush(); exit();} else { exit('error');}?>

保存为bingpic.php,上传到服务器直接访问即可。

获取图片版权介绍

有了图片,没有文字怎么能满足饥渴的我,还是利用正则提取出图片版权信息

<?php$url=file_get_contents('https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1'); if (preg_match("/<copyright>(.+?)<\/copyright>/ies", $url, $matches)) { $imgcopyright=$matches[1];}if ($imgcopyright) { header("Content-type: text/html; charset=utf-8"); echo $imgcopyright;} else { exit('error');}?>

tip:修改相关参数即可实现对应的文字说明

自动保存bing图片

自动在php文件同级目录下创建一个当前年月的文件夹,保存每天的bing美图并输出

<?phperror_reporting(0);$path=date('Ym');if (!file_exists($path)) { mkdir($path, 0777);}$pathurl = $path.'/'.date('d').'.jpg';if (!is_file($pathurl)) { $str=file_get_contents('https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1'); if (preg_match("/<urlBase>(.+?)<\/urlBase>/ies", $str, $matches)) { $imgurl='https://s.cn.bing.com'.$matches[1].'_1920x1080.jpg'; copy($imgurl, $pathurl); }} header('Content-Type: image/JPEG'); @ob_end_clean(); @readfile($pathurl); @flush();@ob_flush();exit();?>

展开
收起

PHP检测url是否被百度PC收录

公司网站主要是靠百度流量来赚钱,主要是做移民签证,品牌名称:移民内参。有运营部同时负责产品运营,每周汇报收录情况、收录率、收录文章链接等情况。闲暇之余写了一个小功能,就是统计每个编辑本周发文链接,并查询百度收录情况计算收录率。最后生成图标,进行数据汇总。

一、实现代码

实际代码请参考博客

二、原理

通过长时间的seo经验,发现在百度收录网址链接时会出现收录链接的索引,当无收录时会出现提交网址字样,我们利用此规则进行判断。其他搜索引擎同理。

seo

三、开发平台已更新

展开
收起

「ThinkPHP5开发连载90」tp5路由-路由到类的方法/重定向地址

上一篇文章讲解“路由 - 路由到模块/控制器/操作/操作方法”,本篇文章讲解“路由 - 路由到类的方法/重定向地址”。

路由到类的方法

路由到类的方法:

这种方式更进一步,可以支持执行任何类的方法,而不仅仅是执行控制器的操作方法。

1)动态方法

①在Index控制器中,新建classFun方法

②设置classFun方法的路由

预览:

注意:1. Index控制器的命名空间为\app\index\controller,加上类名Index与方法名classFun,形成路由到类的方法的路由。

2)静态方法

①修改Index控制器下的classFun方法的类型,改为静态方法

②修改classFun方法的路由,改为静态方法

预览:

注意:1. 支持传入额外的参数作为方法的参数调用(用于参数绑定),但经测试无效,接收不到额外的参数(V5.1.12)传入额外参数格式:Route::get('class/:id','\app\index\controller\Index::classFun?flg=7')

路由到重定向地址

重定向的外部地址必须以“/”或者http开头的地址。

如果路由地址以“/”或者“http”开头则会认为是一个重定向地址或者外部地址。

例如:

虽然都是路由到同一个地址,但是前者采用的是301重定向的方式路由跳转,这种方式的好处是URL可以比较随意(包括可以在URL里面传入更多的非标准格式的参数),而后者只是支持模块和操作地址。

1)重定向路由(“/”方式)

①在Index控制器中,新建rectFun方法

②设置rectFun方法的路由

非重定向路由设置:

预览:

重定向路由:

预览:

访问路由时,自动跳转到后边的路由地址。

注意:1. 以上的重定向路由使用的是“/”,跳转时,会直接使用域名+跳转地址访问,由于此时没设置虚拟域名,因此需要加上项目目录等路径。2. 在非重定向路由中,传参不需要在路由地址中体现,但在重定向路由中,需要将参数体现,并且需要加上参数名,即不设置路由时怎么访问,就怎么设置:Route::rule('rect2/:id','/tp5_1/public/index/index/rectFun/id/:id');3. 路由地址采用重定向地址的话,如果要引用动态变量,直接使用动态变量即可。

2)重定向路由(“http”方式)

采用重定向到外部地址通常对网站改版后的URL迁移过程非常有用,例如:

访问路由“baidu”直接跳转到百度页面。

3)重定向状态码

路由重定向默认使用301状态码,可以使用status方法单独设置。

4)redirect方法重定向

V5.1.3+版本开始,可以直接使用redirect方法注册一个重定向路由

ThinkPHP5连载为卓象程序员原创,转载请联系卓象程序员

关注卓象程序员,定期发布技术文章

下一篇讲解“路由 - 闭包支持”

展开
收起

这3种php高级过滤了解一下,很实用!

在php中有很多的过滤,可以对输入的字符串进行过滤,同时也可以对邮件地址进行过滤,接下来我要讲的是php中的3种高级过滤,在开发中很实用。

第一种:过滤数值范围

在php经常要接收各种数据,其中数值是非常普遍的一种,我们接收到的数值并不是多大都行的,无用的数据对于我们的数据库来说就是浪费资源,所以在接收数据的时候,有必要对数字的范围进行过滤。

对数字的范围进行过滤这里需要用到的是FILTER_VALIDATE_INT这个关键字以及它的附加条件,步骤如下:

1、新建一个变量。

2、通过filter_var函数对这个变量进行过滤,过滤的根据是FILTER_VALIDATE_INT,附加条件是数字的最大值和最小值。例如:filter_var($shuzi,FILTER_VALIDATE_INT,array("options"=>array("min_range"=>$min,"max_range"=>$max))。

3、最后就是根据过滤的结果给出相应的提示信息。

第二种:对ipv6地址进行过滤。

如今ipv4地址已经用完了,逐渐开始使用ipv6地址,在接收这类IP地址的时候,我们很可能就会遇到ipv6这样的地址,针对这样的地址,我们借用FILTER_VALIDATE_IP,FILTER_FLAG_IPV6这两个条件来进行过滤。实例代码如下:

$ipv6="2004:0db9:89a3";

$panduan=filter_var($ipv6,FILTER_VALIDATE_IP,FILTER_FLAG_IPV6);

if($panduan){

echo "这是合法的ipv6地址";

}

else{

echo "这个ipv6地址不合法";

}

第三种:对查询语句的过滤。

在接收数据的时候,我们不能防止用户输入什么内容,有些用户就故意在输入信息的时候,搞sql注入,在网址上添加查询语句,这样的语句我们是要拒绝接收的,所以,在接收网址的时候,对它进行过滤是非常有必要的,判断地址中是否包含了查询语句。

判断是否包含查询语句,我们可以通过FILTER_VALIDATE_URL和FILTER_FLAG_QUERY_REQUIRED这两个关键字来实现,具体代码如下:

$chaxun="http://www.nihao select * from b hello";

$panduan=filter_var($chaxun,FILTER_VALIDATE_URL,FILTER_FLAG_QUERY_REQUIRED);

if($panduan){

echo "url地址是不合法的";

}

else{

echo "url地址是合法的";

}

以上就是关于3种php高级过滤,有兴趣的朋友可以了解一下,同时欢迎提出宝贵的意见和建议。

展开
收起

部署PHP接口服务器API,采用Lumen的框架,Linux服务器

Lumen为速度而生的 Laravel 框架,是Laravel框架的精简版,我们也可以通过需求再做扩展,我们平常制作API接口服务器首先。

首先,搭建API服务器

我们用的是OneinStack,所以新增虚拟主机比较方便。

cd /root/oneinstack./vhost.sh

然后根据提示操作下即可。

下载Lumen,新建一个项目

先cd到前面创建的站点目录下,然后执行下载命令

composer globalrequire"laravel/lumen-installer"下载Lumen的安装包

这个下载比较耗时,请耐心等待~

新建项目 api

composer create-project --prefer-dist laravel/lumen api

配置.env

主要配置APP_KEY、APP_URL

APP_KEY= ******* //随机32位字符APP_URL= ****** //你的主域名

这边还需要配置下数据库,然后执行下命令

php artisan cache:clear

写个测试路由

$router->get('/test', function (){return response()->json(["msg"=>"API URL TEST.","code"=>"000000"]);});

访问对应网址,获得如下参数

{"msg":"API URL TEST.","code":"000000"}

补充

接下你可以根据项目需要,自己补充路由和控制器,以及自定义中间件。

安装过程相对简单,如果遇到Linux安装超时报错的。

可以在自己的Win系统里面下载好,并创建好项目,然后再上传到服务器,并且设置入口到public,重启服务器就可以访问了~

展开
收起

PHP 利用getid3 获取音频文件时长等数据

1、首先,我们需要先下载一份PHP类—getid3 https://codeload.github.com/JamesHeinrich/getID3/zip/master

2、解压刚才下载好的文件,拿出两个文件夹 getid3 及 helperapps

3、加载音频类文件 require_once('getid3/getid3.php');

4、获取你数据库中的文件的URL 如 : $url = "../uploadfile/file/20180608/20180608061015_74942.m4a"

5、$arr = explode("/", $url); 用"/"拆开这个字符串

5、$file_url = realpath(dirname(__FILE__).'/../../').DIRECTORY_SEPARATOR.$arr[1].DIRECTORY_SEPARATOR.$arr[2].DIRECTORY_SEPARATOR.$arr[3].DIRECTORY_SEPARATOR.$arr[4] ;

拿到文件的真实地址,这里只能用绝对路径 ,DIRECTORY_SEPARATOR是自动判断"/还是\".

这里可以打印下结果 D:\phpStudy2\WWW\uploadfile\file\20180608\20180608061317_79304.m4a

6、拿到了文件的真实路径后

$getID3 = new getID3(); //实例化类

$ThisFileInfo = $getID3->analyze($file_url); //分析文件,$file_url为音频文件的地址

$fileduration=$ThisFileInfo['playtime_seconds'];//这里拿的是音频时长,你可以拿其他参数

好了,是不是非常简单的就实现了呢,有任何问题可以给我留言哦!

展开
收起

PHP函数_CDN加速之后,如何获取当前访客的真实IP地址信息

最近我一直帮助我朋友对一个项目网站进行二次开发和防护,为了简单抵挡一下竞争对手的 DDoS 攻击,他给网站开启了腾讯云CDN加速服务。

开启 CDN 之后,我之前给他写的 Shell 防护脚本也就宣告无效了,因为不管是正常访问还是攻击访问,脚本拿到的 IP 都是 CDN 节点的,而我不可能把 CDN 的节点 IP 也给禁用了,那就都不能访问了。

目前国内已经争相出现了百度云加速、腾讯云、阿里云、加速乐、360 网站卫士以及安全宝等CDN加速服务。不仅能够有效的隐藏自己的服务器IP地址,还能很好的防御DDos攻击和加快网站的访问速度,cdn加速对于网站来说是很有必要的。

于是,网站的访问模式就变为:

用户浏览器 → CDN 节点 → 网站源服务器

甚至是更复杂的模式:

用户浏览器 → CDN 节点(CDN 入口、CC\DDoS 攻击流量清洗等) → 腾讯云盾 → 源服务器

可以看到,我们的网站中间经历了好几层的透明加速和安全过滤, 这种情况下,我们就不能用上面的“普通配置”。因为普通配置中基于【源 IP 的限制】的结果就是,我们把【CDN 节点】或者【阿里云盾】给限制了,因为这里“源 IP”地址不再是真实用户的 IP,而是中间 CDN 节点的 IP 地址。

我们需要限制的是最前面的真实用户,而不是中间为我们做加速的加速服务器。

其实,当一个 CDN 或者透明代理服务器把用户的请求转到后面服务器的时候,这个 CDN 服务器会在 Http 的头中加入一个记录

X-Forwarded-For : 用户 IP, 代理服务器 IP

如果中间经历了不止一个代理服务器,这个记录会是这样

X-Forwarded-For : 用户 IP, 代理服务器 1-IP, 代理服务器 2-IP, 代理服务器 3-IP, ….

可以看到经过好多层代理之后, 用户的真实 IP 在第一个位置, 后面会跟一串中间代理服务器的 IP 地址,从这里取到用户真实的 IP 地址,针对这个 IP 地址做限制就可以了。

我们如何通过PHP获取访问用户的真实IP呢?

今天我就讲自己编写的代码发给大家,支持cdn加速获取用户IP,也支持不加速获取IP。IsCDN默认flase为不启动cdn加速获取用户IP,true则相反。

张新全博客

展开
收起

论坛discuz修改后台地址的方法

修改论坛后台登录地址,是为了防止黑客入侵爆破管理员密码,

其实修改后台地址,就是修改根目录中的admin.php,把admin替换成其他字,就可以修改了.

修改后有什么坏处?

网上的教程说改了文件名后还要到header_userstatus.htm里修改前台管理中心链接地址,其实不仅需要改这个文件,需要修改很多的文件,比如前台帖子浏览页面左侧信息栏下面的ip和禁止什么的管理都是指向的原来的admin.php,还要修改viewthread_node.htm文件修改指向地址,而且管理员在登录前台控制面板进行一些禁止操作是,因为是管理员进行操作,所以会自动访问后台地址进行禁止操作,而这里的指向地址也需要修改,还有就是前台用户个人资料页的禁止等超链接也是默认的后台地址,总之,需要修改很多文件的,而且就算你全改过来了,如果知道你网站的模板文件夹地址,直接访问template/模板文件夹/common/header_userstatus.htm也能看到你修改后的后台地址.

不修改后台地址,怎样可以加强安全?

admin.php是discuz默认的后台地址,正常情况下可以直接访问,为了防止某些恶意访问的情况,可以修改以下内容进行安全性能的提升。

打开admin.php文件,

查找

$discuz->init();

在下面添加下面的代码,就可以了

if(!$_G['uid'] || !getstatus($_G['member']['allowadmincp'], 1)) {header('Location: /');

}

这段代码的作用:如果不是管理员,是访问不了论坛后台页面,大大增强了后台的保护.

总结:管理员密码要改得复杂点,别改那么简单.

展开
收起

李唐SEO:PHP实现获取IP地址经纬度所在城市等

在做某某介绍网的时候如何才能实现当地点开是当地的名字加网站。

<?php

$getIp=$_SERVER["REMOTE_ADDR"];

echo 'IP:',$getIp;

echo '<br/>';

$content = file_get_contents("http://api.map.baidu.com/location/ip?ak=7IZ6fgGEGohCrRKUE9Rj4TSQ&ip={$getIp}&coor=bd09ll");

$json = json_decode($content);

echo 'log:',$json->{'content'}->{'point'}->{'x'}; //按层级关系提取经度数据

echo '<br/>';

echo 'lat:',$json->{'content'}->{'point'}->{'y'}; //按层级关系提取纬度数据

echo '<br/>';

print $json->{'content'}->{'address'}; //按层级关系提取address数据

?>

展开
收起