PHP开发干货
与PHP后端相关的一系列小知识点聚集地
下班后还在学习
Full stack engineer !
展开
-
研究一下关于char定长的字节问题
今天没什么事,玩点儿基础的东西来试试char字符串数据类型的参数设置首先看文档说明:说,M这个变量是字节数,那我们就来试试到底是字节还是字符创建表:CREATE TABLE `test` ( `name` char(2) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4name字段数据类型为char(2)...原创 2020-01-06 16:00:11 · 1021 阅读 · 0 评论 -
空闲时间写个关于小程序的使用[PHP小程序开发登录逻辑与准备工作]
小程序开发现在都成了找工作必备武器了适应时代变化,跟上技术,跟上大公司,也是生存之道啊小程序要使用,必须登录,这就有个问题,小程序是登录我们的服务器,还是登录微信服务器?今天周末没啥事干 ,梳理了一下分享给看到的你登录的切入口wx.login 方法是一切登录的源,先把官方的流程图展示一下:整个逻辑流程图非常清晰,可以看到由Login发起之后就可以得到一切了前端调用l...原创 2019-12-29 18:27:26 · 344 阅读 · 0 评论 -
PHP客户端使用ueditor配置图片上传及文章功能
最近开发一个全新的文章录入功能由于之前封装的不太好用,今天重新走了一遍流程,从百度官方下载ueditor开始首先到官方下载好ueditor PHP包下载好了之后配置到服务器上,本地测试就行了直接访问ueditor/index.html就可以看到完整的DEMO了到这里明显是满足不了我们的业务需求的,比如我们要编辑文章功能这时候需要几个地方的配置,首要的就是图片,图片配置文...原创 2019-10-30 21:30:32 · 827 阅读 · 0 评论 -
linux安装redis完整流程
首先安装gccyum install gcc接着将redis安装包上传到liunx上,运行tar -xzvf redis版本解压之后进入到文件夹,运行make PREFIX=/usr/local/redis install指定安装目录进入安装目录cd /usr/local/redis可以看到有一个bin目录接着到解压后的redis安装文件目录下将redis.c...原创 2019-10-17 17:25:31 · 167 阅读 · 0 评论 -
重新记录下关于TP5结合PHP环境配置伪静态的方法
因为很久没有配置了,今天换了一台电脑,环境什么的都得重新来,突然发现自己忘记了伪静态的配置方法了随后找了下以前配置好的环境看了一下就配置好了,在这里记录一下我用的php+mysql+apache的集成环境包upupw的产品,但只能在windows下做开发用,Linux上不行第一个.htaccess文件安装好了之后在htdocs目录下找到..htaccess文件,将以下内容替换进去...原创 2019-09-23 11:13:27 · 259 阅读 · 0 评论 -
PHP结合TP5实现无限分类
首先建表:CREATE TABLE `category` ( `id` int(11) NOT NULL AUTO_INCREMENT, `category_name` varchar(10) NOT NULL, `pid` int(11) NOT NULL, `level` int(11) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB ...原创 2019-09-09 16:14:27 · 189 阅读 · 0 评论 -
PHP结合TP5实现购物车,一行代码获取购物车总数量
PHP实现购物车功能的方法有多种,不管你使用哪一种,计算购物车中物品的数量是必需的因为前端渲染页面时需要知道有没有购物车商品,有的话有几件儿?话不多说了,直接来说一下我的购物车设计首先,我没有用session去存储购物车信息,我用的是cache,这里注明一下框架:TP5思路如下:1、前端传以下三个参数:{商品ID,商品数量,商品详情ID}2、PHP接收...原创 2019-09-06 15:19:10 · 2412 阅读 · 0 评论 -
mysql面试题走一波
2019mysql面试题案例分享1、现有login_logs日志表,用来记录用户登录的信息情况,字段有:uid,create_time(时间格式为:yyyy-mm-dd i:m:s)用sql语句查出,2017-06-...原创 2019-09-04 11:58:09 · 1602 阅读 · 0 评论 -
前端传来base64码的图片,php怎么处理?
$bases = $_POST['img']; //图片流 $bases_size = $_POST['size'] ? $_POST['size'] : 2; //图片大小,可动态限制,默认为2M $base64_image = str_replace(' ', '+', $bases); //post方式接收的数据, 加号会被替换为空格, 需要重新替换回来, ...原创 2019-08-27 14:35:44 · 1466 阅读 · 0 评论 -
CAS4.0在tomcat中配置数据库验证
本人Phper,在CAS这样的环境里改东西,真的是为难我了,找了好久的坑,终于搞定了数据库的配置话不多说,直接上流程:在CAS服务器的路径为:webapps\cas-server-4.0\WEB-INF\deployerConfigContext.xml编辑此文件之前,需要下载两个jar包mysql-connector-java-5.1.45-bin 下载地址:cas-ser...原创 2019-08-23 12:10:04 · 221 阅读 · 0 评论 -
phpCAS单点登出回调URL
<bean id="logoutAction" class="org.jasig.cas.web.flow.LogoutAction"p:servicesManager-ref="servicesManager"p:followServiceRedirects="${cas.logout.followServiceRedirects:true}"/>将CAS-SERVLET...原创 2019-08-22 16:12:35 · 436 阅读 · 0 评论 -
PHP单点登录--源码--详细解析
最近在搞单点登录,此前从来都没有接触过,那么就直接说了,不废话了。单点登录的概念:一个地方登录了,其它地方都不需要登录。首先,我用php实现单点登录不仅仅只是实现,还有理解,还有配置tomcat,CAS服务器等。php用到的是phpcas库,他可以用来与CAS服务器做对接。首先整体说下phpcas实现的过程,然后再来细讲源码。1、phpcas首先判断session,因为登录成功...原创 2019-08-16 17:34:31 · 1087 阅读 · 0 评论 -
restful api接口设计风格以及思路
以一个开发者的角度来看,我们没有必要把rest这种思想跟理念搞得特别清楚,我们只需要大概知道它的规范即可,在工作中能够让接口规范起来,就达到目的了。restful可以理解为是rest思想风格的实现既然是在开发API接口,从正常角度分析来看,得有一套规范吧,就像框架一样会有条条框框个人认为,实现resftul api接口的规范做到几下几点就算是不错了1、规范URL在设计API时...原创 2019-09-19 09:55:52 · 505 阅读 · 0 评论 -
PHP最精简的处理二维数组相同value的项
$a=array( array('id'=>1,'location'=>8), array('id'=>2,'location'=>7), array('id'=>3,'location'=>8), array('id'=>4,'location'=>8), array...原创 2019-09-20 15:48:00 · 460 阅读 · 0 评论 -
数据库优化的方法以及流程
mysql数据库优化技术这是一项综合性技术,可以从以下几个方面进行优化:表的设计是否合理(符合3NF)适当添加索引(普通索引,主键索引,唯一索引,全文索引)分表技术(水平分割,垂直分割)读写分离,写:除了select其它的操作都称为写存储过程(模块化编程,可以提高速度)为什么?(省去了编译过程)对Mysql配置优化(配置大并发数,数据库中my.ini配置文件max_co...原创 2019-09-21 19:49:52 · 345 阅读 · 0 评论 -
mysql数据库三范式以及反三范式
面试被问到过,当时说实话,是真忘记了,虽然平时设计表都很顺,但用理论表达出来,有时候却欲言又止今天我把三范式记录下来,分享给大家,这是我面试遇到过的问题数据库有规范,设计有规则,所以要满足标准,对于PHP开发,熟悉三大范式就行了第一范式:1NF原子性什么是原子性?通俗的讲,就是代表某个特性细得不能再细了,具体的指明表示它,并且它不能再进行分割例子:有张user表,它有以下...原创 2019-09-21 22:12:12 · 542 阅读 · 1 评论 -
upupw配置php5.6/php7 xdebug
PHP5.6、PHP7 PHP.INI配置zend_extension =""xdebug.collect_params = 1xdebug.collect_return = 1xdebug.auto_trace = 1xdebug.trace_output_dir = ""xdebug.profiler_enable = 1xdebug.profiler_output_dir ...原创 2019-09-25 11:09:54 · 461 阅读 · 0 评论 -
TP5如何使用单元测试?
单元测试可以帮助PHP开发人员保证接口的健壮性,通过测试用例的编程来测试,提高效率。话不多说,直接上流程首先安装TP5,方法有几种,这里介绍用composer的安装方法一、使用淘宝镜像加速composer config -g repo.packagist composer https://packagist.phpcomposer.com二、运行安装TP5.0命令com...原创 2019-09-26 13:47:32 · 1067 阅读 · 0 评论 -
mysql 自定义随机字符串函数
delimiter $$;create function rand_string(n INT)returns varchar(255)begindeclare chars_str varchar(100) default 'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';declare return_str varchar...原创 2019-09-28 23:42:51 · 392 阅读 · 0 评论 -
mysql 慢日志查询定位优化
如果你接手了一个项目,跑得很慢,想找到执行比较慢的语句,不仅仅是select语句这时候mysql的慢查询日志可能会对你有很大帮助 ,这里记录一下关于慢查询的流程慢查询定位数据库默认情况下是不会开启慢查询日志记录的在配置文件my.cnf或者 mariaDB的my.ini或者命令行:show variables like 'long_query_time';就可以查询到默...原创 2019-09-29 11:09:58 · 194 阅读 · 0 评论 -
mysql索引优化技巧
不管是面试,还是工作中,我们都要带着理论去实践,这样做出来的项目才更健壮先说说索引的类型:普通索引 index唯一索引 unique主键索引 primary key全文索引(myisam独有) fulltext索引的常见模式:哈希表有序列表二叉树Btree(innoDB的B+tree)索引优化记录:首先我们要知道,索引的创建是需要物理空间的,一般都在...原创 2019-09-30 15:33:30 · 226 阅读 · 0 评论 -
mysql表分割、分表、水平分割
mysql提升查询速度的方式,分表当然,我们不能小看了Mysql数据表的能力,单张表弄它个3、5百万的数据是没有任何问题的甚至有很多网友说单表达到1000万才考虑分表在这里,我仅发表我自己的看法我觉得,分表不一定说要多少数据量来平衡,个人认为跟硬件配置也有关系I/O输出等等那么简单说一个用户表的分表思路:一、核心思想分表,分表,就是把数量分开来CURL操作,怎么分开来操...原创 2019-10-08 10:54:30 · 268 阅读 · 0 评论 -
apache配置https,并且强制使用HTTPS
长话短说。1、搭建一个本地PHP开发环境,我用的是UPUPW集成包,大家可以自行下载2、HTTPS要有证书才行,这里用自己生成证书的方法在本地测试使用,不要去申请免费的,这里不是上公网3、生成所需要的证书文件4、开始配置5、完成本地环境就不多说了,直接从第二个开始吧执行的位置可以在任何一个位置,这个只要记得就行。openssl记得设置环境变量执行命令:set OP...原创 2019-08-06 17:05:42 · 7056 阅读 · 0 评论 -
windows安装linux系统虚拟机却查不ip地址全网正解
今天有个项目需要在linux上才能运行而正式环境又不能乱动这时候自己搭建一个虚拟机搭建过程就不在这里讲了运行之后,输入ip addr结果发现,并没用inet信息这时候,找到ipcfg-ens33/其它,可能是其它的一串数字名称文件vi编辑它,路径: /etc/sysconfig/network-scripts/ifcfg-ens33将ONROOT=NO改成 ONRO...原创 2019-04-01 11:26:58 · 587 阅读 · 0 评论 -
PHP客户端禁用了cookie之后session还能用吗?
答案是非常明确的可以的。在服务器端获取Session数据,必须知道SessionID,那么这个ID又是需要cookie带回来,禁用也就说明带不回来,就想办法给带回来就是了。以下是解决如何在这种情况下也使用session:1、再设置php.ini文件中的”session.use_trans_sid = 1“,或者编译时打开打开了”--enable-trans-sid选项”2、在服务器...原创 2018-11-21 12:53:45 · 1098 阅读 · 0 评论 -
PHP关于cookie的理解
cookie是为了解决什么问题?它适合做什么?常见的,比如: 各大网站都有提示您上次登录的时间跟地址首先, 来彻底的理解下cookie原理,它是怎么跟服务器端配合的?理解: cookie的来源是服务器,当服务器设置了cookie,setCookie();之后,client端发来的请求触发了这个方法,他将会以http协议的形式返回给client端一个: set-cookie: xxx=x...原创 2018-11-20 21:25:21 · 233 阅读 · 0 评论 -
PHP魔术常量集合-面试会问的
<?phpecho __LINE__; //当前行echo __FILE__;//文件的完整路径和文件名echo __DIR__;//文件所在目录echo __FUNCTION__;//PHP4.3.0新增的,返回该函数在定义时的名称echo __CLASS__;//PHP4.3.0新增的,类的名称(区分大小写)echo __METHOD__;//PHP 5.0.0...原创 2018-11-18 23:17:42 · 159 阅读 · 0 评论 -
php冒泡排序细分析
PHP有4种基本排序算法,分别是:冒泡排序,选择排序,插入排序,快速排序。本篇文章给初学者细讲下冒泡排序。首先是一个数组:$ars = [4,3,5,9,6,2];这是一个有6个元素的数组,那么开始使用冒泡排序,首先理解下冒泡排序,原理简单说明就是:两两比较,值大的往后放那么问题来了,一共要比较多少次呢?我们先来看第一次比较第一次:数组的第一个元素跟第二个元素比较,4&g...原创 2018-11-18 20:28:44 · 565 阅读 · 0 评论 -
MySql字段类型解说
很多初学者,在学习mysql时,不知道什么字段该用什么类型,今天就跟大家分享下字段的那些事儿(虽然我也是菜鸡)。mysql常用字段类型:数值类型:TINYINT:小整数值,范围0-255,单个:1字节INT或INTEGER:大整数值,范围(0,4 294 967 295),单个:4字节FLOAT: 单精度浮点数值,范围0,(1.175 494 351 E-38,3.402 82...原创 2018-10-24 18:21:47 · 153 阅读 · 0 评论 -
PHP中echo,print,print_r的区别是什么?
echo : 输出一个或多个字符串print : 输出简单变量的值,如int,string类型变量的值print_r : 输出比较复杂类型的值,如数组,对象原创 2018-10-23 22:48:46 · 2127 阅读 · 0 评论 -
PHP文件上传-面向对象的方法(MVC模式)
首先控制器:<?php header("Content-type:text/html;charset=utf8"); require_once("upload.class.php"); //获取获取文件的后缀名 $temp = explode(".",$_FILES['file']['name']); $ext = end($temp);//获取...原创 2018-09-04 23:18:48 · 305 阅读 · 0 评论 -
PHP数组冒泡排序新手如何理解
长话短说,直击重点!上代码: $pai = array(0,-98,10,40,-20,1,200,-300,58); $temp=0; for ($i=0;$i<count($pai)-1;$i++) { for ($j=0;$j<count($pai)-1-$i;$j++) { if ($pai[$j] >...原创 2018-07-28 18:41:38 · 301 阅读 · 0 评论 -
apache虚拟主机跟虚拟目录的配置与区别
首先,我对虚拟目录的理解就是: 配置一个路径访问相应的项目所在地其次,再是虚拟主机的理解就是: 配置域名或者端口到主机上访问不同路径下的项目(这里主机可以是多个)接着,先来看虚拟目录吧!一、先把httpd.conf里的默认路径给注释掉,因为要自行定义目录二、找到IfModule模块,并且添加一个此模块,设置好欢迎页,别名,也就是路径对面的项目所在地名称如:Alias /we...原创 2018-07-25 13:34:36 · 1563 阅读 · 0 评论 -
PHP中cookie跟session的区别
1、cookie只能保存字符串,session不仅仅是字符串,还可以是对象,布尔值等等基本数据类型2、cookie是储存在客户端的,session是储存在服务器端的3、生命周期不同,同一个cookie文件可以有多个键值对并且设置不同的过期时间,而session是统一的时间控制Session文件,cookie在没有设置有限时间的情况下只要浏览器关闭就会失效,而session有默认的时间,14...原创 2018-11-21 13:31:50 · 1088 阅读 · 0 评论 -
PHP关于session的理解
session是一个会话技术,当用户在浏览网页的时候有些数据需要长时间保存起来的时候session再好不过了,由于http是无状态的,无法知道请求人信息,一次请求结束就没了,session可以通过sessionid来判断是谁干了些什么,需要保存什么。这个sessionid可以是由cookie传输到服务器端,也可以在url中传递。那么从session_start();到保存一条数据,服务器都干了...原创 2018-11-21 16:02:12 · 229 阅读 · 0 评论 -
PHP中选择排序的算法理解
选择排序,原理:在每一次大循环的时候得出一个最大值或者最小值来替换相应的位置,看代码:<?php$arr = [3,2,4,7,5];for($i=0;$i<count($arr);$i++){ //第一次循环假设第一个元素的值最大,接下来的每一轮假设当前下标的元素值最大 $max = $arr[$i]; for($k=$i+1;$k<...原创 2018-11-22 15:30:31 · 386 阅读 · 0 评论 -
tcp协议的建立与认清它的位置
计算机应用基础想必大家都学过,如果没有学过。建议先去查找有关网络通信流程的资料。这里详细通俗的记录一下关于TCP这个协议。定义:它是一个传输层的协议,为什么有这个协议?有个问题大家要搞清楚,是ip协议在前,还是tcp协议在前?答案是:肯定是ip协议在前,因为:通俗的讲,你都没有找到对方是谁,你怎么跟人家通信?也就是说,ip主要用处就是来帮你在庞大的以太网域里找到你对方的...原创 2019-03-22 09:22:13 · 412 阅读 · 0 评论 -
php运行报Call to undefined function curl_init()的解决办法
先说我的电脑配置!我是64位win10系统,apache和php都是自己手动配置的,集成的环境我没试,不知道是否管用,但觉得多少可以参考一下!再说解决方案!1、同样的,在php.ini中开启curl扩展2、在php的目录下,找到libeay32.dll,libssh2.dll,ssleay32.dll这三个文件,复制(或剪切)粘贴到,apache的bin目录下3、重启apach...转载 2019-02-18 13:59:37 · 1694 阅读 · 0 评论 -
thinkphp5关联查询一对一跟多对多
最近看了七月老师的视频,感觉数据库关系跟应用讲得非常好,就拿商品主题这个模块记录下吧。首先要看表设计关系 ,一个主题跟哪些表有关联?表:1. 主题表2. 图片表3. 商品表第一个接口是获取主题那么,主题需要有图片跟基本信息,一个主题只有一个图片,一对一的关系 那么在主题模型中,需要定义关联关系belongsTo('Image','主题图片外键','关联表主键(I...原创 2019-01-19 16:49:23 · 1717 阅读 · 0 评论 -
TP5中belongsTo跟hasOne的区别
在使用tp5模型的ORM的时候出现belongsTo和hasOne都有表示一对一的关系,但是二者并不相同。以下举例说明两者的区别: 首先有user表 字段 id name password字段 然后有user_address表 id user_id city字段在User模型中关联user_address表的时候使用hasOne,因为在user表中没有关联两个表的外键在UserAddr...转载 2019-01-17 23:25:51 · 1578 阅读 · 0 评论