云锁报毒,请各位大牛看看
代码如下
<?php
header("Content-type:text/html;charset=utf-8");
/**
* @param $dir string 目录路径
* @return bool
*/
function mkd($dir) {
return is_dir($dir) or mkd(dirname($dir)) and mkdir($dir, 0777);
}
/**
+-----------------------------------------------------------------------------------------
* 删除目录及目录下所有文件或删除指定文件
+-----------------------------------------------------------------------------------------
* @param str $path 待删除目录路径
* @param int $delDir 是否删除目录,1或true删除目录,0或false则只删除文件保留目录(包含子目录)
+-----------------------------------------------------------------------------------------
* @return bool 返回删除状态
+-----------------------------------------------------------------------------------------
*/
function delDirAndFile($path, $delDir = FALSE) {
if (is_array($path)) {
foreach ($path as $subPath)
delDirAndFile($subPath, $delDir);
}
if (is_dir($path)) {
$handle = opendir($path);
if ($handle) {
while (false !== ( $item = readdir($handle) )) {
if ($item != "." && $item != "..")
is_dir("$path/$item") ? delDirAndFile("$path/$item", $delDir) : unlink("$path/$item");
}
closedir($handle);
if ($delDir)
return rmdir($path);
}
} else {
if (file_exists($path)) {
return unlink($path);
} else {
return FALSE;
}
}
clearstatcache();
}
function getFile($url, $save_dir = '', $filename = '', $type = 1) {
if (trim($url) == '') {
return false;
}
if (trim($save_dir) == '') {
$save_dir = './';
}
if (0 !== strrpos($save_dir, '/')) {
$save_dir.= '/';
}
//创建保存目录
if (!file_exists($save_dir) && !mkdir($save_dir, 0777, true)) {
return false;
}
//获取远程文件所采用的方法
if ($type) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$content = curl_exec($ch);
curl_close($ch);
} else {
ob_start();
readfile($url);
$content = ob_get_contents();
ob_end_clean();
}
$size = strlen($content);
//文件大小
$fp2 = @fopen($save_dir . $filename, 'a');
fwrite($fp2, $content);
fclose($fp2);
unset($content, $url);
return array(
'file_name' => $filename,
'save_path' => $save_dir . $filename
);
}
function checkauth(){
}
/**
* @param $path string 文件路径 删除指定文件或者文件夹
*/
function delete($path){
if(is_file($path)){
file_exists($path) && unlink($path);
}elseif(is_dir($path)){
$list = scandir($path);
array_shift($list);
array_shift($list);
foreach ($list as $k => $v){
delete(rtrim($path,'/') . '/' . $v);
}
rmdir($path);
}
}
//加密函数
function encrypt($data, $k = null)
{
$key = $k ? $k : C('OWN_KEY');
$str = '';
$char = '';
$key = md5($key);
$x = 0;
$len = strlen($data);
$l = strlen($key);
for ($i = 0; $i < $len; $i++) {
if ($x == $l) {
$x = 0;
}
$char .= $key{$x};
$x++;
}
for ($i = 0; $i < $len; $i++) {
$str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);
}
return base64_encode($str);
}
//解密函数
function decrypt($data, $k = null)
{
$key = $k ? $k : C('OWN_KEY');
$str = '';
$char = '';
$key = md5($key);
$x = 0;
$data = base64_decode($data);
$len = strlen($data);
$l = strlen($key);
for ($i = 0; $i < $len; $i++) {
if ($x == $l) {
$x = 0;
}
$char .= substr($key, $x, 1);
$x++;
}
for ($i = 0; $i < $len; $i++) {
if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))) {
$str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
} else {
$str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
}
}
return $str;
}
//自定义token
function getToken()
{
$token = md5(uniqid(rand(), true));
session('token', $token);
return $token;
}
//判断token
function checkToken($token)
{
$t = session('token');
session('token', null);
return $token == $t ? true : false;
}
//传递数据以易于阅读的样式格式化后输出
function p($data)
{
// 定义样式
$str = '<pre style="display: block;padding: 9.5px;margin: 44px 0 0 0;font-size: 13px;line-height: 1.42857;color: #333;word-break: break-all;word-wrap: break-word;background-color: #F5F5F5;border: 1px solid #CCC;border-radius: 4px;">';
// 如果是boolean或者null直接显示文字;否则print
if (is_bool($data)) {
$show_data = $data ? 'true' : 'false';
} elseif (is_null($data)) {
$show_data = 'null';
} else {
$show_data = print_r($data, true);
}
$str .= $show_data;
$str .= '</pre>';
echo $str;
}
/**
* 返回文件格式
* @param string $str 文件名
* @return string 文件格式
*/
function file_format($str)
{
// 取文件后缀名
$str = strtolower(pathinfo($str, PATHINFO_EXTENSION));
// 图片格式
$image = array('webp', 'jpg', 'png', 'ico', 'bmp', 'gif', 'tif', 'pcx', 'tga', 'bmp', 'pxc', 'tiff', 'jpeg', 'exif', 'fpx', 'svg', 'psd', 'cdr', 'pcd', 'dxf', 'ufo', 'eps', 'ai', 'hdri');
// 视频格式
$video = array('mp4', 'avi', '3gp', 'rmvb', 'gif', 'wmv', 'mkv', 'mpg', 'vob', 'mov', 'flv', 'swf', 'mp3', 'ape', 'wma', 'aac', 'mmf', 'amr', 'm4a', 'm4r', 'ogg', 'wav', 'wavpack');
// 压缩格式
$zip = array('rar', 'zip', 'tar', 'cab', 'uue', 'jar', 'iso', 'z', '7-zip', 'ace', 'lzh', 'arj', 'gzip', 'bz2', 'tz');
// 文档格式
$text = array('exe', 'doc', 'ppt', 'xls', 'wps', 'txt', 'lrc', 'wfs', 'torrent', 'html', 'htm', 'java', 'js', 'css', 'less', 'php', 'pdf', 'pps', 'host', 'box', 'docx', 'word', 'perfect', 'dot', 'dsf', 'efe', 'ini', 'json', 'lnk', 'log', 'msi', 'ost', 'pcs', 'tmp', 'xlsb');
// 匹配不同的结果
switch ($str) {
case in_array($str, $image):
return 'image';
break;
case in_array($str, $video):
return 'video';
break;
case in_array($str, $zip):
return 'zip';
break;
case in_array($str, $text):
return 'text';
break;
default:
return 'image';
break;
}
}
/**
* 发送友盟推送消息
* @param integer $uid 用户id
* @param string $title 推送的标题
* @return boolear 是否成功
*/
function umeng_push($uid, $title)
{
// 获取token
$device_tokens = D('OauthUser')->getToken($uid, 2);
// 如果没有token说明移动端没有登录;则不发送通知
if (empty($device_tokens)) {
return false;
}
// 导入友盟
Vendor('Umeng.Umeng');
// 自定义字段 根据实际环境分配;如果不用可以忽略
$status = 1;
// 消息未读总数统计 根据实际环境获取未读的消息总数 此数量会显示在app图标右上角
$count_number = 1;
$data = array(
'key' => 'status',
'value' => "$status",
'count_number' => $count_number
);
// 判断device_token 64位表示为苹果 否则为安卓
if (strlen($device_tokens) == 64) {
$key = C('UMENG_IOS_APP_KEY');
$timestamp = C('UMENG_IOS_SECRET');
$umeng = new \Umeng($key, $timestamp);
$umeng->sendIOSUnicast($data, $title, $device_tokens);
} else {
$key = C('UMENG_ANDROID_APP_KEY');
$timestamp = C('UMENG_ANDROID_SECRET');
$umeng = new \Umeng($key, $timestamp);
$umeng->sendAndroidUnicast($data, $title, $device_tokens);
}
return true;
}
/**
* 返回用户id
* @return integer 用户id
*/
function get_uid()
{
return $_SESSION['user']['id'];
}
/**
* 字符串截取,支持中文和其他编码
* @param string $str 需要转换的字符串
* @param string $start 开始位置
* @param string $length 截取长度
* @param string $suffix 截断显示字符
* @param string $charset 编码格式
* @return string
*/
function re_substr($str, $start = 0, $length, $suffix = true, $charset = "utf-8")
{
if (function_exists("mb_substr"))
$slice = mb_substr($str, $start, $length, $charset);
elseif (function_exists('iconv_substr')) {
$slice = iconv_substr($str, $start, $length, $charset);
} else {
$re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
$re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
$re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
preg_match_all($re[$charset], $str, $match);
$slice = join("", array_slice($match[0], $start, $length));
}
$omit = mb_strlen($str) >= $length ? '...' : '';
return $suffix ? $slice . $omit : $slice;
}
/**
* 取得根域名
* @param type $domain 域名
* @return string 返回根域名
*/
function get_url_to_domain($domain)
{
$re_domain = '';
$domain_postfix_cn_array = array("com", "net", "org", "gov", "edu", "com.cn", "cn");
$array_domain = explode(".", $domain);
$array_num = count($array_domain) - 1;
if ($array_domain[$array_num] == 'cn') {
if (in_array($array_domain[$array_num - 1], $domain_postfix_cn_array)) {
$re_domain = $array_domain[$array_num - 2] . "." . $array_domain[$array_num - 1] . "." . $array_domain[$array_num];
} else {
$re_domain = $array_domain[$array_num - 1] . "." . $array_domain[$array_num];
}
} else {
$re_domain = $array_domain[$array_num - 1] . "." . $array_domain[$array_num];
}
return $re_domain;
}
/**
* 按符号截取字符串的指定部分
* @param string $str 需要截取的字符串
* @param string $sign 需要截取的符号
* @param int $number 如是正数以0为起点从左向右截 负数则从右向左截
* @return string 返回截取的内容
*/
/* 示例
$str='123/456/789';
cut_str($str,'/',0); 返回 123
cut_str($str,'/',-1); 返回 789
cut_str($str,'/',-2); 返回 456
具体参考 http://www.baijunyao.com/index.php/Ho
...全文
相关推荐
homework2-mpmc
homework2-mpmc
家庭果园种植管理-入门版-清新雅致.docx
家庭果园种植管理-入门版-清新雅致
年终工作总结-互联网-清新雅致.docx
年终工作总结-互联网-清新雅致
高校如何通过技术转移服务提升成果转化率,助力区域创新发展?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
明厨亮灶检测数据集17000张yolo格式划分训练和验证集.zip
数据集说明 样本分类输出(中文):cockroach,hairnet,no_gloves,no_hat,rat,with_mask,without_mask,smoke,phone,overflow,garbage,garbage_bin,chef_uniform,chef_hat 样本分类输出(英文):蟑螂,发网,无手套,无帽子,老鼠,有口罩,无口罩,烟雾,电话,溢出,垃圾,垃圾桶,制服,帽子 样本分类输出数量:14 训练集train: 15195个样本 验证集valid: 2785个样本 训练集和验证集样本比例:约5:1 yolo8训练命令行参考:yolo detect train model=yolov8n.pt data=detect_kitchen/data.yaml batch=32 epochs=1 imgsz=640 device=cuda


基础编程
