玄元一墨 发表于 2023-1-20 13:58:59

封装好的一些PHP方法,低阶修士可以直接拿去用

封装好的一些PHP方法,没有框架的低阶修士可以直接拿去用,可以为此新建一个php文件,在需要使用里面的方法时引入即可。

<?php

    //获取客户端的IP地址
    function getClientIP(){
      //getenv()函数定义:取得系统的环境变量
      if (getenv("HTTP_CLIENT_IP")) {
            $ip = getenv("HTTP_CLIENT_IP");
      } elseif (getenv("HTTP_X_FORWARDED_FOR")) {
            $ip = getenv("HTTP_X_FORWARDED_FOR");
      } elseif (getenv("REMOTE_ADDR")) {
            $ip = getenv("REMOTE_ADDR");
      } else {
            $ip = "Unknow";
      }
      if ($ip == '::1'){
            //本地
            $ip = '127.0.0.1';
      }
      return $ip;
    }

    //获取服务器的IP地址
    function getServerIp(){
      $server_ip = gethostbyname($_SERVER["SERVER_NAME"]);
      return $server_ip;
    }

    //下载文件
    function file_Download($file_url , $file_dir , $file_name = null){
      if($file_name == null){
            $file_name = basename($file_url);
      }
      if(file_put_contents($file_dir . $file_name , file_get_contents($file_url)) != false){
            return true;
      }
      return false;
    }

    //获取字符串中的网址
    function getUrl($str){
      preg_match_all('/http:[\/]{2}+[.]{1}+[.]{1}*[\/]**[\/]**/',$str,$array2);
      preg_match_all('/https:[\/]{2}+[.]{1}+[.]{1}*[\/]**[\/]**/',$str,$array1);
      $array3 = array($array1,$array2);
      
      return $array3;
    }

    //通过度仙门网的API发送邮件
    function DXM_SendMail($mail_address , $mail_username , $mail_subject , $mail_text){
      $token = $GLOBALS["_CONFIG"]["main"]["mail"]["api_token"];
      return file_get_contents("https://www.duxianmen.com/api/mail/index.php?mail_address=".$mail_address."&mail_subject=".urlencode($mail_subject)."&username=".urlencode($mail_username)."&mail_text=".urlencode($mail_text)."&token=".$token);
    }

    //根据时间输出问候内容
    function getGreet($time = null){
      if(is_null($time)){
            $time = time();
      }
      date_default_timezone_set('Asia/Shanghai');
      $h = date("H",$time);
      if($h<11) return "Hi!早上好~";
      else if($h<13) return "Hi!中午好~";
      else if($h<17) return "Hi!下午好~";
      else return "Hi!晚上好~";
    }

    //获取文件后缀名
    function get_file_extension($file_name) {
      return substr(strrchr($file_name,'.'),1);
    }

    //基于exec方法执行多个命令
    function MultiLineCommand($CommandGroup){
      if(!is_array($CommandGroup)){
            return YaoGuang\ErrorGroup::ERROR_NOT_ARRAY;
      }
      foreach($CommandGroup as $key => $value){
            $command = $value;
            exec($command , $output , $code);
            $return[$key]["return"] = $output;
            $return[$key]["code"] = $code;
            unset($output);
            unset($code);
      }
      return $return;
    }

    //以POST请求URL
    function file_post_contents($url , $data){

      $curl = curl_init(); // 启动一个CURL会话

      curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查
      curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在
      curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'); // 模拟用户使用的浏览器
      //curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
      //curl_setopt($curl, CURLOPT_AUTOREFERER, 1);// 自动设置Referer
      curl_setopt($curl, CURLOPT_POST, 1);       // 发送一个常规的Post请求
      curl_setopt($curl, CURLOPT_POSTFIELDS, $data);// Post提交的数据包x
      curl_setopt($curl, CURLOPT_TIMEOUT, 30);   // 设置超时限制 防止死循环
      curl_setopt($curl, CURLOPT_HEADER, 0);      // 显示返回的Header区域内容
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);// 获取的信息以文件流的形式返回

      //发送请求
      $tmpInfo = curl_exec($curl);
      //关闭会话
      curl_close($curl);
      return $tmpInfo;
    }

    //给文件大小加上单位,且精确到两位小数 (请传入经过filesize方法处理的数据).
    function format_filesize($size){
      $length = strlen($size);
      if($length < 4){
            $return = array($size , "B");
      }elseif($length < 8){
            $return = array($size/1024 , "KB");
      }elseif($length < 12){
            $return = array($size/1048576 , "MB");
      }elseif($length < 16){
            $return = array($size/1073741824 , "GB");
      }elseif($length < 20){
            $return = array($size/1099511627776 , "TB");
      }elseif($length < 24){
            $return = array($size/1125899906842624 , "PB");
      }else{
            $return = false;
      }
      if($return != false){
            $return = number_format($return , 2);
      }
      return $return;
    }

    //将文件以流的形式输出到浏览器,建议不要输出大文件
    function fileflow_download($file_path , $file_name = null){
      //源文件名
      $source_file_name = basename($file_path);
      if(is_null($file_name)){
            $file_name = $source_file_name;
      }
      //检查文件是否存在
      if(!file_exists($file_path)){
            http_response_code(404);
      }else{
            //定义HTTP返回头
            header ("Content-type: application/octet-stream");
            header ("Accept-Ranges: bytes");
            header ("Accept-Length: ".filesize($file_path));
            header ("Content-Disposition: attachment; filename=".$file_name);
            //以只读和二进制模式打开文件
            $file = fopen($file_path , "rb");
            //读取文件内容并直接输出到浏览器
            echo fread($file , filesize($file_path));
            fclose($file);
      }
    }

    //获取HTTP表头数据
    function get_all_headers(){
      $headers = array();
      foreach($_SERVER as $key => $value){
            if(substr($key, 0, 5) === 'HTTP_'){
                $key = substr($key, 5);
                $key = str_replace('_', ' ', $key);
                $key = str_replace(' ', '-', $key);
                $key = strtolower($key);
                $headers[$key] = $value;
            }
      }
      return $headers;
    }

    //发送使用curl发送http请求,可自定义header请求头和post数据
    function tocurl($url , $header , $content){
      $ch = curl_init();
      if(substr($url , 0 , 5) == 'https'){
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);
      }
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
      curl_setopt($ch, CURLOPT_POST, true);
      curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($content));
      $response = curl_exec($ch);
      if($error = curl_error($ch)){
            die($error);
      }
      curl_close($ch);
      return $response;
    }

    //获取URL的状态码
    function get_http_state($url){
      $ch = curl_init();
      if(substr($url , 0 , 5) == 'https'){
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
      }
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_HEADER, TRUE);
      curl_setopt($ch, CURLOPT_NOBODY, TRUE);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
      $head = curl_exec($ch);
      $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
      curl_close($ch);
      return $httpCode;
    }
页: [1]
查看完整版本: 封装好的一些PHP方法,低阶修士可以直接拿去用