PHP学习之道
文章平均质量分 54
学习PHP解释型语言
刘远山
日积月累
展开
-
角色权限把控-用户登录权限把控(五)
用户登录权限把控待完善。。。原创 2020-10-18 23:15:38 · 266 阅读 · 0 评论 -
角色权限把控-后台登录(四)
后台登录1、提交表单时验证码captcha2、MD5登录加密判断3、公共类,后台控制器除了登录类外都继承该初始化类,实现未登录状态下拒绝访问其他控制器登录功能控制器public function index() { if(request()->isPost()){ $data = input('post.'); //第一步:提交表单时验证码captcha if($this->check(原创 2020-10-18 22:36:31 · 441 阅读 · 0 评论 -
角色权限把控-用户规则权限管理(三)
用户规则权限管理用于将用户表manger与规则表auth_rule表关系对应到用户组表auth_group中修改功能控制器//修改 public function update($id) { if(request()->isPost()){ $data = input('post.'); if($data['rules']){ $data['rules'] = implode(','原创 2020-10-18 18:47:39 · 425 阅读 · 2 评论 -
角色权限把控-用户规则权限管理(二)
用户规则权限管理用于将用户表manger与规则表auth_rule表关系对应到用户组表auth_group中难点:选中子类,父类的跟着选中的方法实现,理解模型中根据子类查找父类添加用户权限规则控制器public function add() { if(request()->isPost()){ $data = input('post.'); if($data['rules']){ $dat原创 2020-10-18 17:57:00 · 742 阅读 · 0 评论 -
角色权限把控-规则管理功能实现(一)
角色权限把控说明真对不同的管理员给与不同的权限1、规则管理模块2、管理员拥有的规则管理数据库表创建用户表CREATE TABLE `manger` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(80) NOT NULL, `lastlogin` varchar(80) NOT NULL DEFAULT '0', `num` int(11)原创 2020-10-18 15:44:36 · 809 阅读 · 0 评论 -
无限分类之修改分类
无限分类之修改分类第一步:展示修改栏目信息第二步:接收修改数据(有点事情需要出去趟,判断实现后边补上)注意:判断修改该分类位置时需要考虑该分类id不能等于或小于其子孙分类第三步:存入数据库实现代码public function update($id) { $colum = new ColumModel(); if(Request()->isPost()){ //第二步:接收修改数据 //注意:判断修改该原创 2020-10-17 17:01:03 · 349 阅读 · 0 评论 -
无限分类之删除分类实现原理
无限分类之删除分类实现原理需要注意的一个问题就是删除顶级分类时,该顶级分类下的所有子分类都要删除第一步:点击删除分类名,get传递该栏目id第二步:封装一个前置操作,用于判断该栏目id下是否存在子栏目前置操作beforeActionList为tp5自带方法也就是执行del()删除方法前先执行delson()方法第三步:执行del方法前的方法delson(),用于删除子孙分类id第四步:获取所有父id下的所有子孙分类id,执行方法getChildId()第五步:_getChildId()方法遍原创 2020-10-17 00:16:44 · 318 阅读 · 0 评论 -
无限分类展示详解代码思路与表设计与插入功能
此处以实例文章分类展示讲解第一步:查询所有数据第二步:调用改造数组方法:参入数组、默认根节点0遍历、默认偏移量0第三步:定义static静态数组第四步:foreach遍历数组集第五步:判断变量pid与数组遍历pid是否相等第六步:返回改造好的新数组数据库表设计CREATE TABLE `colum` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `sort` int(11) NOT NUL原创 2020-10-14 00:30:40 · 226 阅读 · 0 评论 -
无限分类下递归某一节点下的所有子孙节点
查找a3下的所有子孙节点参考:https://blog.csdn.net/taoyongjun4/article/details/78847521实例<?php$a = [ ['id'=>1, 'pid'=>0, 'name'=>'a1'], ['id'=>2, 'pid'=>1, 'name'=>'a2'], ['id'=>3, 'pid'=>2, 'name'=>'a3'], ['id'=>4, '原创 2020-10-12 18:08:30 · 353 阅读 · 0 评论 -
MySQLi增删改查实例
mysqli连接 数据库查询单条数据<?php// 假定数据库用户名:root,密码:root,数据库:tianxiangphp_v1.2 $con=mysqli_connect("localhost","root","root","tianxiangphp_v1.2");if (mysqli_connect_errno($con)){ echo "连接 MySQL 失败: " . mysqli_connect_error();}// 执行查询$res = $con->原创 2020-10-09 22:43:30 · 496 阅读 · 0 评论 -
无限分类封装类
使用:use lmonkey\CatTree as CT;class Category { public function index() { $data = $db->select('category',['id', 'catname', 'pid', 'ord']); $tree = CT::getList($data); } }无限分类<?php/** ****************************************原创 2020-10-01 00:52:30 · 127 阅读 · 0 评论 -
修改时下拉默认选中
<select name="position" class="inputselect"> {% for k,v in allposition%} <option {% if k == ad.position %} selected {% endif %}value="{{k}}">{{v}}</option> {% endfor %}</select>原创 2020-09-28 19:53:34 · 140 阅读 · 0 评论 -
登录加入token验证未登录的禁止访问
1、login.php登录控制器中加入一个$_SESSION[‘admin_token’]用于判断是否存在该值,不存在则不允许访问 //加入token验证session存在admin_token值则为登录 $_SESSION['admin_token'] = md5($user['id'].$_SERVER['HTTP_HOST']);2、其他控制器继承验证类,于判断是否存在$_SESSION[‘admin_token’]该值,不存在则不允许访问,返回登录页 public f原创 2020-09-28 17:50:11 · 1846 阅读 · 0 评论 -
退出登录
1、销毁session2、销毁cookiepublic function logout() { $_SESSION = array(); if(isset($_COOKIE[session_name()])){ setcookie(session_name(),'',time()-3600, ''); } session_destroy(); $this->success('/admi原创 2020-09-28 16:54:59 · 368 阅读 · 0 评论 -
parent::__construct的含义
重写父类构造方法,同时为了保证父类构造方法能够执行需要再次调用父类构造方法class Link extends Admin{ //重写父类构造方法,同时为了保证父类构造方法能够执行需要再次调用父类构造方法 public function __construct() { parent::__construct(); }}...原创 2020-09-28 10:07:11 · 1208 阅读 · 0 评论 -
PHP中判断当前域名是http还是https协议以及端口号
1、判断当前域名是https还是http2、判断当前域名的端口号3、拼接返回function getCurUrl(){ $url = 'http://'; if(isset($_SERVER['SERVER_HTTPS']) && $_SERVER['SERVER_HTTPS']=='on'){ $url = 'https://'; } //判断端口 if($_SERVER['SERVER_PORT'] != '80'){原创 2020-09-27 18:00:07 · 1591 阅读 · 0 评论 -
php项目中.htaccess文件设置
#项目根下的Apache配置文件 单入口设置RewriteEngine On #开启RewriteBase / #从根目录开始RewriteCond %{REQUEST_FILENAME} !-f #对文件有效RewriteCond %{REQUEST_FILENAME} !-d #对文件有效#重写路由规则,不论以什么开头以什么结尾,都请求index.php ^(.*)$==$1RewriteRule ^(.*)$ index.php?$1 [QSA,L]原创 2020-09-22 10:45:03 · 692 阅读 · 0 评论 -
原生PHP多图片上传实例
input name名称为数组img[] multiple前端代码<input type="file" name="img[]" multiple>后端代码<?php//图片上传与入库include 'config.php';try{ foreach($_FILES['img']['error'] as $key=>$err){ //非正常上传(恶意攻击) if(!is_uploaded_file($_FILES['img原创 2020-08-02 15:16:30 · 216 阅读 · 0 评论 -
原生PHP单文件上传路径获取与文件流的保存
假设上传的文件name值为upload<form id="comment" action="{:url('supplement_order/index')}" method="post" enctype="multipart/form-data"><input type="file" name="file_name" value="" ><button class="submit" >提交</button></form>服务端处理代原创 2020-07-28 16:23:26 · 1117 阅读 · 0 评论 -
Windows下PHP版本切换
环境选择appserv在测试中发现phpstudy无法在apache中使用一下操作下载地址https://www.appserv.org/en/download/1)PHP版本下载根据系统版本选择带有Thread Safe 线程安全的下载https://www.php.net/2)如何让apache支持php7.3.4a.php配置文件将php.ini-development文件重命名为php.iniphp.ini-development -> php.inib.php支持原创 2020-07-28 00:06:44 · 2123 阅读 · 0 评论 -
PHP设计模式-注册模式在thinkphp5.1中的使用
1.将引用类放入容器类中绑定 D:\phpstudy_pro\WWW\project\tp51\thinkphp\library\think\Container.php'httpclient' => HttpClient::class2.在控制器类中初始化D:\phpstudy_pro\WWW\project\tp51\thinkphp\library\think\Controller.php /** * @var httpclient */原创 2020-06-07 11:16:31 · 311 阅读 · 0 评论 -
PHP设计模式-原生工厂模式
简单工厂、工厂方法、抽象工厂公共类<?php//加入命名空间namespace think;/** * @var HttpClient */class HttpClient{ /** * @var 请求的路径 */ private $url; /** * @var 请求方式 */ private $method; /** * @var 请求参数 */ private $par原创 2020-05-31 17:26:51 · 192 阅读 · 0 评论 -
PHP设计模式-单例模式在ThinkPHP中的应用
简单引用单例模式将单例类文件放入到TP核心库下D:\phpstudy_pro\WWW\project\tp51\thinkphp\library\think声明命名空间namespace think;<?php//加入命名空间namespace think;/** * @var HttpClient */class HttpClient{ /** * @var 请求的路径 */ private $url; /** * @v原创 2020-05-31 12:46:38 · 776 阅读 · 0 评论 -
PHP设计模式-原生单例模式
单例模式单例模式已经被考虑列入到反模式中!请使用依赖注入获得更好的代码可测试性和可控性!单例模式通常情况下是内部实例化。目标使应用中只存在一个对象的实例,并且使这个单实例负责所有对该对象的调用。例子1、数据库连接器2、日志记录器3、应用锁文件 (理论上整个应用只有一个锁文件 …)UML 图代码标准单例模式: HttpClient.php1.创建一个静态私有变量存放实例化的对象2.创建一个私有构造函数3.防止外部克隆该类4.防止序列化5.提供唯一的静态入口(判断$insta原创 2020-05-31 11:38:15 · 179 阅读 · 0 评论 -
PHP两个二维数组对比,去除重复
//对比数据过滤掉重复订单号 $medicine_order_all = Db::table($this->table)->field('order_sn')->select(); //两个for循环,外边对比一次,里边对比一轮 $group = array(); foreach ($res_data as $key=>$value){ foreach ($medicine_order_all a原创 2020-05-22 11:13:03 · 1215 阅读 · 0 评论 -
PHP在foreach中对$value赋值无效,应该用 ‘键’ 或者 &$value的形式
待完善,明早写原创 2020-03-06 00:35:26 · 411 阅读 · 0 评论 -
防止ajax多次请求,细节很重要
$('#jd').click(function () { $(this).unbind(); $(this).removeClass('layui-btn-container'); $(this).addClass('layui-btn-disabled'); var limit = 1; var timer = setIn...原创 2020-03-05 14:33:50 · 250 阅读 · 0 评论 -
PHP无限分类技术—递归方式实现无限分类
<?php$rows = array( array( 'id'=>1, 'name'=>'php', 'pid'=>0, 'path'=>'0' ), array( 'id'=>2, 'name'=>'linux', 'pid'=>0,...原创 2020-02-02 00:43:04 · 166 阅读 · 0 评论 -
PHP无限分类技术—表设计实现无限分类
<?php$rows = array( array( 'id'=>1, 'name'=>'php', 'pid'=>0, 'path'=>'0' ), array( 'id'=>2, 'name'=>'linux', 'pid'=>0,...原创 2020-02-01 16:57:00 · 266 阅读 · 0 评论