平时遇到的常用方法
$pathname = APP_PATH . '/../public/upload/personal/qrcode/dao_fans/';
if(!is_dir($pathname)) { //若目录不存在则创建之
mkdir($pathname,0777,true);
}
fputs(fopen('支付宝支付异步日志.txt','a+'),json_encode($arr).PHP_EOL);
/** * 打印日志 * $msg 日志内容 */ function printLog($type,$msg,$id) { if (!is_dir('log')){ mkdir('log',0777,true); } switch ($type) { case 1: //任务协作 $path="log/rwxz/".date('Y-m-d').".log"; break; case 2: // 账号监控 $path="log/zhjk/".date('Y-m-d').".log"; break; case 3: // 监控问题 $path="log/jkwt/".date('Y-m-d').".log"; break; case 4: // 统计排名-单条录入 $path="log/tjpm_dt/".date('Y-m-d').".log"; break; case 5: // 统计排名-账号录入 $path="log/tjpm_zh/".date('Y-m-d').".log"; break; case 6: // 监控问题 10分钟更新一次 $path="log/crontab/jkwt/".date('Y-m-d').".log"; break; case 7: // 任务协作-定时 每分钟一次 $path="log/crontab/task/".date('Y-m-d').".log"; break; case 8: // 统计排名更新实际 240分钟 $path="log/crontab/tjpm/".date('Y-m-d').".log"; break; case 9: // 账号监控,每天0点更新一次 $path="log/crontab/zhjk/".date('Y-m-d').".log"; break; // case 10: // // 任务协作-定时 每分钟一次 // $path="log/crontab/task/".date('Y-m-d').".log"; break; default: // 如果 n 既不等于 label1 也不等于 label2,此处代码将执行; } file_put_contents($path, "【" . date('Y-m-d H:i:s') . "】". '主键id 或 url地址: ' .$id ." ;" . $msg . "\r\n\r\n", FILE_APPEND); }
-----------------------------------------------------------------------------------------------------------------------------------------------------------
读取json文件
demo1.json文件 :
{
"code": 0
,"msg": ""
,"count": 3000000
,"data": [{
"id": "10001"
,"username": "杜甫"
,"email": "xianxin@layui.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "点击此处,显示更多。当内容超出时,点击单元格会自动显示更多内容。"
,"experience": "116"
,"ip": "192.168.0.8"
,"logins": "108"
,"joinTime": "2016-10-14"
}, {
"id": "10002"
,"username": "李白"
,"email": "xianxin@layui.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "君不见,黄河之水天上来,奔流到海不复回。 君不见,高堂明镜悲白发,朝如青丝暮成雪。 人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。 烹羊宰牛且为乐,会须一饮三百杯。 岑夫子,丹丘生,将进酒,杯莫停。 与君歌一曲,请君为我倾耳听。(倾耳听 一作:侧耳听) 钟鼓馔玉不足贵,但愿长醉不复醒。(不足贵 一作:何足贵;不复醒 一作:不愿醒/不用醒) 古来圣贤皆寂寞,惟有饮者留其名。(古来 一作:自古;惟 通:唯) 陈王昔时宴平乐,斗酒十千恣欢谑。 主人何为言少钱,径须沽取对君酌。 五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。"
,"experience": "12"
,"ip": "192.168.0.8"
,"logins": "106"
,"joinTime": "2016-10-14"
,"LAY_CHECKED": true
}, {
"id": "10003"
,"username": "王勃"
,"email": "xianxin@layui.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": "65"
,"ip": "192.168.0.8"
,"logins": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10004"
,"username": "李清照"
,"email": "xianxin@layui.com"
,"sex": "女"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": "666"
,"ip": "192.168.0.8"
,"logins": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10005"
,"username": "冰心"
,"email": "xianxin@layui.com"
,"sex": "女"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": "86"
,"ip": "192.168.0.8"
,"logins": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10006"
,"username": "贤心"
,"email": "xianxin@layui.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": "12"
,"ip": "192.168.0.8"
,"logins": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10007"
,"username": "贤心"
,"email": "xianxin@layui.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": "16"
,"ip": "192.168.0.8"
,"logins": "106"
,"joinTime": "2016-10-14"
}, {
"id": "10008"
,"username": "贤心"
,"email": "xianxin@layui.com"
,"sex": "男"
,"city": "浙江杭州"
,"sign": "人生恰似一场修行"
,"experience": "106"
,"ip": "192.168.0.8"
,"logins": "106"
,"joinTime": "2016-10-14"
}]
}
//读取json文件
$path = EXTEND_PATH."demo1.json";
$data = json_decode(file_get_contents($path),true);


-------------------------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------------------------------
thinkphp5.0 / thinkphp5.1 index.php文件中
// 支持事先使用静态方法设置Request对象和Config对象 //extend目录 define('DS', DIRECTORY_SEPARATOR); defined('APP_PATH') or define('APP_PATH', dirname($_SERVER['SCRIPT_FILENAME']) . DS); defined('ROOT_PATH') or define('ROOT_PATH', dirname(realpath(APP_PATH)) . DS); defined('VENDOR_PATH') or define('VENDOR_PATH', ROOT_PATH . 'vendor' . DS); defined('EXTEND_PATH') or define('EXTEND_PATH', ROOT_PATH . 'extend' . DS); defined('PUBLIC_PATH') or define('PUBLIC_PATH', ROOT_PATH . 'public' . DS); defined('RUNTIME_PATH') or define('RUNTIME_PATH', ROOT_PATH . 'runtime' . DS); defined('LOG_PATH') or define('LOG_PATH', RUNTIME_PATH . 'log' . DS); defined('CACHE_PATH') or define('CACHE_PATH', RUNTIME_PATH . 'cache' . DS); //缓存地址 cache //defined('TEMP_PATH') or define('TEMP_PATH', RUNTIME_PATH . 'temp' . DS);
-----------------------------------------------------------------------------------------------------------------------------
$where = ['fromid'=>$fromid,'toid'=>$toid];
$whereOr = ['fromid'=>$toid,'toid'=>$fromid];
$data = Db::name('ht_workerman_communication')
->where(function($query) use ($where){
$query->where($where);
})
->whereOr(function($query) use ($whereOr){
$query->where($whereOr);
})
->select();
$map1 = [
['users_id', 'like',$bei_users_id],
['fans_users_id', 'like', $arr['users_id']],
];
$map2 = [
['users_id', 'like', $arr['users_id']],
['fans_users_id', 'like', $bei_users_id],
];
$res = Db::name('ht_bind_users')
->whereOr([$map1,$map2])
->find();
-------------------------------------------------------------方框样式--------------------------------------------------------

box-shadow: 0 0px 8px 0 rgba(0, 0, 0, 0.06), 0 1px 0px 0 rgba(0, 0, 0, 0.02);
-webkit-border-radius: 5px;
border-radius: 5px;
.feifei-solid-logo-banner {
margin: 18px auto 30px;
border-radius: 16px;
padding: 28px 24px 28px 48px;
box-shadow: 0 3px 6px 0 rgba(0, 0, 0, .1);
}
--------------------------------------------------------------------------------------------------------------------------------
php url去掉http , https
$str=preg_replace('#^http(s)?://#',"",$domain_name);
foreach ($order_buy_info as $k => $v)
{
try{
if($v['trade_type'] == 1){
//微信支付--退款是 微信
//微信退款
$this->return_money($v['id']);
}elseif ($v['trade_type'] == 2){
//支付宝支付 ---退款是 支付宝
$this->zfb_refund($v['id']);
}
}catch (\Exception $e){
echo $e->getMessage();
$data = [
'error'=> $e->getMessage(),
'wx_order_buy_id'=> $v['id'],
];
fputs(fopen('支付宝退款捕获异常.txt','a+'),json_encode($data).PHP_EOL);
}
sleep(1);
}
//监听提交
form.on('submit(demo1)', function (data) {
// var index = layer.msg('正在检测中...', {icon: 16,shade: [0.5, '#f5f5f5'],scrollbar: false,offset: 'auto', time:false });
if(data.field.domain_name == ""){
layer.msg("域名不能为空!");
return false;
}
if(data.field.word_by_domain == ""){
layer.msg("关键词不能为空!");
return false;
}
//数组 checkbox 复选框,数组 search_type_id
//获取复选框,多选,组成的数组
var arr_box = [];
$('input[type=checkbox]:checked').each(function() {
arr_box.push($(this).val());
});
// console.log(arr_box);
localStorage.setItem("key", arr_box);
let word_by_domain = data.field.word_by_domain;
let word_by_domain1 = word_by_domain.replace(/(^\s*)|(\s*$)/g, ""); //去左右空格
snsArr = word_by_domain1.split(/[(\r\n)\r\n]+/); //根据换行符变成数组 关键词数组
let arr_length = snsArr.length;
// console.log(typeof arr_length);
if(arr_length > 200){
layer.msg("超过了最大关键词数200个");
}
//域名
let domain_name = data.field.word_by_domain;
//分组
let word_group_id = data.field.word_group_id;
for(let item of snsArr)
{
console.log(item);
$.ajax({
type:'post',
url:"{:url('agent/demo/index')}",
async: false,//是否为同步
// data:data.field,
data:{word_by_domain:item,search_type_id:arr_box,domain_name:domain_name,word_group_id:word_group_id},
success:function (res) {
console.log(res);
},
error:function(e)
{
//错误的关键词,打标记,不调接口,直接入库
$.ajax({
type: 'post',
url: "{:url('agent/demo/index11')}",
data: {word_by_domain: item},
success: function (res) {
console.log(res);
},
});
console.log('请求失败:',item);
}
})
}
// console.log(data.field);
// $.ajax({
// type:'post',
// url:"{:url('agent/demo/index')}",
// data:data.field,
// async : false,//是否为同步
// success:function (res) {
// console.log(res);
//
// // if(res.status == 200){
// //
// // layer.close(index);
// // table.render({
// // elem: '#currentTableId',
// // url: "{:url('agent/diy_word/json_list')}",
// // toolbar: '#toolbarDemo',
// // defaultToolbar: [ 'exports', {
// // title: '提示',
// // layEvent: 'LAYTABLE_TIPS',
// // icon: 'layui-icon-tips'
// // }],
// // title: '自定义添加关键词列表',
// // cols: [[
// // {type: "checkbox", width: 50, fixed: 'left'},
// // {field: 'key_id', width: 80, title: 'ID', sort: true, fixed: 'left'},
// // {field: 'is_api_status', width: 120, title: '查询状态', templet: function(res){
// // if(res.is_api_status == 1) {
// // return '<span style="color: blue">成功</span>'
// // }else{
// // return '<span style="color: red">失败</span>'
// // }
// // }
// // },
// // {field: 'is_buy_status', width: 120, title: '订单状态', templet: function(res){
// // if(res.is_buy_status == 1) {
// // return '<span style="color: blue">已下单</span>'
// // }else{
// // return '<span style="color: red">待下单</span>'
// // }
// // }
// // },
// // {field: 'domain_name', width: 200, title: '域名'},
// // {field: 'search_type_name', width: 130, title: '搜索引擎'},
// // {field: 'word_by_domain', width: 180, title: '关键词'},
// // // {field: 'rank', width: 100, title: '排名'},
// // {field: 'index', width: 100, title: '指数'},
// // {field: 'price', width: 100, title: '价格'},
// // // {field: 'create_time', width: 180, title: '创建时间'},
// // {fixed: 'right',title: '操作', minWidth: 150, toolbar: '#currentTableBar', align: "center"}
// // ]],
// // limits: [10, 15, 20, 25, 50, 100],
// // limit: 20,
// // page: true,
// // id: 'testReload',
// // parseData: function(res){ //将原始数据解析成 table 组件所规定的数据
// // return {
// // "code": res.code, //解析接口状态
// // "msg": res.msg, //解析提示文本
// // "count": res.count, //解析数据长度
// // "data": res.data.data //解析数据列表
// // };
// // },
// // where: {
// // //传值 startDate : startDate,
// // domain_name:data.field.domain_name,
// // search_type_id:arr_box
// // },
// // request: {
// // pageName: 'page' // 页码的参数名称,默认:page
// // , limitName: 'size' //每页数据量的参数名,默认:limit
// // //页码和显示数量
// // }
// // });
// //
// //
// // }else if(res.status == 400) {
// // layer.close(index);
// // layer.msg(res.msg,{time: 1200,offset: '200px' },function () {
// // //location.reload()
// // })
// // }else if(res.status == 10001){
// // layer.close(index);
// // layer.msg(res.msg,{time:1200,offset:'200px'},function () {
// // // location.reload()
// // })
// // }
// }
// });
return false;
});
//监听提交 form.on('submit(demo1)', function (data) { var index = layer.msg('正在检测中...', {icon: 16,shade: [0.5, '#f5f5f5'],scrollbar: false,offset: 'auto', time:false }); if(data.field.domain_name == ""){ layer.msg("域名不能为空!"); return false; } if(data.field.word_by_domain == ""){ layer.msg("关键词不能为空!"); return false; } //数组 checkbox 复选框,数组 search_type_id //获取复选框,多选,组成的数组 var arr_box = []; $('input[type=checkbox]:checked').each(function() { arr_box.push($(this).val()); }); // console.log(arr_box); localStorage.setItem("key", arr_box); let word_by_domain = data.field.word_by_domain; let word_by_domain1 = word_by_domain.replace(/(^\s*)|(\s*$)/g, ""); //去左右空格 snsArr = word_by_domain1.split(/[(\r\n)\r\n]+/); //根据换行符变成数组 关键词数组 let arr_length = snsArr.length; // console.log(typeof arr_length); if(arr_length > 200){ layer.msg("超过了最大关键词数200个"); } //域名 let domain_name = data.field.domain_name; //分组 let word_group_id = data.field.word_group_id; //开始时间戳 let start_time = Date.parse(new Date()); $.ajax({ type: 'post', url: "{:url('agent/diy_word/delete_old_data')}", data:data.field, success: function (res) { // console.log(res); if(res.status == 200){ for(let item of snsArr) { // console.log(item); $.ajax({ type:'post', url:"{:url('agent/diy_word/save_diy')}", async: false,//这里设置为同步请求 // data:data.field, data:{word_by_domain:item,search_type_id:arr_box,domain_name:domain_name,word_group_id:word_group_id}, success:function (res) { }, error:function(e) { //错误的关键词,打标记,不调接口,直接入库 // $.ajax({ // type: 'post', // url: "{:url('agent/demo/index11')}", // data: {word_by_domain: item}, // success: function (res) { // console.log(res); // }, // }); console.log('请求失败:',item); } }) } //for 循环完成之后,再把数据库里面数据调出来,展示 layer.close(index); table.render({ elem: '#currentTableId', url: "{:url('agent/diy_word/json_list')}", toolbar: '#toolbarDemo', defaultToolbar: [ 'exports', { title: '提示', layEvent: 'LAYTABLE_TIPS', icon: 'layui-icon-tips' }], title: '自定义添加关键词列表', cols: [[ {type: "checkbox", width: 50, fixed: 'left'}, {field: 'key_id', width: 80, title: 'ID', sort: true, fixed: 'left'}, {field: 'is_api_status', width: 120, title: '查询状态', templet: function(res){ if(res.is_api_status == 1) { return '<span style="color: blue">成功</span>' }else{ return '<span style="color: red">失败</span>' } } }, {field: 'is_buy_status', width: 120, title: '订单状态', templet: function(res){ if(res.is_buy_status == 1) { return '<span style="color: blue">已下单</span>' }else{ return '<span style="color: red">待下单</span>' } } }, {field: 'domain_name', width: 200, title: '域名'}, {field: 'search_type_name', width: 130, title: '搜索引擎'}, {field: 'word_by_domain', width: 180, title: '关键词'}, // {field: 'rank', width: 100, title: '排名'}, {field: 'index', width: 100, title: '指数'}, {field: 'price', width: 100, title: '价格'}, // {field: 'create_time', width: 180, title: '创建时间'}, {fixed: 'right',title: '操作', minWidth: 150, toolbar: '#currentTableBar', align: "center"} ]], limits: [10, 15, 20, 25, 50, 100], limit: 20, page: true, id: 'testReload', parseData: function(res){ //将原始数据解析成 table 组件所规定的数据 return { "code": res.code, //解析接口状态 "msg": res.msg, //解析提示文本 "count": res.count, //解析数据长度 "data": res.data.data //解析数据列表 }; }, where: { //传值 startDate : startDate, domain_name:data.field.domain_name, search_type_id:arr_box }, request: { pageName: 'page' // 页码的参数名称,默认:page , limitName: 'size' //每页数据量的参数名,默认:limit //页码和显示数量 } }); let end_time = Date.parse(new Date()); // console.log('for 循环结束'); console.log(('耗时: '+(end_time-start_time)/1000)+' s'); }else { layer.msg('接口失败',{time:500},function () { location.reload() }); } }, }); // console.log(data.field); // $.ajax({ // type:'post', // url:"{:url('agent/demo/index')}", // data:data.field, // async : false,//是否为同步 // success:function (res) { // console.log(res); // // // if(res.status == 200){ // // // // layer.close(index); // // table.render({ // // elem: '#currentTableId', // // url: "{:url('agent/diy_word/json_list')}", // // toolbar: '#toolbarDemo', // // defaultToolbar: [ 'exports', { // // title: '提示', // // layEvent: 'LAYTABLE_TIPS', // // icon: 'layui-icon-tips' // // }], // // title: '自定义添加关键词列表', // // cols: [[ // // {type: "checkbox", width: 50, fixed: 'left'}, // // {field: 'key_id', width: 80, title: 'ID', sort: true, fixed: 'left'}, // // {field: 'is_api_status', width: 120, title: '查询状态', templet: function(res){ // // if(res.is_api_status == 1) { // // return '<span style="color: blue">成功</span>' // // }else{ // // return '<span style="color: red">失败</span>' // // } // // } // // }, // // {field: 'is_buy_status', width: 120, title: '订单状态', templet: function(res){ // // if(res.is_buy_status == 1) { // // return '<span style="color: blue">已下单</span>' // // }else{ // // return '<span style="color: red">待下单</span>' // // } // // } // // }, // // {field: 'domain_name', width: 200, title: '域名'}, // // {field: 'search_type_name', width: 130, title: '搜索引擎'}, // // {field: 'word_by_domain', width: 180, title: '关键词'}, // // // {field: 'rank', width: 100, title: '排名'}, // // {field: 'index', width: 100, title: '指数'}, // // {field: 'price', width: 100, title: '价格'}, // // // {field: 'create_time', width: 180, title: '创建时间'}, // // {fixed: 'right',title: '操作', minWidth: 150, toolbar: '#currentTableBar', align: "center"} // // ]], // // limits: [10, 15, 20, 25, 50, 100], // // limit: 20, // // page: true, // // id: 'testReload', // // parseData: function(res){ //将原始数据解析成 table 组件所规定的数据 // // return { // // "code": res.code, //解析接口状态 // // "msg": res.msg, //解析提示文本 // // "count": res.count, //解析数据长度 // // "data": res.data.data //解析数据列表 // // }; // // }, // // where: { // // //传值 startDate : startDate, // // domain_name:data.field.domain_name, // // search_type_id:arr_box // // }, // // request: { // // pageName: 'page' // 页码的参数名称,默认:page // // , limitName: 'size' //每页数据量的参数名,默认:limit // // //页码和显示数量 // // } // // }); // // // // // // }else if(res.status == 400) { // // layer.close(index); // // layer.msg(res.msg,{time: 1200,offset: '200px' },function () { // // //location.reload() // // }) // // }else if(res.status == 10001){ // // layer.close(index); // // layer.msg(res.msg,{time:1200,offset:'200px'},function () { // // // location.reload() // // }) // // } // } // }); return false; });


网页布局总结:
通过盒子模型,清楚知道大部分html标签是一个盒子。
通过CSS浮动、定位可以让每个盒子排列成为网页。
一个完整的网页,是标准流、浮动、定位一起完成布局的,每个都有自己的专有用法。
1.标准流
可以让盒子上下排列或者左右排列,【垂直的块级盒子显示就用标注流布局】
2.浮动
可以让多个块级元素一行显示或者左右对齐盒子,【多个块级盒子水平显示就用浮动布局】
3.定位
定位最大的特点是有层叠的概念,就是可以让多个盒子前后叠压来显示。【如果元素自由在某个盒子内移动就用定位布局】
vertical-align 属性应用

溢出的文字省略号显示
1.单行文本溢出显示省略号--必须满足三个条件
/* 这个单词的意思是如果文字显示不开自动换行 */
/* white-space: normal */
/* 1. 先强制一行内显示文本 | 这个单词的意思是如果文字显示不开也必须强制一行内显示 */
white-space:nowrap; (默认 normal自动换行)
/* 2. 超出的部分隐藏 */
overflow:hidden;
/* 3. 文字用省略号替代超出的部分 */
text-overflow:ellipsis;
2.多行文本溢出显示省略号
多行文本溢出显示省略号,有较大的兼容性问题,适合于webKit浏览器或移动端(移动端大部分是webKit内核)
overflow:hidden;
text-overflow:ellipsis;
/* 弹性伸缩盒子模型显示 */
display: -webkit-box;
/*限制在一个块元素显示的文本的行数 */
-webkit-line-clamp:2;
/* 设置或检索伸缩盒对象的子元素的排列方式 */
-webkit-box-orient:verical;


CSS3盒子模型
CSS3的可以通过box-sizing来指定盒模型,有2个值:即可指定为content-box、border-box,这样我们计算盒子的大小方式就发生了改变。
可以分成两种情况:
1、box-sizing:content-box 盒子大小为 width + padding + border (以前默认的)
2、box-sizing:border-box 盒子大小为 width
如果盒子模型我们改变为了box-sizing:border-box,那padding和border就不会撑大盒子了(前提padding和border不会超过width宽度)
HTML5 新增的语义化标签 <header> : 头部标签 <nav>: 导航标签 <article> : 内容标签 <section> : 定义文档某个区域 <aside> : 侧边栏标签 <footer>: 尾部标签 CSS3 过渡 transition:要过渡的属性 花费时间 运动曲线 何时开始; 1.属性:想要变化的css 属性,宽度高度 背景颜色 内外边距都可以,如果想要所有的属性都变化 过渡,写一个all就可以。 2.花费时间:单位是秒(必须写单位) 比如0.5s 3.运动曲线:默认是 ease(可以省略) 4.何时开始:单位是 秒(必须写单位) 可以设置延迟触发时间 默认是0s(可以省略) 记住过渡的使用口诀:谁做过渡给谁加 [ transition: all 0.5s; ] [ transition: width 0.5s,height 0.5s;
css3中旋转:
<input type="checkbox" name="text" id=""> 注册协议 <br> <input type="checkbox" name="text" id="" style="vertical-align: middle;"> 全部勾选

浙公网安备 33010602011771号