首页
关于
归档
朋友
壁纸
留言
API平台
告白墙
更多
休闲游戏
留言板
练字贴
Layui手册
Search
1
【PHP】PHPoffice/PHPSpreadsheet读取和写入Excel
1,339 阅读
2
【Git】No tracked branch configured for branch master or the branch doesn't exist.
1,038 阅读
3
【Layui】控制页面元素展示隐藏
858 阅读
4
【composer】composer常用命令
787 阅读
5
【PHP】PHP实现JWT生成和验证
769 阅读
默认分类
PHP
ThinkPHP
Laravel
面向对象
设计模式
算法
基础
网络安全
Web
HTML
CSS
JavaScript
jQuery
Layui
VUE
uni-app
Database
MySQL
Redis
RabbitMQ
Nginx
Git
Linux
Soft Ware
Windows
网赚
Go
登录
Search
标签搜索
PHP
函数
方法
类
MySQL
ThinkPHP
OOP
JavaScript
Layui
Web
Linux
Array
设计模式
Git
PHPSpreadsheet
PHPoffice
排序算法
基础
面试题
Windows
小破孩
累计撰写
223
篇文章
累计收到
33
条评论
首页
栏目
默认分类
PHP
ThinkPHP
Laravel
面向对象
设计模式
算法
基础
网络安全
Web
HTML
CSS
JavaScript
jQuery
Layui
VUE
uni-app
Database
MySQL
Redis
RabbitMQ
Nginx
Git
Linux
Soft Ware
Windows
网赚
Go
页面
关于
归档
朋友
壁纸
留言
API平台
告白墙
休闲游戏
留言板
练字贴
Layui手册
搜索到
219
篇与
的结果
2022-06-17
【MySQL】MySQL命令总结
完整的创建数据库例子: >create database db_test default character set utf8 collate utf8_general_ci; >use db_test; >CREATE TABLE tb_user( >id INT(10) NOT NULL AUTO_INCREMENT COMMENT"主键", >name VARCHAR(20) NOT NULL COMMENT"姓名", >age INT(3) DEFAULT 0, >PRIMARY KEY(id) >) COMMENT"用户表"; 其他有关命令: 1,启动和关闭数据库 >net start mysql >net stop mysql 所以命令必须是一行的第一个,并且以分号结尾: All text commands must be first on line and end with ";" 2,根据用户名密码,登录数据库 >mysql -uroot -p; 如果数据库没有密码则使用 >mysql -uroot; 3,查看在当前服务器中有多少个数据库 >show databases; 4,删除某个数据库 >drop database databaseName; >commit; 5,创建数据库 >CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 更改数据库的字符编码 ALTER DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 6,选择使用某个数据库 >use databaseName; 7,查看数据库中有多少的表 >show tables; 8,创建表 >create table tableName( id int(10) NOT NULL AUTO_INCREMENT,PRIMARY KEY(id), name varchar(20) ); 9,显示本数据库的所有表 >show tables; 10,显示某一个表 >show create table tableName; 11,显示表结构 >describe tableName; (或者简写: desc tableName;) 12,向表中加入数据并查看 >insert into tableName(id,name...) values('1','admin',...); >select * from tableName; 13,导入.sql文件(文件所在路径是F:\file.sql >source F:/file.sql; 14,删除表 >drop table tableName; 15,删除表中的所有数据,但是表结构依然存在 >delete from tableName; 16,更新表中的数据,如果没有where,则将影响所有的记录 >update tableName set name='administrator' where id='1'; 17,查看服务器版本和当前日期 >select version(),current_date; >select version(); >select now(); 18,把mysql作为一个简单的计算器 select pi(); >select pi()*10; 19,查看用户 >select user(); 20,使用load >load data local infile filePath into table tableName; 21,慢日志 查看慢日志是否开启:show variables like '%slow_query_log'; 开启慢日志:set global slow_query_log=1; 查看慢查询时间:show variables like '%long_query_time%'; 修改慢查询时间:set global long_query_time=2;//两秒
2022年06月17日
158 阅读
0 评论
0 点赞
2022-06-17
【MySQL】MySQL中批量替换某个字段的部分数据
1.修改字段里的所有含有指定字符串的文字 UPDATE 表A SET 字段B = replace(字段B, 'aaa', 'bbb') example: update table set url= replace(url, 'aaa', 'bbb') 【将url字段中的aaa批量更改为bbb】 update table set url= REPLACE (url,'3','1.png') where 条件; 2.常规条件修改: update table set column='' where column is null
2022年06月17日
175 阅读
0 评论
0 点赞
2022-06-17
【MySQL】MySQL添加用户、删除用户与授权
MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 1.1 登录MYSQL: @>mysql -u root -p @>密码 1.2 创建用户: mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("1234")); 这样就创建了一个名为:test 密码为:1234 的用户。 注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。 1.3 然后登录一下: mysql>exit; @>mysql -u test -p @>输入密码 mysql>登录成功 2.为用户授权 授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"; 2.1 登录MYSQL(有ROOT权限),这里以ROOT身份登录: @>mysql -u root -p @>密码 2.2 首先为用户创建一个数据库(testDB): mysql>create database testDB; 2.3 授权test用户拥有testDB数据库的所有权限(某个数据库的所有权限): mysql>grant all privileges on testDB.* to test@localhost identified by '1234'; mysql>flush privileges;//刷新系统权限表 格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"; 2.4 如果想指定部分权限给一用户,可以这样来写: mysql>grant select,update on testDB.* to test@localhost identified by '1234'; mysql>flush privileges; //刷新系统权限表 2.5 授权test用户拥有所有数据库的某些权限: mysql>grant select,delete,update,create,drop on *.* to test@"%" identified by "1234"; //test用户对所有数据库都有select,delete,update,create,drop 权限。 //@"%" 表示对所有非本地主机授权,不包括localhost。(localhost地址设为127.0.0.1,如果设为真实的本地地址,不知道是否可以,没有验证。) //对localhost授权:加上一句grant all privileges on testDB.* to test@localhost identified by '1234';即可。 3. 删除用户 @>mysql -u root -p @>密码 mysql>Delete FROM user Where User='test' and Host='localhost'; mysql>flush privileges; mysql>drop database testDB; //删除用户的数据库 删除账户及权限:>drop user 用户名@'%'; >drop user 用户名@ localhost; 4. 修改指定用户密码 @>mysql -u root -p @>密码 mysql>update mysql.user set password=password('新密码') where User="test" and Host="localhost"; mysql>flush privileges; 5. 列出所有数据库 mysql>show database; 6. 切换数据库 mysql>use '数据库名'; 7. 列出所有表 mysql>show tables; 8. 显示数据表结构 mysql>describe 表名; 9. 删除数据库和数据表 mysql>drop database 数据库名; mysql>drop table 数据表名;
2022年06月17日
181 阅读
0 评论
0 点赞
2022-06-17
【Web】CSS常用内容及解释
CSS 选择器 基本选择器grif *通配符:匹配所有的html标记,所有吊机都会改变的 标签选择器:将其匹配指定的html标记 class选择器:给一类HTML标记加样式。这里所指的“一类”是:每个HTML标记都有一个class属性,且class的值一样。class属性是公共属性,每个HTML标记都有 id选择器:给指定id的元素添加样式。网页中HTML标记的id属性的值,必须是唯一的。 组合选择器 多元素选择器:给多个元素加同一个样式,多个选择器之间用“,”隔开 后代选择器 给某个标签的某个后代元素加样式,选择器之间用空格隔开 子元素选择器:给某个元素的子元素添加样式举例:div > h1.title{color:red;} css尺寸属性 width:元素宽度,一定要加px单位 height:元素高度 css字体属性 font-size:字体大小 font-family:字体 font-style:斜体,取值:italic font-weight:粗体,取值,bold css文本属性 color:文本颜色 text-decoration:文本修饰线,取值:none(无),underline(下划线),overline(上划线),line-through(删除线) text-align:文本水平对齐方式,取值:left,center,right line-height:行高,可以用固定值,也可以用百分比 text-indent:首行缩进 letter-spacing:字间距 CSS选择器——基本选择器(单个选择器) 1,通配符“*”:将匹配所有的HTML标记,只要<body>中存在的标记都会生效。 2,标签选择器:对应于HTML标记,有什么样的HTML标记,就有什么样的标签选择器。如:p{color:red;} 3,类选择器:给HTML标记中,class属性值相同的元素,添加样式。命名必须以“.”开头。如:.news{} 4,Id选择器:给HTML标记中,具有id属性的元素,添加样式。唯一性。命名以“#”开头。如:#news{} CSS选择器——组合选择器(多个选择器) 1,多元素选择器:同时给多个元素添加样式,各个选择之间用逗号“,”分开。如:p,h1,#box{} 2,后代元素选择器:给某个元素的所有后代元素,添加样式。用空格隔开。如:#box h1{} 3,子元素选择器:给某个元素的子元素添加样式。用“>”隔开。如:#box > h1{} 一个超链接,有四个状态: 正常状态(:link):鼠标没放上之前链接的样式。 放上状态(:hover):鼠标放到链接上时的样式。 激活状态(:active):按住鼠标左键不松开的样式,这个状态特殊短暂。 访问过的状态(:visited):按下鼠标左键,并弹起,这时的样式效果。 在平常工作中,会使用以下写法,来给链接加不同的样式: a:link, a:visited{ color:#444; text-decoration:none; } //将“正常状态”和“访问过的状态”合二为一。 a:hover{ color:#990000; text-decoration:underline; } //“鼠标放上”单做一种效果 list-style:列表样式,取值:none。去掉项目符号或者编号前面的各种符号 ul li{list-style:none;/*去除前面的符号*/} css边框属性 border-left:左边框线 格式:border-left:粗细 线型 线的颜色 线型:none(无线) solid(实线) dashed(虚线) dotted(点状线) 举例:border-left:5px dashed red; border-right:有边框 border-top:上边框 border-bottom:下边框 /*行内元素没有width和height属性 块级元素才有width和height的属性 */ css内边距属性 padding-left:左内填充距离,左边先到内容间的距离 padding-right:右内填充距离,右边线到内容间的距离 padding-top:上内填充距离,上边线到内容间的距离 padding-bottom:下内填充距离,下边线到内容间的距离 缩写形式 padding:10px;//四个边的内填充分别为10px padding:10px 20px;//上下为10px,左右为20px padding:5px 10px 20px;//上为5px,左右为10px,下为20px padding:5px 10px 15px 20px; //循序是:上右下左(顺时针) css外边距属性 margin-left:左边线往外的距离 margin-right:右边线往外的距离 margin-top:上边线往外的距离 margin-bottom;下边线往外的距离 简写形式 margin:10px;//四个外边距分别为10px margin:10px 20px;//上下外边距10px,左右外边距20px margin:5px 10px 15px;//上外边距5px,左右外边距10px,下外边距15px margin:5px 10px 15px 20px;//上右下左(顺时针方向) css背景属性 background-color:背景颜色 background-image:背景图片 例:background-image:url(路径) background-repeat:背景平铺方式。取值no-repeat(不平铺),repeat-x(水平方向),repeat-y(垂直方向) background-position:背景定位,格式:background-position:水平方向定位,垂直方向定位 英文单词定位:background-position:left|center|right top|center|bottom; 用固定值定位:background-position:50px 50px;//背景距离容器的左边50px,容器的顶端50px 用百分比定位:background-position:50% 50%;//水平居中,垂直居中 用混合定位:background-position:left 10px;//背景靠左边齐,距离容器顶端10px 简写方式: background:背景色 背景图 平铺方式 定位方式 举例:background:url(images/bg.gif) no-repeat center center; 举例:background: #ccc url(images/bg.gif) no-repeat left 10px; css浮动和清除 float:让元素浮动,取值:left(左浮动),right(右浮动) clear:清除浮动,取值:left(清除左浮动),right(清除右浮动),both(同时清除上面的左右浮动) 1、CSS浮动 浮动的元素,将向左或向右浮动,浮动到包围元素的边上,或上一个浮动元素的边上为止。 浮动的元素,不再占空间了,并且,浮动元素的层级要高于普通元素。 浮动的元素,一定是“块元素”。不管它原来是什么元素。 如果浮动的元素,没有指定宽度的话,浮动后它将尽可能的变窄。因此,浮动元素一般要定宽和高。 一行的多个元素,要浮动一起浮动 2、CSS清除浮动 CSS清除浮动的功能有两个:(1)可以包围元素从“视觉上”包住浮动元素(2)清除之下的其它元素将恢复默认排版。 有浮动,就得有清除。 如果包围元素指定了高度了,那么可以不使用清除功能。 css优先级 行内样式》id选择器》class选择器》标签选择器 display属性 功能:规则网页元素如何显示的问题 取值:none(隐藏),block(一块级元素显示),inline(以行内元素显示) block:可以实现将行内元素转换成块级元素 inline:可以实现将块级元素转换成行内元素 overflow属性:当内容溢出时,该如何显示 取值:visible(可见),hidden(隐藏),scroll(出现滚动条),auto(自动) cursor光标类型 取值:text(文本),help(帮助),wait(等待),pointer(手型)等。 css定位 position:元素定位方式 static:静态定位(默认状态,不定位); fixed:固定位置 relative:相对定位 absolute:绝对定位 定位方式要与定位属性配合使用 定位坐标:指定定位的元素,偏移目标元素多远的距离 left:定位元素,距离目标元素左边的距离 top:定位元素,距离目标元素上边的距离 right:定位元素,距离目标元素右边的距离 bottom:定位元素,距离目标元素下边的距离 css表格属性 border-collapse:表格边框线合并,取值:collapse 全局css设置 1、清除所有的标记的内外边距 body,ul,li,a,img,p,input{ margin:0; padding:0; } 2、去除项目符号或编号前面的符号 ul,ol,li{ list-style:none; } 3、全局链接效果 a:link , a:visited{color:#444;text-decoration:none;} a:hover{color:red;} 4、网页中所有的文字大小颜色 body{ font-size:12px; font-family:宋体; color:#ccc; } 5、去除图片的链接边框线 img{border:0;} 6、全局的类样式 .floatL{ float:left; } .floatR{ float:right; } .clear{clear:both;} .blank10{ height:10px; clear:both; } .red{ color:red; } .blue{ color:blue; }
2022年06月17日
197 阅读
0 评论
0 点赞
2022-06-17
【Web】HTML标签大全及使用方法
body常用属性: <body bgColor="#123123" background=""></body> html文本标记 <b></b>:加粗 bold <i></i>:斜体 italic <u></u>:下划线 underline <s></s>:删除线 strike <sup></sup>:上标 <sub></sub>:下标 <font></font>字体标记 size:文子大小1-7,1小,7大 color:颜色值 face: 字体 <p></p>:表示一个段落 align:水平对齐方式,left,center,right <br>:换行标记 <hr>:水平线标记 size:水平线的粗细,单位为px color:水平线的颜色 width:水平线的宽度 noshade:去掉水平线的阴影 <pre></pre>:原封不动的输出 <h1>......<h6>:标题标记 HTML字符实体 空格: < :< > :> & :& ¥ :¥ × :× ÷ :÷ HTML项目符号 无序列表 <ul type="disc(小黑点)|circle(空心圆)|square(实心方块)"> <li>内容</li> <li>内容</li> <li>内容</li> </ul> 有序列表 <ol type="A" start="6">//type:编号类型,取值1,a,A,i,I | start:从第几个开始编号 <li></li> <li></li> <li></li> <li></li> </ol> <marquee></marquee>:滚动字母标记 属性: direction:滚动方向,up,down,left,right width:滚动宽度 height:滚动高度 bgColor:滚动背景颜色 scrollAmount:滚动步长值,值越大,滚动越快 scrollDelay:两步之间的停留时间,以毫秒为单位,一秒=1000毫秒 loop:循环滚动的次数 图片标记:行内元素,单边标记 width:图片宽度 height:图片高度 border:图片边框粗细 src:图片路径(相对路径) align:图片水平对齐方式,取值left,center,right hspace:图片与左右文字之间的距离(水平距离) vspace:图片与上下文字间的距离(垂直距离) 注意: 如果图片相等比例缩放,只需要指定width或者height其中的一个 align属性只能让文本居中,不能让图片单独居中 align可以是实现,图文混排效果,align = "left|right" 超链接:行内元素 常用属性 href:目标文件地址url, target:目标文件显示窗口 _blank:在新窗口中打开目标文件 _self:在当前窗口中打开目标文件(默认) _parent:在父级窗口来打开目标文件 _top:在最顶级窗口来打开目标文件 绝对地址URL 远程绝对地址:如:http://www.baidu.com 本地绝对地址:file:///C:/ 特殊链接 下载链接<a href="images/winrar.rar">下载WinRAR解压缩文件</a> 邮箱链接<a href="mailto:3584685883@qq.com">请给我发邮件</a> 普通空连接<a href="#">普通空连接</a> js链接:添加JS功能代码<a href="javascript:window.close()">关闭窗口</a> 锚点链接:定义记号 命名规则:可以包含字母,数字,下划线,但只能以字母开头 <a href = “文件名#锚点名称”>……</a> 文件名:可有可无。如果是同一个网页的不同部分跳转,不需要文件名;如果是跳到另一个网页的不同部分,这时必须要有文件名。 <meta>标记 http-equiv属性 设置网页的字符<meta http-equiv="Conten-Type" content="text/html;charset=utf-8" /> 网页自动刷新 <meta http-equiv="refresh" content="2">//每隔两秒钟,自动刷新 <meta http-equiv="refresh" content="2;url=http://www.baidu.com">//两秒钟后,调到百度 name属性 <meta name="keywords" content="设置网页搜索的关键字" /> <meta name="direction" content="描述网页信息" /> 表格结构 <table> <tr> <td></td> <td></td> </tr> <tr> <td></td> <td></td> </tr> </table> table属性: width:表格宽度,单位可以是百分比,也可以是固定值 height:表格高度 align:表格水平对齐方式,取值:left,center,right border:边框粗细 bordercolor:边框颜色 bgcolor:表格背景色 background:背景图片url cellpadding:单元格变现到内容间的距离(填充距离) cellspacing:单元格与单元格之间的距离(间距) rules:合并单元格边框线,取值:all tr属性 bgcolor:行的背景色 height:行的高度 align:行中的文本水平居中,取值left,center,right valign:垂直居中,取值:top,middle,bottom <td>或<th>属性 td:普通的单元格,th标题单元格,居中加粗显示 width:单元格宽度 height:单元格高度 bgcolor:单元格背景色 background:单元格背景图片 align:水平对齐 valign:垂直对齐 rowspan:上下单元格合并,合并属性必须放在第一个单元格中 colspan:左右单元格合并,合并时,有增就得有减,要保证每行单元格的个数不变 表单 <form>标技属性-块元素 name:给表单起个名字,对js用来做表单验证 method:表单提交方式,取值get,post action:指表单的处理程序,一般是PHP文件 enctype:指定标点数据的编码方式,这个属性只能用在method="post"的情况下 application/x-www-form-urldecoded//默认的加密方式 multipart/form-data//如果你上传文件,该值必须他自己 get方法和post方法 get方式不能提交敏感数据 get方式只提交少量数据,长度受限 get方式不能上传附件 post提交数据相对安全 post方式可提交海量数据 post方式可以上传附件 单行文本域:<input type="text" 属性="值"> 单行密码域:<input type="password" 属性="值"> name:文本框的名字。可以使字母数字,下划线,只能以字母开头 type:表单元素的类型 value:文本框中的值 size:文本框的长度,以字符为单位 maxlength:最多可以输入多少字符 readonly:只读属性,可以先种,但不能修改readonly="readonly" disabled:禁止属性,不能选中,不能修改disabled="disabled" 单选按钮<input type="radio" 属性="值"> name:元素名称 value:元素值,该value中数据将发往服务器 checked:默认选择那一项 注意:一组单选按钮,只能选择一个,但name的值必须一致。 复选框<input type="checkbox" 属性="值"> name:元素名称 value:元素的值 checked:默认选中 注意:复选框也是一组选项,因此name的值必须一致。在PHP中,使用数组来获取多个同名的name的值。复选框可以同时选多个,也可以一个都不选 下拉列表 <select>:标记的属性,只有一个name属性 <option>:标记的属性有两个:value属性,selected属性 selected:默认选中:selected="selected" 文本域<textarea name="名称" cols="宽度" rows="高度"></textarea> name:元素名称 cols:宽度,是指多少个字符宽 rows:高度,指行高 各种按钮 提交按钮:<input type="submit" name="提交表单" /> 重置按钮:<input type="reset" name="重新填写" /> 图片按钮:<input type="image" src="路径" />//功能就是提交表单,与submit按钮功能一样 普通按钮:<input type="botton" onclick="javascript:window.close()" value="关闭窗口" /> 隐藏域:<input type="hidden" name="名称" value="默认值" /> 长传文件域<input type="file" 属性="属性"> name:表单元素的名称 value:表单元素的值,这个值其实就是上传的文件名 <caption>表格标题 <caption>标记是<table>的子标记,<caption>放在<table>开始标记之后 图片热点(图像地图) 标记结构 <img src="图片地址" usemap="#map" /> <map id="map" name="map"> <area shape="热区形状" coords="热区坐标" href="链接地址" /> <area shape="热区形状" coords="热区坐标" href="链接地址" /> <area shape="热区形状" coords="热区坐标" href="链接地址" /> </map> <area>标记常用的属性 shape:热去的形状,取值:rect(矩形),circle(圆形),polygon(多边形) coords:执区的坐标(位置) 如果shape=rect时,那么,coords="x1,y1,x2,y2",例如:coords="50,50,200,150" (x1,y1)为矩形左上角的坐标值,(x2,y2)为矩形右下角的坐标值 如果shape=circle时,那么,soords="x,y,r",其中(x,y)为圆心坐标,r为半径 <frameset>属性 cols:划分左右型框架 cols = “200,*” //左框架的宽度为200px,剩下的都是右框架的 cols = “180,*,180” //左框架和右框架的宽分别为180px,剩下都是中间框架 cols = “20%,*” //划分框架时,可以用百分比来表示 rows:划分上下行框架 rows = “200,*” //上框架的高度为200px,剩下都是下框架的 rows = “180,*,180” //上框架和下框架高分别为180px,剩下都是中间框架 注意:cols属性和rows属性,每个框架只能用其中一个,不能两个同时用。 frameborder:是否显示框架的边框线,取值:1或0,yes或no border:边框线的粗细 bordercolor:边框颜色 <frame>框架页的属性 src:该小窗口中,默认显示的网页地址 noresize:不能调整小窗口的大小,如:noresize="noresize" scrolling:是否显示滚动条,取值:auto,yes,no name:给当前小窗口起个名字,这个name就是给<a>标记target属性来用的 <noframes>:IE6不支持框架,高版本都支持。 <noframes>对不起,你的电脑太老了,该砸了,换新的!</noframes> 内嵌框架(行内框架,浮动框架):<iframe 属性 = “值”>对不起,你的浏览器版本太低!</iframe> 内嵌框架,相当于在现有的网页中,挖了一个“窟窿”,透过这个“窟窿”可以看见里面内容。 与普通框架的区别:<iframe>是<body>的子标记,因此,它应该放在<body> src:引入文件地址 width:框架的宽度 height:框架的高度 frameborder:是否显示框架的边框线,取值:yes或no scrolling:是否显示滚动条,取值:auto,yes,no name:指定当前小窗口的名称,该名称也是给<a>标记的target属性来用 align:框架在网页中的对齐方式,取值:left,center,right 注意:src引入的文件只能是html文件或php文件,不能是其它文件。 在placeholder里面进行换行 例如:<textarea placeholder="有限公司 服务中心" class="layui-textarea" name="one"></textarea>
2022年06月17日
185 阅读
0 评论
0 点赞
2022-06-17
【PHP】TP5.1框架获取服务器信息
//获取服务器相关信息 $info = [ '操作系统'=>PHP_OS, '运行环境'=>$_SERVER["SERVER_SOFTWARE"], 'PHP运行方式'=>php_sapi_name(), 'ThinkPHP版本'=> 'V'. \think\facade\App::version(), '上传附件限制'=>ini_get('upload_max_filesize'), '执行时间限制'=>ini_get('max_execution_time').'秒', '服务器时间'=>date("Y年n月j日 H:i:s"), '北京时间'=>gmdate("Y年n月j日 H:i:s",time()+8*3600), '服务器所处时区' => date_default_timezone_get(), '服务器域名/IP'=>$_SERVER['SERVER_NAME'].' [ '.gethostbyname($_SERVER['SERVER_NAME']).' ]', '剩余空间'=>round((disk_free_space(".")/(1024*1024)),2).'M', 'register_globals'=>get_cfg_var("register_globals")=="1" ? "ON" : "OFF", 'magic_quotes_gpc'=>(1===get_magic_quotes_gpc())?'YES':'NO', 'magic_quotes_runtime'=>(1===get_magic_quotes_runtime())?'YES':'NO' ]; /** * 获取当前的运行环境 * @return string */ function getHuanjing(){ switch (PHP_SAPI){ case 'fpm-fcgi': return 'nginx+php-fpm'; break; case 'cgi-fcgi': return 'nginx+fastcgi'; break; case 'apache2handler': return 'apache'; break; default: return PHP_SAPI; } } /** * 获取数据库版本 */ function dbVersion(){ $db = think\Db::query('select VERSION()'); return $db[0]['VERSION()']; } /** * 获取最大上传文件大小 */ function get_upload_max_filesize(){ return ini_get('upload_max_filesize'); }
2022年06月17日
288 阅读
1 评论
0 点赞
2022-06-17
【MySQL】MySQL索引失效的几个情况
索引查询失效的几个情况:1、like 以%开头,索引无效;当like前缀没有%,后缀有%时,索引有效。2、or语句前后没有同时使用索引。当or左右查询字段只有一个是索引,该索引失效,只有当or左右查询字段均为索引时,才会生效3、组合索引,不是使用第一列索引,索引失效。4、数据类型出现隐式转化。如varchar不加单引号的话可能会自动转换为int型,使索引无效,产生全表扫描。5、在索引列上使用 IS NULL 或 IS NOT NULL操作。索引是不索引空值的,所以这样的操作不能使用索引,可以用其他的办法处理,例如:数字类型,判断大于0,字符串类型设置一个默认值,判断是否等于默认值即可。(此处是错误的!)在索引列上使用 IS NULL 或 IS NOT NULL操作,索引不一定失效!!!6、在索引字段上使用not,<>,!=。不等于操作符是永远不会用到索引的,因此对它的处理只会产生全表扫描。 优化方法: key<>0 改为 key>0 or key<0。7、对索引字段进行计算操作、字段上使用函数。(索引为 emp(ename,empno,sal))8、当全表扫描速度比索引速度快时,mysql会使用全表扫描,此时索引失效。索引失效分析工具:可以使用explain命令加在要分析的sql语句前面,在执行结果中查看key这一列的值,如果为NULL,说明没有使用索引。
2022年06月17日
200 阅读
0 评论
0 点赞
2022-06-17
【PHP】PHP实现阿拉伯数字转化为大写汉字
class Num2Cny{ static $basical = array(0 => "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); static $advanced = array(1 => "拾", "佰", "仟"); public static function ParseNumber($number){ $number = trim($number); if ($number > 999999999999) return "数字太大,无法处理。抱歉!"; if ($number == 0) return "零"; if (strpos($number, '.')) { $number = round($number, 2); $data = explode(".", $number); $data[0] = self::int($data[0]); $data[1] = self::dec($data[1]); return $data[0] . $data[1]; } else { return self::int($number) . '整'; } } public static function int($number){ $arr = array_reverse(str_split($number)); $data = ''; $zero = false; $zero_num = 0; foreach ($arr as $k => $v) { $_chinese = ''; $zero = ($v == 0) ? true : false; $x = $k % 4; if ($x && $zero && $zero_num > 1) continue; switch ($x) { case 0: if ($zero) { $zero_num = 0; } else { $_chinese = self::$basical[$v]; $zero_num = 1; } if ($k == 8) { $_chinese .= '亿'; } elseif ($k == 4) { $_chinese .= '万'; } break; default: if ($zero) { if ($zero_num == 1) { $_chinese = self::$basical[$v]; $zero_num++; } } else { $_chinese = self::$basical[$v]; $_chinese .= self::$advanced[$x]; } } $data = $_chinese . $data; } return $data . '元'; } public static function dec($number){ if (strlen($number) < 2) $number .= '0'; $arr = array_reverse(str_split($number)); $data = ''; $zero_num = false; foreach ($arr as $k => $v) { $zero = ($v == 0) ? true : false; $_chinese = ''; if ($k == 0) { if (!$zero) { $_chinese = self::$basical[$v]; $_chinese .= '分'; $zero_num = true; } } else { if ($zero) { if ($zero_num) { $_chinese = self::$basical[$v]; } } else { $_chinese = self::$basical[$v]; $_chinese .= '角'; } } $data = $_chinese . $data; } return $data; } } 使用方法 Num2Cny::ParseNumber($number); 注意:命名空间,访问方法,接受的$number数据验证
2022年06月17日
205 阅读
0 评论
0 点赞
2022-06-17
【PHP】PHP实现表格转换成数组
/** * @Author:小破孩 * @Time:2020/07/20 11:42 * @param $table 表格html代码 * @return mixed * @Description: 表格转数组 */ function tableArr($table){ $table = preg_replace("'<table[^>]*?>'si", "", $table); $table = preg_replace("'<tr[^>]*?>'si", "", $table); $table = preg_replace("'<td[^>]*?>'si", "", $table); $table = str_replace("</tr>", "{tr}", $table); $table = str_replace("</td>", "{td}", $table); //去掉 HTML 标记 $table = preg_replace("'<[/!]*?[^<>]*?>'si", "", $table); //去掉空白字符 $table = preg_replace("'([rn])[s]+'", "", $table); $table = preg_replace('/ /', "", $table); $table = str_replace(" ", "", $table); $table = str_replace(" ", "", $table); $table = explode('{tr}', $table); array_pop($table); foreach ($table as $key => $tr) { $td = explode('{td}', $tr); array_pop($td); $td_array[] = $td; } return $td_array; }
2022年06月17日
260 阅读
0 评论
0 点赞
2022-06-17
【PHP】PHP常见header头
//200 正常状态 header('HTTP/1.1 200 OK'); // 301 永久重定向,记得在后面要加重定向地址 Location:$url header('HTTP/1.1 301 Moved Permanently'); // 重定向,其实就是302 暂时重定向 header('Location: http://www.maiyoule.com/'); // 设置页面304 没有修改 header('HTTP/1.1 304 Not Modified'); // 显示登录框, header('HTTP/1.1 401 Unauthorized'); header('WWW-Authenticate: Basic realm="登录信息"'); echo '显示的信息!'; // 403 禁止访问 header('HTTP/1.1 403 Forbidden'); // 404 错误 header('HTTP/1.1 404 Not Found'); // 500 服务器错误 header('HTTP/1.1 500 Internal Server Error'); // 3秒后重定向指定地址(也就是刷新到新页面与 <meta http-equiv="refresh" content="10;http://www.maiyoule.com/ /> 相同) header('Refresh: 3; url=http://www.maiyoule.com/'); echo '10后跳转到http://www.maiyoule.com'; // 重写 X-Powered-By 值 header('X-Powered-By: PHP/5.3.0'); header('X-Powered-By: Brain/0.6b'); //设置上下文语言 header('Content-language: en'); // 设置页面最后修改时间(多用于防缓存) $time = time() - 60; //建议使用filetime函数来设置页面缓存时间 header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT'); // 设置内容长度 header('Content-Length: 39344'); // 设置头文件类型,可以用于流文件或者文件下载 header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="example.zip"'); header('Content-Transfer-Encoding: binary'); readfile('example.zip');//读取文件到客户端 //禁用页面缓存 header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Pragma: no-cache'); //设置页面头信息 header('Content-Type: text/html; charset=iso-8859-1'); header('Content-Type: text/html; charset=utf-8'); header('Content-Type: text/plain'); header('Content-Type: image/jpeg'); header('Content-Type: application/zip'); header('Content-Type: application/pdf'); header('Content-Type: audio/mpeg'); header('Content-Type: application/x-shockwave-flash'); //.... 至于Content-Type 的值 可以去查查 w3c 的文档库,那里很丰富
2022年06月17日
173 阅读
0 评论
0 点赞
2022-06-17
【PHP】PHP实现加密和解密
/** * @Author:小破孩 * @Time: 2020/7/21 16:51 * @param $txt 加密的文本 * @param string $key * @return string * @Description:加密 */ function lock_url($txt,$key='abcd'){ $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+"; $nh = rand(0,64); $ch = $chars[$nh]; $mdKey = md5($key.$ch); $mdKey = substr($mdKey,$nh%8, $nh%8+7); $txt = base64_encode($txt); $tmp = ''; $i=0;$j=0;$k = 0; for ($i=0; $i<strlen($txt); $i++) { $k = $k == strlen($mdKey) ? 0 : $k; $j = ($nh+strpos($chars,$txt[$i])+ord($mdKey[$k++]))%64; $tmp .= $chars[$j]; } return urlencode($ch.$tmp); } /** * @Author:小破孩 * @Time: 2020/7/21 16:51 * @param $txt 解密的文本 * @param string $key * @return false|string * @Description:解密 */ function unlock_url($txt,$key='abcd'){ $txt = urldecode($txt); $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+"; $ch = $txt[0]; $nh = strpos($chars,$ch); $mdKey = md5($key.$ch); $mdKey = substr($mdKey,$nh%8, $nh%8+7); $txt = substr($txt,1); $tmp = ''; $i=0;$j=0; $k = 0; for ($i=0; $i<strlen($txt); $i++) { $k = $k == strlen($mdKey) ? 0 : $k; $j = strpos($chars,$txt[$i])-$nh - ord($mdKey[$k++]); while ($j<0) $j+=64; $tmp .= $chars[$j]; } return base64_decode($tmp); } 更新/** * @Author: 小破孩嫩 * @Email: 3584685883@qq.com * @Time: 2021/3/26 17:59 * @param string $key * @param $string * @return string * @Description:加密 */ public function encryption($txt,$key='sflksdfpds456f4s4f9sd4fsd54fs9847d4ds4sd4fs'){ $txt = $txt.$key; $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+"; $nh = rand(0,64); $ch = $chars[$nh]; $mdKey = md5($key.$ch); $mdKey = substr($mdKey,$nh%8, $nh%8+7); $txt = base64_encode($txt); $tmp = ''; $i=0;$j=0;$k = 0; for ($i=0; $i<strlen($txt); $i++) { $k = $k == strlen($mdKey) ? 0 : $k; $j = ($nh+strpos($chars,$txt[$i])+ord($mdKey[$k++]))%64; $tmp .= $chars[$j]; } return urlencode(base64_encode($ch.$tmp)); } /** * @Author: 小破孩嫩 * @Email: 3584685883@qq.com * @Time: 2021/3/26 17:59 * @param string $key * @param $string * @return string * @Description:解密 */ public function decryption($txt,$key='sflksdfpds456f4s4f9sd4fsd54fs9847d4ds4sd4fs'){ $txt = base64_decode(urldecode($txt)); $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+"; $ch = $txt[0]; $nh = strpos($chars,$ch); $mdKey = md5($key.$ch); $mdKey = substr($mdKey,$nh%8, $nh%8+7); $txt = substr($txt,1); $tmp = ''; $i=0;$j=0; $k = 0; for ($i=0; $i<strlen($txt); $i++) { $k = $k == strlen($mdKey) ? 0 : $k; $j = strpos($chars,$txt[$i])-$nh - ord($mdKey[$k++]); while ($j<0) $j+=64; $tmp .= $chars[$j]; } return trim(base64_decode($tmp),$key); } 更新/** * @Author: 小破孩嫩 * @Email: 3584685883@qq.com * @Time: 2021/3/29 10:10 * @param $string * @param string $operation * @param string $key * @return false|string|string[] * @Description:函数encrypt($string,$operation,$key)中$string:需要加密解密的字符串;$operation:判断是加密还是解密,E表示加密,D表示解密;$key:密匙。 */ public function encryption($string,$operation = 'E',$key='sflksdfpds456f4s4f9sd4fsd54fs9847d4ds4sd4fs'){ $key=md5($key); $key_length=strlen($key); $string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string; $string_length=strlen($string); $rndkey=$box=array(); $result=''; for($i=0;$i<=255;$i++){ $rndkey[$i]=ord($key[$i%$key_length]); $box[$i]=$i; } for($j=$i=0;$i<256;$i++){ $j=($j+$box[$i]+$rndkey[$i])%256; $tmp=$box[$i]; $box[$i]=$box[$j]; $box[$j]=$tmp; } for($a=$j=$i=0;$i<$string_length;$i++){ $a=($a+1)%256; $j=($j+$box[$a])%256; $tmp=$box[$a]; $box[$a]=$box[$j]; $box[$j]=$tmp; $result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256])); } if($operation=='D'){ if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8)){ return substr($result,8); }else{ return''; } }else{ return str_replace('=','',base64_encode($result)); } } 更新/** * @Author: 小破孩嫩 * @Email: 3584685883@qq.com * @Time: 2021/3/29 10:11 * @param $string 字符串,明文或密文; * @param string $operation DECODE表示解密,其它表示加密; * @param string $key 密匙; * @param int $expiry 密文有效期 * @return false|string * @Description:非常给力的authcode加密函数,Discuz!经典代码(带详解) */ public function encryption($string, $operation = 'DECODE', $key = 'sflksdfpds456f4s4f9sd4fsd54fs9847d4ds4sd4fs', $expiry = 0) { // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙 $ckey_length = 4; // 密匙 $key = md5($key ? $key : $GLOBALS['discuz_auth_key']); // 密匙a会参与加解密 $keya = md5(substr($key, 0, 16)); // 密匙b会用来做数据完整性验证 $keyb = md5(substr($key, 16, 16)); // 密匙c用于变化生成的密文 $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : ''; // 参与运算的密匙 $cryptkey = $keya.md5($keya.$keyc); $key_length = strlen($cryptkey); // 明文,前10位用来保存时间戳,解密时验证数据有效性,10到26位用来保存$keyb(密匙b), //解密时会通过这个密匙验证数据完整性 // 如果是解码的话,会从第$ckey_length位开始,因为密文前$ckey_length位保存 动态密匙,以保证解密正确 $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string; $string_length = strlen($string); $result = ''; $box = range(0, 255); $rndkey = array(); // 产生密匙簿 for($i = 0; $i <= 255; $i++) { $rndkey[$i] = ord($cryptkey[$i % $key_length]); } // 用固定的算法,打乱密匙簿,增加随机性,好像很复杂,实际上对并不会增加密文的强度 for($j = $i = 0; $i < 256; $i++) { $j = ($j + $box[$i] + $rndkey[$i]) % 256; $tmp = $box[$i]; $box[$i] = $box[$j]; $box[$j] = $tmp; } // 核心加解密部分 for($a = $j = $i = 0; $i < $string_length; $i++) { $a = ($a + 1) % 256; $j = ($j + $box[$a]) % 256; $tmp = $box[$a]; $box[$a] = $box[$j]; $box[$j] = $tmp; // 从密匙簿得出密匙进行异或,再转成字符 $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); } if($operation == 'DECODE') { // 验证数据有效性,请看未加密明文的格式 if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) { return substr($result, 26); } else { return ''; } } else { // 把动态密匙保存在密文里,这也是为什么同样的明文,生产不同密文后能解密的原因 // 因为加密后的密文可能是一些特殊字符,复制过程可能会丢失,所以用base64编码 return $keyc.str_replace('=', '', base64_encode($result)); } }
2022年06月17日
187 阅读
0 评论
0 点赞
2022-06-17
【PHP】PHP判断是否是URL
<?php function isUrl($s){ return preg_match('/^http[s]?:\/\/'. '(([0-9]{1,3}\.){3}[0-9]{1,3}'. // IP形式的URL- 199.194.52.184 '|'. // 允许IP和DOMAIN(域名) '([0-9a-z_!~*\'()-]+\.)*'. // 三级域验证- www. '([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.'. // 二级域验证 '[a-z]{2,6})'. // 顶级域验证.com or .museum '(:[0-9]{1,4})?'. // 端口- :80 '((\/\?)|'. // 如果含有文件对文件部分进行校验 '(\/[0-9a-zA-Z_!~\*\'\(\)\.;\?:@&=\+\$,%#-\/]*)?)$/', $s) == 1; } $url = "https://www.baidu.com"; if(isUrl($url)){ echo 11; }else{ echo 00; } ?>
2022年06月17日
114 阅读
0 评论
0 点赞
2022-06-17
【PHP】PHP解决跨域
解决跨域问题 // 指定允许其他域名访问 //header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']); header('Access-Control-Allow-Origin: *'); // 响应类型 header('Access-Control-Allow-Methods:POST'); // 响应头设置 header('Access-Control-Allow-Headers:x-requested-with,content-type'); //允许cookie 跨域(跨域资源共享) header('Access-Control-Allow-Credentials: true'); //万能解决跨域问题 header("Access-Control-Allow-Origin: *"); header('Access-Control-Allow-Methods:*'); header('Access-Control-Allow-Headers:*'); header("Access-Control-Request-Headers: *");
2022年06月17日
127 阅读
0 评论
0 点赞
2022-06-17
【PHP】PHP查看两个数组值的区别
/** * @param $arr1 提交的参数 * @param $arr2 查到的参数 * @return array 返回值 * @description 查看数组值的区别 */ function diffArray($arr1 , $arr2 ){ $arrRet = array(); #针对关联数组 if(is_assoc($arr1) && is_assoc($arr2) ){ if (empty($arr1)) { $arr1 = array(); } if (empty($arr2)) { $arr2 = array(); } foreach ($arr1 as $key => $value){ if(!in_array($key, array_keys($arr2))){ if(!array_key_exists($key, $arrRet)){ array_push($arrRet, $key); } continue; } if($arr1[$key] !== $arr2[$key]){ if(!array_key_exists($key, $arrRet)){ array_push($arrRet, $key); } } #针对元素为数组的情况 if(is_array($value)){ array_merge($arrRet,diffArray($value,$arr2[$key])); } } }elseif(is_assoc($arr1)===false && is_assoc($arr2)===false) {#针对索引数组 $arrRet = array_merge(array_diff($arr1, $arr2),array_diff($arr2, $arr1)); }else { new Exception("数组类型不一致!"); } return $arrRet; } /** * @param $arr * @return bool|int * 判断是否是索引数组 */ function is_assoc($arr) { if(!is_array($arr)) return -1; return !(array_values($arr) === $arr); }
2022年06月17日
92 阅读
0 评论
0 点赞
2022-06-17
【PHP】PHP多维数组转一维数组
function multi2array($array) { static $result_array = array(); foreach ($array as $key => $value) { if (is_array($value)) { multi2array($value); } else{ $result_array[] = $value; } } return $result_array; } function _arr($array,$return=[]){ array_walk_recursive($array,function($value)use(&$return){$return[]=$value;}); return $return; }
2022年06月17日
218 阅读
0 评论
0 点赞
2022-06-17
【PHP】使用PHP根据用户的IP地址获取地址信息
/** * @Author:小破孩 * @Time: 2020/7/15 15:17 * @Description:用户登录记录 */ 'bd_ak' => 'yr0Rm***************24HruOyGE', //百度地图的ak function get_client_city(){ $ip = get_client_ip(); //调用上面的函数进行获取IP地址 $ak = Config('app.bd_ak'); ///申请的ak $url = file_get_contents("http://api.map.baidu.com/location/ip?ip=$ip&ak=$ak"); //调用百度地图开放接口 $res = json_decode($url,true); //数据处理 $data['login_ip'] = $ip; //ip $data['login_xy'] = $res['content']['point']['x'].','.$res['content']['point']['y'];//坐标 $data['login_province'] = $res['content']['address_detail']['province']; //省 $data['login_city'] = $res['content']['address_detail']['city']; //市 $data['login_district'] = $res['content']['address_detail']['district'];//区 $data['login_street'] = $res['content']['address_detail']['street']; //街 $data['login_street_number'] = $res['content']['address_detail']['street_number']; //街道编号 $data['login_city_code'] = $res['content']['address_detail']['city_code']; //城市编号 $data['login_create_time'] = time(); //入库 Db::name('login_log')->insert($data); } //表 CREATE TABLE `login_log` ( `login_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户登录记录主键', `login_user_number` bigint(20) NOT NULL COMMENT '用户编号', `login_ip` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户登录的ip', `login_xy` varchar(60) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '登录的坐标点', `login_province` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '登录省', `login_city` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '登录城市', `login_district` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '区', `login_street` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '街', `login_street_number` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '街道编号', `login_city_code` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '城市编号', `login_type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '用户登录类型 0平台用户,1前台用户', `login_create_time` bigint(20) NOT NULL COMMENT '创建时间', PRIMARY KEY (`login_id`,`login_user_number`), KEY `login_create_time` (`login_create_time`) COMMENT '时间索引 搜索', KEY `login_type` (`login_type`) COMMENT '类型' ) ENGINE=MyISAM AUTO_INCREMENT=163 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='用户登录记录';
2022年06月17日
175 阅读
0 评论
0 点赞
2022-06-17
【PHP】PHP获取服务器状态
<?php function get_server_status() { $fp = popen('top -b -n 2 | grep -E "^(Cpu|Mem|Tasks)"', "r");//获取某一时刻系统cpu和内存使用情况 $rs = ""; while (!feof($fp)) { $rs .= fread($fp, 1024); } pclose($fp); $sys_info = explode("\n", $rs); $tast_info = explode(",", $sys_info[3]);//进程 数组 $cpu_info = explode(",", $sys_info[4]); //CPU占有量 数组 $mem_info = explode(",", $sys_info[5]); //内存占有量 数组 //正在运行的进程数 $tast_running = trim(trim($tast_info[1], 'running')); //CPU占有量 $cpu_usage = trim(trim($cpu_info[0], 'Cpu(s): '), '%us'); //百分比 //内存占有量 $mem_total = trim(trim($mem_info[0], 'Mem: '), 'k total'); $mem_used = trim($mem_info[1], 'k used'); $mem_usage = round(100 * intval($mem_used) / intval($mem_total), 2); //百分比 /*硬盘使用率 begin*/ $fp = popen('df -lh | grep -E "^(/)"', "r"); $rs = fread($fp, 1024); pclose($fp); $rs = preg_replace("/\s{2,}/", ' ', $rs); //把多个空格换成 “_” $hd = explode(" ", $rs); $hd_avail = trim($hd[3], 'G'); //磁盘可用空间大小 单位G $hd_usage = trim($hd[4], '%'); //挂载点 百分比 /*硬盘使用率 end*/ //检测时间 $fp = popen("date +\"%Y-%m-%d %H:%M\"", "r"); $rs = fread($fp, 1024); pclose($fp); $detection_time = trim($rs); $result = [ 'cpu_usage' => $cpu_usage, 'mem_usage' => $mem_usage, 'hd_avail' => $hd_avail, 'hd_usage' => $hd_usage, 'tast_running' => $tast_running, 'detection_time' => $detection_time ]; return $result; }
2022年06月17日
167 阅读
0 评论
0 点赞
2022-06-17
【PHP】PHP获取网页里的所有图片
<?php $new_url = []; $url="网页地址"; //file_get_contents() 函数把整个文件读入一个字符串中 $string=file_get_contents($url); //preg_match_all函数进行全局正则表达式匹配。 preg_match_all("/<img[^>]*>/i", $string,$matches); //去除数组中重复的值 $new_arr=array_unique($matches[0]); foreach($new_arr as $key){ //查找img标签内的src内容 preg_match_all('/<img.*?src="(.*?)".*?>/is',$key,$match); //根据网页图片后缀可以灵活修改 $one = str_replace('?v1', '', $match[1][0]); //插入数组 array_push($new_url,$url.$one); } //下载并保存图片 function download($downurl, $path = 'images/'){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $downurl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); $file = curl_exec($ch); curl_close($ch); $filename = pathinfo($downurl, PATHINFO_BASENAME); $resource = fopen($path . $filename, 'a'); fwrite($resource, $file); fclose($resource); } //循环下载 foreach ( $new_url as $url ) { download($url); } ?>
2022年06月17日
185 阅读
0 评论
0 点赞
2022-06-17
【Windows】小白装windows系统教程
此教程装系统简单,也有一定弊端大家多多讨论.大神勿喷。。。。。。准备:1.一个至少8G的空优盘(空优盘,不要pe!不要pe!不要pe!)2.能下载东西的电脑下载一个原版得iso文件:1.百度msdn点第一个,进去,也就是网址:http://msdn.itellyou.cn/进去以后选操作系统,选windowns 10,Version 1607选择中文-简体,里面选第一个出现迅雷链接。ed2k://|file|cn_windows_10_multiple_editions_version_1607_updated_jan_2017_x64_dvd_9714394.iso|4747692032|27841B07666580185078EE62915191A1|/,复制,然后打开迅雷下载下载完以后会出现如图文件右键解压进空优盘(或者先解压到电脑上再复制进优盘,这样快一点)弄好以后是如下图的样子,注意文件在优盘根目录下(很重要)重要!!!教开UEFI:开机按F2(蓝天模具)进bios,按右到boot,然后最下面UEFI Setting,回车进去以后第一个,回车,Disabled是关闭,Enabled是开启.推荐开UEFI装win10.选完按f4保存插好优盘开机按F7(蓝天模具),出现如下图画面,选优盘按回车(图中第二个是优盘)进入优盘以后出现以下画面:点下一步选现在安装有激活码的就填好,没有激活码的就选择我没有这里大部分人应该选专业版和微软签订条约这里很重要,要选自定义这里比较麻烦了,如果是新硬盘,直接点新建,以前的硬盘的话,建议全部删除再新建,有人出现驱动器用不了的情况,是因为硬盘格式不对.也需要全部删除再新建删除完以后变成这个样子然后点新建,大小就大概是C盘的大小.通常给C盘80G(不要太小!win10经常更新)如图82000M大概就是80G(80X1024M,然后还要给引导什么的留一点空间)出来这个点确定然后出来这么多区,默认会选好C盘让你点下一步.下面还有未分配的空间,可以在这里直接分好DEF,不过建议先不分,进了系统再分,不然选错了就麻烦了点了下一步就开始装系统了,安心等就好了重启了,继续等进来了!这里选跳过↓↓↓↓↓这里选使用快速设置写一个用户名,一般我写hasee,点下一步马上就进系统了进桌面只有一个回收站右击桌面,个性化,主题,桌面图标,把我的电脑,用户,和网络调出来系统激活推荐淘宝几块钱买个码小马激活也可以然后就开始装驱动了↓↓百度2345好压,为了一会解压驱动用百度出来一堆链接一定要去官网下载,不容易有别的流氓软件装好解压工具以后网址输出:http://www.hasee.com(手机进不去)进入神舟官网首页往下拉点下载中心↓↓↓↓然后把你电脑型号输入进去,查找,建议模糊输出,只输出前几个,比如Z7,Z6,Z7M,K680,这样找到你的型号,进入下载界面然后进去选择win10,全部下载了,再解压了,安装就好了setup是安装的意思完!!!!!图文地址文档:小白装WIN10系统教程.note链接:http://note.youdao.com/noteshare?id=53da0df840740327707c4a6d94e84eb5&sub=4A2F802F9DC54A569E29DF4F2DFA7D71
2022年06月17日
253 阅读
0 评论
0 点赞
1
...
10
11