php
吃井不忘挖水人
因为有了因为,所以有了所以,既然已成既然,何必再说何必。
展开
-
THINKPHP 3.* 内置单字母函数D、F、S、C、L、A、I
原文地址:里面有详细使用方法单字母函数D、F、S、C、L、A、I 他们都在ThinkPHP核心的ThinkPHP/Mode/Api/functions.php这个文件中定义。有几个常用的,下面我分别说明一下他们的功能:D() 加载Model类M() 加载Model类A() 加载Action类L() 获取语言定义C() 获取配置值 用法就是 C(“这里填写在配置文件里数组的下标”)S...原创 2019-12-13 11:21:21 · 284 阅读 · 0 评论 -
一个PHP文件搞定支付宝系列之手机网站支付(兼容微信浏览器) 转
网上的很多PHP支付宝支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后给出一个单文件版的,希望可以给各位想接入支付宝支付的带来些许帮助和借鉴意义。一个PHP文件搞定支付宝系列:https://github.com/dedemao/alipay一个PHP文件搞定微信支付系列:https://github.com/dedemao/we…在手机浏览器下打开实现效果在微信中打...原创 2019-10-21 10:55:06 · 1539 阅读 · 1 评论 -
一个PHP文件搞定微信支付系列之原生支付(扫码支付) 转
网上的很多PHP微信扫码支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后给出一个单文件版的,只有200行代码,希望可以给各位想接入微信扫码支付的带来些许帮助和借鉴意义。直接运行该文件即可得到一个支付二维码的图片。需要注意的事项:1.该文件需放到支付授权目录下,可以在微信支付商户平台->产品中心->开发配置中设置。2.如提示签名错误可以通过微信支付签名验证工具进...原创 2019-10-21 10:50:18 · 334 阅读 · 0 评论 -
ThinkPHP5配置redis缓存
ThinkPHP采用cache类提供缓存功能支持,采用驱动方式,在使用缓存之前需要进行初始化操作。支持的缓存类型包括file、memcache、wincache、sqlite、redis和xcache等,默认情况下是file类型,配置redis缓存可以单一配置redis也可以同时使用多个缓存类型。配置方式分别如下:一、仅配置redis缓存,在配置文件(app/config.php)中修改缓存设置...原创 2019-08-07 14:22:54 · 427 阅读 · 0 评论 -
PHP判断当前的设备是手机(Mobile)还是电脑(PC)
在做web的时候,经常需要用到对移动设备的适配,当然可以直接把网站做成响应式蛾,但是如果不想这么做的话,可以使用php判断一下当前的设备是手机还是电脑。方法一:/** * Test if the current browser runs on a mobile device (smart phone, tablet, etc.) * * @staticvar bool $is_mobil...原创 2019-08-09 10:31:02 · 6921 阅读 · 0 评论 -
PHP数组序列化和反序列化
PHP序列化在我们实际项目运行过程中是一种非常常见的操作。比如当我们想要将数组值存储到数据库时,就可以对数组进行序列化操作,然后将序列化后的值存储到数据库中。其实PHP序列化数组就是将复杂的数组数据类型转换为字符串,这样就方便数组存库操作。我们对PHP数组进行序列化和反序列化操作,主要就用到两个函数,serialize和unserialize。一、PHP数组序列化:serialize<...原创 2019-08-07 10:25:42 · 340 阅读 · 0 评论 -
php怎么在客户端禁用cookie之后使用session?
在服务器端,要使用session,最本质的问题是要能够在服务器端拿到session的ID。通常情况下,在开启了session的页面中,即使用了session_start()的页面,首次访问的时候,会产生一个新的session,并有一个与之对应的sessionID,服务器会将这个sessionID通过http响应头部的set-cookie字段返回给客户端(浏览器),浏览器会将其保存在cookie中...原创 2019-08-02 14:25:14 · 195 阅读 · 0 评论 -
封装pdo单例类
为什么要使用PHP单例模式?1、php的应用主要在于数据库应用, 所以一个应用中会存在大量的数据库操作, 使用单例模式, 则可以避免大量的new 操作消耗的资源。2、如果系统中需要有一个类来全局控制某些配置信息, 那么使用单例模式可以很方便的实现。3、在一次页面请求中, 便于进行调试, 因为所有的代码(例如数据库操作类db)都集中在一个类中, 我们可以在类中设置钩子, 输出日志,从而避免到处...原创 2019-08-06 10:33:01 · 180 阅读 · 0 评论 -
RESTful API 最佳实践
RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。它的大原则容易把握,但是细节不容易做对。本文总结 RESTful 的设计细节,介绍如何设计出易于理解和使用的 API。一、URL 设计1.1 动词 + 宾语RESTful 的核心思想就是,客户端发出的数据操作指令都是"动词 + 宾语"的结构。比如,GET /articles这个命令,GET是动词,/articl...原创 2019-07-17 13:21:04 · 115 阅读 · 0 评论 -
php+redis实现消息队列
php+redis消息队列是php+mysql性能不足时的一个中间间处理方案。通过这个中间的处理,保证的数据的可用性和准确性。用于服务器瞬间请求大,数据库压力大的情况。如并发量大导致的超卖、并发量大导致的数据重复情况。流程:php接受请求和数据 -> php把数据写入redis队列中(入队) -> shell定时调用php读取队列数据写入mysql(出队)代码如下:入队 in.p...原创 2019-07-19 15:28:44 · 727 阅读 · 0 评论 -
几个提高ThinkPHP5性能的小技巧
以下方法在网站稳定后再生成上传。方法如下:路由缓存生成类库映射文件生成数据表字段缓存开启请求缓存为应用或者模块生成配置缓存文件如何生存路由缓存php think optimize:route如果你的应用中,定义使用了大量的路由规则,那么博主建议你可以在实际部署完成后,进行生成路由缓存文件操作,因为这样就可以免除你在打开这个应用时候路由注册的开销,从而改善路...原创 2019-08-07 17:09:31 · 535 阅读 · 0 评论 -
PHP实现微信网页授权登陆
官方文档地址1.识别浏览器,普通浏览器跳到登陆页面;微信打开的话,发起微信网页授权登陆,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;2.通过code参数加上AppID和AppSecret等,通过API换取access_token;3.通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。<?php...原创 2019-08-15 14:45:49 · 1423 阅读 · 0 评论 -
tp3.2 分析打印查询sql语句
$res_exi = usercoupon−>fetchSql()−>where(′userid="′.user_coupon->fetchSql()->where('user_id="'.usercoupon−>fetchSql()−>where(′u...原创 2019-09-03 11:20:07 · 1442 阅读 · 0 评论 -
tp3.2可以插入数据库一条数据,但某个字段就是插入不进去
删除根目录下 /data/runtime/Data 中的文件 即可解决问题原因是,打开这个下面的任何一个文件你就知道了。原创 2019-09-09 10:12:11 · 665 阅读 · 0 评论 -
composer修改成国内镜像
因为composer安装包数据是从github.com上下载的,安装包的源数据从packagist.org上下载作为两个国外的网站,连接速度会很慢,而且很有可能网站被墙。所以composer中国全量镜像将安装包数据以及安装包元数据缓存到国内的机房,并通过国内的CDN进行加速,这样我们访问时就不用向国外的网站发起请求,所以提升了访问的速度。配置:那么我们怎么使用composer中国全量镜像...原创 2019-09-10 15:12:43 · 3698 阅读 · 0 评论 -
TP5.1 调用common里面自定义的常量(自定义常量)
公共文件:\application\common.phpdefine('__PUBLIC__','/');控制器使用原创 2019-09-23 16:47:51 · 1256 阅读 · 0 评论 -
PHP给图片添加文字(文字水印)(imagestring不支持中文,改用imagettftext)
想在图片上画点东西,在网上查到的方法是imagestring,但是呢,不支持中文,发现可以用imagettftext,不同就是imagettftext需要引入字体,在网上找一个或者在自己的电脑上自带的字体找一个就好。代码如下:$width = 600;$height = 650;header("Content-type: image/gif; charset=utf-8");$img =...原创 2019-09-26 12:06:27 · 4056 阅读 · 0 评论 -
php缩小和放大图片(缩放图片)
list($width, $height)=getimagesize($filename);//缩放比例$per=round(400/$width,3);$n_w=$width*$per;$n_h=$height*$per;$new=imagecreatetruecolor($n_w, $n_h);$img=imagecreatefromjpeg($filename);//copy...原创 2019-09-26 12:09:07 · 3086 阅读 · 0 评论 -
TP5.0Indirect modification of overloaded element of think\Collection has no effect
这个问题一般出现在给对象循环赋值的时候出现。代码如下:```php$data=Db::name("data")->select();foreach($data as $k => $v){ $data[$k]['colum']=1;}在tp5中如果这样写就会出现上面的问题,为什么呢?分析我们可以dump打印一下,发现他是一个对象,那么肯定不能用数组的方式来赋值了。...原创 2019-09-26 14:23:26 · 6520 阅读 · 1 评论 -
php给图片添加水印方法汇总(包括文字水印和图片水印)
1: 面向过程的编写方法//指定图片路径$src = '001.png';//获取图片信息$info = getimagesize($src);//获取图片扩展名$type = image_type_to_extension($info[2],false);//动态的把图片导入内存中$fun = "imagecreatefrom{$type}";$image = $fun('00...原创 2019-09-26 15:44:19 · 979 阅读 · 0 评论 -
php返回HTTP状态码
HTTP协议状态码,调用函数时候只需要将$num赋予一个下表中的已知值就直接会返回状态了。<?PHP /** * HTTP Protocol defined status codes* HTTP协议状态码,调用函数时候只需要将$num赋予一个下表中的已知值就直接会返回状态了。* @param int $num*/ function https($num) { $http = ...原创 2019-07-17 11:15:46 · 1276 阅读 · 0 评论 -
将php字符串中的html标签原样输出 不解析
在输出字符串的上面加上 就可以了$str = '<h1>嘻嘻嘻</h1>';echo '<xmp>';echo $str;原创 2019-07-11 11:24:34 · 2521 阅读 · 0 评论 -
php $_SERVER获取当前页面地址和上一步的地址
$_SERVER[‘HTTP_REFERER’] //可以得到上一页的地址$_SERVER[PHP_SELF] //得到当前页面地址SERVER["HTTPHOST"]._SERVER["HTTP_HOST"].SERVER["HTTPHOST"]._SERVER[“PHP_SELF”]."?".$_SERVER[“Q...原创 2019-07-10 13:45:57 · 750 阅读 · 0 评论 -
ThinkPHP5.0命令
以下命令都是在这个目录下执行,以为要是要执行这个文件创建一个新的模块php think build --module 模块名生成一个新的类控制器,带资源php think make:controller 模块名/控制器名字生成一个空的类控制php think make:controller 模块名/控制器名字 --plain生成模块php think make:model 模...原创 2019-06-18 10:48:42 · 207 阅读 · 0 评论 -
容器与依赖注入的原理
1、任何的URL访问,最终都是定位到控制器,由控制器中某个具体的方法去执行2、一个控制器对应着一个类,如果这些类需要进行统一管理,怎么办?容器来进行类管理,还可以将累的实例(对象)作为参数,传递给类方法,自动触发依赖注入依赖注入:将对象类型的数据,以参数的方式传到方法的参数列表 \app\common\Temp $temp 等价于 $temp = new \app\common\Temp;...原创 2019-06-21 18:08:02 · 524 阅读 · 0 评论 -
控制器不存在:app\admin\controller\Usercontroller
今天用ThinkPHP5.1的时候,想尝试一下另一种访问方式,http://loclahost/index.php/admin/UserController/index模块 控制器 方法没想到报了个控制器不存在我的控制器名字应该是UserController,他自动变成了Usercontroller看手册才知道,框架默认是把所有请求的控制器名都转为小...原创 2019-06-21 18:07:03 · 13191 阅读 · 0 评论 -
laravel表单验证类
1.使用命令行工具创建requestphp artisan make request:validateLoginRequest2.创建后进入app/Http/Requests目录下找到创建的文件3.修改authorize方法内的值为true4.在rules方法内创建表单验证规则5.创建message方法自定义表单验证返回消息6.最后在要使用该表单验证的地方,把方法内的Request...原创 2019-06-21 11:41:06 · 441 阅读 · 0 评论 -
解决ajax跨域问题
第一种、使用代理第二种、交给后端解决在代码上面加上 header( "Access-Control-Allow-Origin:*" ); header( "Access-Control-Allow-Methods:POST,GET" );第三种、jsonp...原创 2019-06-20 10:05:47 · 108 阅读 · 0 评论 -
后端有时候接受不到前端ajax传输过来的数据
接收前端通过ajax传输过来的数据的时候,用POST、_POST、POST、_GET、$_REQUEST都接收不到,最后还是通过百度了好长时间才知道可以用file_get_contents("php://input");这个来接收。...原创 2019-06-14 16:51:48 · 2649 阅读 · 0 评论 -
php -s命令
PHP从5.4.0起,内置了一个http服务器,开发人员可以借助这个内置服务器来做一些本地测试。使用方法:php -S localhost:8000 [-t /var/www/web]localhost不可修改,端口号可以修改,括号里面是可选参数用于设置脚本路径。...原创 2019-06-13 12:19:45 · 1218 阅读 · 0 评论 -
面试题$a=[0,1,2,3]; $b=[1,2,3,4,5]; $a+=$b; echo json_encode($a);
首先先看a+=a+=a+=b的结果,在php中,不同数组相加的时候,键名相同,前者不能被后者覆盖,所以得到的结果是[0,1,2,3,5]。再用函数json_encode对$进行json编码,所以最后结果就是[0,1,2,3,5]。在同一个数组相同键名的后面的会把前面的覆盖掉。...原创 2019-05-31 11:29:02 · 1184 阅读 · 0 评论 -
pdo事物回滚
try{ $pdo->beginTransaction();//启动事物(开始) $pdo->exec($sqla); $pdo->exec($sqlb); $pdo->commit();//提交事务,如果发现有错,抛异常(结束)}catch(PDOException $e){ $pdo->rollB...原创 2019-06-18 11:10:12 · 181 阅读 · 0 评论 -
php实现备份、导出数据库
$doc_root=$_SERVER['DOCUMENT_ROOT']; $file_path_name=$doc_root.'/sqlbackup'; //保存到的路径 $filename='backup_'.date('YmdHis').".sql"; if(!file_exists($file_path_name)){mkdir($file_path_name,0...原创 2019-07-01 17:08:14 · 1052 阅读 · 0 评论 -
第三方接口开发流程
1.确定需要哪些接口 重点是要确定每个接口的具体功能。确保这些接口是必须的,功能相互间没有交叉。2.接口设计及细节分析 a)发送参数名、参数含义、参数数据类型、长度、精度 b)接收参数名、参数含义、参数数据类型、长度、精度 接口的使用的类型变量尽量通用,特别是对使用此接口的用户一无所知情况下,对方可能是JAVA,也可能是VB6,也可能是C#,不要使用某种编程语言的...原创 2019-06-24 11:24:54 · 4767 阅读 · 1 评论 -
在html中写php的foreach
<?php foreach ($data as $k => $v): ?> <tr class="tron"> <td align="center"><?=$v['id']; ?></td> <td align="center">&l...原创 2019-07-09 14:25:30 · 720 阅读 · 0 评论 -
公众号:正确响应微信发送的Token验证
直接把下面代码复制到你要填写的url地址<?php//定义常量token define('TOKEN','weixin'); //检查标签 function checkSignature() { //先获取到这三个参数 $signature = $_GET['signature']; $nonce =...原创 2019-06-27 15:24:55 · 6000 阅读 · 2 评论 -
微信错误代码45047:客服消息只能发送20条/个用户
必须用户点击菜单或者回复消息之后,又可以发送20条。图文消息点了好像没反应。原创 2019-06-27 15:02:06 · 850 阅读 · 0 评论 -
接口与抽象类的区别
接口(1)对接口的使用是通过关键字implements(2)接口不能定义成员变量(包括类静态变量),能定义常量(3)子类必须实现接口定义的所有方法(4)接口只能定义不能实现该方法(5)接口没有构造函数(6)接口中的方法和实现它的类默认都是public类型的抽象类(1)对抽象类的使用是通过关键字extends(2)不能被实例化,可以定义子类必须实现的方法(3)子类必须定义...原创 2019-07-08 15:12:33 · 92 阅读 · 0 评论 -
常见的排序算法
冒泡排序思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。代码实现:$arr=array(1,43,54,62,21,66,32,78,36,76,39);function bubbleSort($arr){len=count(len=c...原创 2019-07-08 14:58:38 · 130 阅读 · 0 评论 -
常用的文件操作函数
1. 获得文件名:basename — 返回路径中的文件名部分$path = “/home/cate/index/index2.php”;\file=basename(file = basename(file=basename(path);\echo $file; //结果index2.php2. 获得目录名dirname — 返回路径中的目录部分$path = “/home/cat...原创 2019-07-08 14:57:45 · 172 阅读 · 0 评论