[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}[a-z]+[.]{1}[a-z\d\-]+[.]{1}[a-z\d]*[\/]*[A-Za-z\d]*[\/]*[A-Za-z\d]*/',$str,$array2);
preg_match_all('/https:[\/]{2}[a-z]+[.]{1}[a-z\d\-]+[.]{1}[a-z\d]*[\/]*[A-Za-z\d]*[\/]*[A-Za-z\d]*/',$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[0] = number_format($return[0] , 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;
}