PHP检测url重定向的最终地址
2016-05-31 22:26
579 查看
引言
客户需求, 需要判断一个url跳转后的url是否是目标url, 于是有此文, 惯例先贴代码.代码
/** * 递归检测url重定向地址, 直到重定向到rule所指地址 * 返回该地址 * * @param string $url 待检测的地址 * @param string $rule 匹配的地址 * @return mixed */ function redirect($url, $rule = 'https://www.google.com/') { $header = get_headers($url, 1); //print_r($header); if (strpos($header[0], '301') !== false || strpos($header[0], '302') !== false) { // 检测到跳转 if (array_key_exists('Set-Cookie', $header)) { // 检测到cookie, 进行设置 $cookies = $header['Set-Cookie']; foreach ($cookies as $k => $v) { header('Set-Cookie: ' . $v); } } if (array_key_exists('Location', $header)) { $url = $header['Location']; if (is_array($url)) { foreach ($url as $k => $v) { if (strpos($v, $rule) !== false) { // 跳转地址与$rule匹配, 返回该地址 return $v; } else { // 不匹配则访问一次中转网址 file_get_contents($v); } } } else { if (strpos($url, $rule) !== false) { // 跳转地址与$rule匹配, 返回该地址 return $url; } } } } return false; }
小结
核心函数get_headers()
其余的就是常规的字符串判断函数.
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- rem : web app适配的秘密武器
- php7 读取php.ini[4]
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- 简单好用的PHP分页类
- ASP.NET、ASP、PHP、JSP之间有什么区别?