123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- <?php
- // +----------------------------------------------------------------------
- // | ThinkPHP [ WE CAN DO IT JUST THINK ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
- // +----------------------------------------------------------------------
- // | Author: 流年 <liu21st@gmail.com>
- // +----------------------------------------------------------------------
- // 应用公共文件
- /**
- * 获取服务器当前时间
- * @return string 时间
- */
- function getCurrentTime(){
- return date("Y-m-d H:i:s", time());
- }
-
- /**
- * 获取分页的查询条件
- * @return array 返回一个条件数组
- */
- function getPaginatiorQuery(){
- $query = \think\Collection::make(request()->get());
- $query->clean();
- $query->delete(config('paginate.var_page'));
-
- return $query->toArray();
- }
-
- /**
- * 发送HTTP请求方法
- * @param string $url 请求URL
- * @param array $params 请求参数
- * @param string $method 请求方法GET/POST
- * @return array $data 响应数据
- */
- function http($url, $params, $method = 'GET', $header = array(), $multi = false){
- $opts = array(
- CURLOPT_TIMEOUT => 30,
- CURLOPT_RETURNTRANSFER => 1,
- CURLOPT_SSL_VERIFYPEER => false,
- CURLOPT_SSL_VERIFYHOST => false,
- CURLOPT_HTTPHEADER => $header
- );
- /* 根据请求类型设置特定参数 */
- switch(strtoupper($method)){
- case 'GET':
- $opts[CURLOPT_URL] = $url . '?' . http_build_query($params);
- break;
- case 'POST':
- //判断是否传输文件
- $params = $multi ? $params : http_build_query($params);
- $opts[CURLOPT_URL] = $url;
- $opts[CURLOPT_POST] = 1;
- $opts[CURLOPT_POSTFIELDS] = $params;
- break;
- default:
- throw new Exception('不支持的请求方式!');
- }
- /* 初始化并执行curl请求 */
- $ch = curl_init();
- curl_setopt_array($ch, $opts);
- $data = curl_exec($ch);
- $error = curl_error($ch);
- curl_close($ch);
- if($error) throw new Exception('请求发生错误:' . $error);
- return $data;
- }
-
- /**
- * 解包
- * @param array $post
- * @return array
- */
- function decode($post){
- return $post;
- }
-
- /**
- * 生成唯一id(时间戳+随机数)
- * @return int
- */
- function getId(){
- return date('y').date('m').date('d').substr(time(),-5).substr(microtime(),2,5).sprintf('%03d',rand(0,999));
- }
-
- /**
- * 短地址
- * @param string $url 需要生成的字符串
- * @param string $key 加盐
- * @return string
- */
- function shortCode($url, $key='fuck'){
- $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
- $urlhash = md5($key . $url);
- $len = strlen($urlhash);
- //将加密后的串分成4段,每段4字节,对每段进行计算,一共可以生成四组短连接
- for ($i = 0; $i < 4; $i++) {
- $urlhash_piece = substr($urlhash, $i * $len / 4, $len / 4);
- //将分段的位与0x3fffffff做位与,0x3fffffff表示二进制数的30个1,即30位以后的加密串都归零
- //此处需要用到hexdec()将16进制字符串转为10进制数值型,否则运算会不正常
- $hex = hexdec($urlhash_piece) & 0x3fffffff;
- //域名根据需求填写
- // $short_url = "http://t.cn/";
- $short_url = "";
- //生成6位短网址
- for ($j = 0; $j < 6; $j++) {
- //将得到的值与0x0000003d,3d为61,即charset的坐标最大值
- $short_url .= $charset[$hex & 0x0000003d];
- //循环完以后将hex右移5位
- $hex = $hex >> 5;
- }
- $short_url_list[] = $short_url;
- }
-
- return $short_url_list[rand(0, count($short_url_list)-1)];
- }
|