function GetIP(){
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$cip = $_SERVER["HTTP_CLIENT_IP"];
}elseif(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){
$cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}elseif(!empty($_SERVER["REMOTE_ADDR"])){
$cip = $_SERVER["REMOTE_ADDR"];
}else{
$cip = "";
}
return $cip;
}
function HttpRequest($url, $type = 'get', $data = '',$timeout = 10,$header = array())
{$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
if (strtoupper($type) == 'POST') {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_ENCODING , 'gzip');
$result['response'] = curl_exec($ch);
$result['status']=curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $result;
}
function SaveLog($content = '', $filename = 'others')
{
$rootDir = \Config::get('app.rootDir');
$logdir = $rootDir . '/app/storage/logs/';
if (!is_dir($logdir)) mkdir($logdir, 0777, true);
$filename = $filename.'_'.date('ymd');
$filename = $logdir . $filename . ".log";
$fp = fopen($filename, "a+");
$line = 1;
while (stream_get_line($fp, 8192, "\n")) {
$line++;
}
if ($line > 9999) {
file_put_contents($filename, '');
$line = 1;
}
$info = '<' . sprintf("%04d", $line) . '>' . date("Y-m-d H:i:s") . '<>';
$string = $info . str_replace("\n", "", str_replace("\r", "", $content)) . "\r\n";
file_put_contents($filename, $string, FILE_APPEND);
fclose($fp);
}
/**
* 获取或保存文件内容
* @param string $filedir 文件路径
* @param string $content 文件内容
* @return string
*/
function FileContent($filedir = '', $content = '')
{
if (empty($filedir)) return '';
if (empty($content)) {
if (file_exists($filedir)) {
$fp = fopen($filedir, "r");
$content = file_get_contents($filedir);
fclose($fp);
return $content;
} else {
return '';
}
} else {
$fps = fopen($filedir, "a");
file_put_contents($filedir, $content);
fclose($fps);
return true;
}
}

最新文章

  1. Contributing to the C++ Core Guidelines
  2. Changing SID Server 2012
  3. JavaScript-BOM-history:保存当前窗口打开后成功访问过的url历史记录栈
  4. Unity5中叹为观止的实时GI效果
  5. 第二次作业----自学c++的选择与计划
  6. IOS 中frame与bounds的区别
  7. mysql免安装版使用
  8. githup在线预览demo
  9. Qemu之Network Device全虚拟方案三: I/O虚拟化
  10. jQuery MiniUI
  11. 自定义底部导航栏(tabBar)
  12. (工具类)double类型数据运算
  13. phpstudy运行时出现没有安装VC库
  14. [angularjs] angularjs系列笔记(四)过滤器
  15. Sitecore xDB基础知识 - 识别用户,联系人,访客,客户
  16. 七种常见的核酸序列蛋白编码能力预测工具 | ncRNAs | lncRNA
  17. [Eclipse]在重命令文件名时,提示编码格式有问题导致修改失败,需要设置如下几个默认编码为UTF-8
  18. 【代码审计】ThinkSNS_V4 任意文件下载漏洞分析
  19. dbt- 数据构建工具
  20. OSM

热门文章

  1. 3. Shell 基本运算符
  2. Oracle教程-常用命令(二)
  3. sql 判断表是否存在,判断列是否存在
  4. 【第四篇】androidEventbus源代码阅读和分析
  5. Hive基础学习
  6. c++ lower_bound upper_bound
  7. php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证及缺点
  8. /etc/rc.local 与 /etc/init.d Linux 开机自动运行程序
  9. Linux系统的信号详解
  10. oracle数据库的数据类型