
php
文章平均质量分 50
廖圣平
高级技术经理 +v:juzhen321
展开
-
php设计模式-组合模式的运用
PHP的组合模式是一种设计模式,用于将对象组合成树形结构以表示“部分-整体”的层次结构。该模式允许客户端统一处理单个对象和组合对象,使得客户端在处理对象时不需要知道对象是否为单个对象还是组合对象。在组合模式中,有两种类型的对象:组合对象和叶子对象。组合对象是由多个叶子对象组成的对象,它具有与叶子对象相同的接口。而叶子对象是组合对象中最基本的对象,它不能再包含其他对象。组合模式通常由以下几个角色组成:抽象组件(Component):定义组合中所有对象的通用接口,可以是抽象类或接口。原创 2023-03-10 11:45:30 · 1510 阅读 · 0 评论 -
topthink/think-captcha 3.* thinkphp6 验证码前后端分离Api登录
在我写之后不久, 要在TP6上去搞。原来以为有前车之鉴了, 我在tp6搞会很轻松, 没想到他的包更新了 3 版本了。在我一些列阅读源码之后,我的同事提醒我, 这个Tp 在中国已经很成熟了啊,应该会有这个Api 验证码吧他的提醒,瞬间刷新了我的思路, 我去开源找一个 thinphp 6 前后端分离的, 看下怎么处理验证码,于是我找到了。在中发现了验证码的生成,一看生成的方式就是被TP摧残的兄弟改写了的他和我之前分装tp5的时候的思路是一致的, 把源码copy一份出来,把session 改成cache。原创 2022-11-24 14:18:14 · 1188 阅读 · 0 评论 -
大部分PHP程序员,都搞不懂如何安全代码部署【二】(nginx篇)
注意事项:deny一定要加一个IP,否者会直接跳转到403,不在往下执行了,如果403默认页在同一域名下,会造成死循环访问。配置nginx,禁止解析指定目录下的指定程序。说明:此限制是对某些IP做整个网站的限制访问。方法3:发现某域名恶意解析到公司的服务器IP,在server标签里添加以下代码即可,若有多个server要多处添加。在此之前发布了 代码安全部署的,里面写的nginx 配置安全写了一点点,今天具体补充一下nginx 的配置。作用:禁止访问目录下的指定文件或者禁止访问指定目录下的所有内容。原创 2022-11-24 11:44:02 · 617 阅读 · 0 评论 -
thinkphp6 改写底层类 set input()值
thinkphp input 改造程序执行前赋值原创 2022-11-09 14:32:46 · 343 阅读 · 0 评论 -
php获取url参数
【代码】php获取url参数。原创 2022-11-09 13:36:31 · 1718 阅读 · 0 评论 -
虾皮的员工都说好,PHP 错误日志监控钉钉通知
在我以往的开发的过程中,会写一些错误的日志,但是一般运营那边没有反馈,我们也不太会在意日志,所以一般小概率的报错也不会有人察觉,这样不好,不好。在当下互联网寒冬,容不得我们半点马虎,所以还是要认证对待自己的工作,报错的时候第一时间知道,偷偷的改掉。原创 2022-09-27 23:01:19 · 2588 阅读 · 0 评论 -
PHP如何生成二维码?
thinphp 生成二维码原创 2022-07-26 18:18:51 · 935 阅读 · 0 评论 -
php AES 前后端加密
经常会抓包看被人的接口怎么写的,虽然对方有https 加密,通过抓包工具也很简单的获取到接口。既然抓包能被抓到,那我就直接传输的时候数据加密了,增加破坏者的难度。可以使用AES 加密,虽然秘钥也保存在小程序端,但是想得到秘钥还是要费一点功夫的$encrypted = '123'; //wyJy7dTITM1EBaQzVmT+lw==$key = '1234567891234567';$iv = '1234567891234567';echo base64_encode(openssl_encr.原创 2021-09-08 16:15:26 · 433 阅读 · 0 评论 -
小程序开发工具利用Charles调用本地Laravel接口【建议收藏】
下载安装 charles关于charles 抓包小程序接口的之前有写,有兴趣可以查看https://liaosp.blog.youkuaiyun.com/article/details/90170048打开Laravel 服务我试了下,用8000端口,没用,所以Laravel就用80端口php artisan serve --host=0.0.0.0 --port=80设置代理dns转发转发到127.0.0.1 默认是80端口调用结果...原创 2021-09-03 12:04:21 · 2996 阅读 · 0 评论 -
php 数组搜索与分页
A simple Array search and array paging .Installing$ composer require liaosp/array-search -vvvUsageexample:$target = [ [ 'id'=>1, 'status'=>3 ], [ ...原创 2020-01-18 14:53:51 · 304 阅读 · 0 评论 -
laravel容器
本文为demo,更详情请查看这里电脑有键盘,比方:雷蛇,双飞燕。有时候使用双飞燕,有时候雷蛇这两个统称为键盘,所以写一个接口类interface Board{ public function attr();//键盘的属性}创建两个类:LeiShe.php<?phpnamespace App\Services\Test\board;use ...原创 2019-12-31 17:52:26 · 484 阅读 · 0 评论 -
laravel日志写入失败权限问题could not be opened: failed to open stream: Permission denied
问题最近发现了一个问题,有时候程序中的日志,有时可有写的权限,有时候会报权限不足,然后进入服务器之后,再给把logs的写的权限给www,则可以执行,这种不确定性的因素让我很不安。进入日志中ll注意:看到文件属于root权限如果不是,则可能没有添加权限chmod -R 777 logs现在我们解决的是,这个为什么是root 创建的,而不是www创建的。经过筛查,原来,执行cr...原创 2019-12-23 09:28:11 · 7437 阅读 · 0 评论 -
百度编辑器上传图片视频阿里Oss php
导读一台普通的服务器大概40g的容量,避免以后迁移服务器,上传图片或视频首先想到的是上云,不上云说出去都不好意思吐槽在网上看到很多文章,是在编辑器里面,include 阿里云oss 的sdk ,嵌入进去,然后我看了一下发布的时间为2012 年,看了晕晕的。思路其实思路清晰就不需要费很多时间就能搞定其实只需要改这边的配置,把资源会发送到你熟悉的上传方式。上传原理我发现,整个上传过程...原创 2019-12-21 22:06:45 · 522 阅读 · 0 评论 -
阿里巴巴开放平台Oauth2.0协议获取access_token
如果对Oauth2不太熟,有时间的话可以去学习一下之前写的一篇Oauth2.0 oauth2-server-php的使用Demo,怎么连接redis/可实现thinkphp5/yii/Laravel中使用阿里巴巴composer 包:阿里巴巴开放平台SDK一、获取Code//获取的code有效时间2分钟 public function getCode(){ ...原创 2019-12-07 22:19:36 · 2998 阅读 · 0 评论 -
阿里巴巴开放平台composer sdk demo | php-sdk
阿里巴巴开放平台 .Installing$ composer require liaosp/ali_open -vvvUsage说明:本例子是因为学习官方sdk太累了没有去学,所以自己封装一下简单的签名请求 $obj = new \Liaosp\AliOpen\AliOpen(['page'=>1]); $obj->setAppkey('...原创 2019-12-07 13:59:26 · 1774 阅读 · 4 评论 -
搞懂 php 容器,容器实践DEMO
项目地址https://github.com/liaoshengping/phpNote/tree/master/basis/container/my_container下载在本地 执行 index.php效果$app = new Application();$app->db->test();一般框架都有容器这个概念,当基础类多了,会很零散,所以得有一个东西能收纳这些功能...原创 2019-12-04 17:36:30 · 1609 阅读 · 0 评论 -
根据另外一个数组规定的数组排序php
<?php$data = array( array( 'title' => '区块链'), array('title' => '股票'), array( 'title' => '地摊'));$order = array('区块链','股票','地摊');$order = array_flip($order);function cmp($...原创 2019-10-28 17:13:50 · 609 阅读 · 0 评论 -
方法中如何知道是哪个类调用了自己,用于redis失败定时执行
<?phpnamespace core;use functions\Order;use functions\Sales;/** * Class Log * @package core * @method static Order order() * @method static Sales sales() */class Msg{ protected st...原创 2019-10-24 16:25:03 · 242 阅读 · 0 评论 -
thinkphp安装
thinkphp入门安装,为什么我的安装之后会出现 index of ,出现目录的页面,不是index 的欢迎页面原创 2016-12-26 12:10:10 · 471 阅读 · 0 评论 -
php获取机器运行的时间, 获取文本的内容
function get_dev_run_time() { system("uptime > /var/uptime"); $file = fopen('/var/uptime', 'r'); if ($file) { $buffer = fgets($file, 1024); $str = explode(',', $buffer);原创 2017-05-03 10:00:14 · 470 阅读 · 0 评论 -
"gb2312", "utf-8”的区别
处理中文,带来了兼容性的问题php的转换: $logInfo = iconv("gb2312", "utf-8//IGNORE", $logInfo);原创 2017-05-03 10:26:10 · 339 阅读 · 0 评论 -
layer.js 封装使用, 运用在thinkphp
v层:(还没实现功能的) 添加 教室名称: teacher: {volist name="teacher" id="teacher"} getData('id')}">{$teacher->getData('name')} {/volist}原创 2017-05-08 17:13:06 · 2526 阅读 · 0 评论 -
php正则表达式判断三个数字相等相同|判断豹子
if (preg_match('/^(?:([0-9])\1{2})+\/{1}+\d+$/', $data)) {echo "判断成功";}判断的结果为原创 2017-05-22 11:36:44 · 3887 阅读 · 0 评论 -
php判断三个数为对子,豹子| 简单粗暴方法
其实我查了网上很久, 有没有比较不幼稚的代码,但是找不着,就用了最原始,最土的方法,有更简化代码的在下方留言哦 $n1 = 6; $n2 = 6; $n3 = 6; $num = 0; if ($n1 ==$n2){ $num=$num+1; } if原创 2017-06-30 11:39:30 · 1570 阅读 · 0 评论 -
php 怎么判断为顺子,三个相邻的数字
if ($n1+1==$n2 && $n2+1==$n3) { $shunzi = '顺子'; } else { if ($n1 - 1 == $n2 && $n2 - 1 == $n3) { $shunzi = "顺原创 2017-05-22 19:51:21 · 4204 阅读 · 0 评论 -
thinkphp怎么显示当前服务器的地址_SERVER["SERVER_NAME"]
$data = $_SERVER["SERVER_NAME"];echo $data;原创 2017-07-13 23:06:37 · 2322 阅读 · 0 评论 -
querylist 入门query部署,获取网页的信息。
1, 以thinkphp3.2 为例子,在thinkphp/libriy/创建一个目录 QL/ 装入.qeurylist.php 和, queruseylist.class.php 2,在controller层里创建一个php 的文件,use QL/queryliset. <?phpnamespa原创 2017-08-07 23:26:55 · 3131 阅读 · 3 评论 -
初步验证身份证是否正确,验证是否为手机号php
function idcard_checksum18($idcard){ if (strlen($idcard) == 15) { $idcard = idcard_15to18($idcard); } if (strlen($idcard) != 18) { return false; } $aCity = array(1原创 2017-07-24 10:46:53 · 505 阅读 · 0 评论 -
thinkphp点赞取消赞连贯操作
public function postChorogCai() { is_login(); $data['cid'] = input('cid'); $data['uid'] = input('uid'); $iscai = input("iscai") != 1 ? 0 : 1; //判断是否登陆原创 2017-07-24 11:00:54 · 1887 阅读 · 0 评论 -
js 处理form表单整理成数组,结合php 完成排序功能的实现
/** * 排序操作 */$('#button_listorder').click(function() { // 获取 listorder内容 var data = $("#from_listorder").serializeArray(); postData = {}; $(data).each(function(i){ postDat原创 2017-08-08 17:55:32 · 908 阅读 · 0 评论 -
File upload error - unable to create a temporary file in 错误上传文件的时候thnkphp怎么回事
问题:意思是上传失败, 没有临时的目录-----------------------------------------------------------------------------------------------解决办法:;upload_tmp_dir = 把; 去掉, 在后面增添目录的路径:upload_tmp_dir =C:/temp原创 2017-08-17 10:18:41 · 1472 阅读 · 0 评论 -
怎么用php post 数据到服务器端,封装的方法,只需要输入url 和 post 数据即可
方法如下:<?php/** * 发送post请求 * @param string $url 请求地址 * @param array $post_data post键值对数据 * @return string */ function send_post($url, $post_data) { $postdata =原创 2017-08-11 12:56:05 · 1321 阅读 · 0 评论 -
php微信开发 接口配置信息 如何代码实现,代码实现,入口文件 token 配置失败
token 是在网页中和微信服务器商量好的哦。下次使用的时候直接代码复制即可使用<?php/** * Created by PhpStorm. * User: liaosp * Date: 2017/8/23 * Time: 10:36 */$timestamp = $_GET['timestamp'];$nonce = $_GET['nonce'];$token = 'w原创 2017-08-23 11:06:20 · 879 阅读 · 0 评论 -
php在守护进程中,内存泄露用unset()解决办法
PHP的unset()函数用来清除、销毁变量,不用的变量,我们可以用unset()将它销毁。但是某些时候,用unset()却无法达到销毁变量占用的内存!我们先看一个例子: $s=str_repeat('1',255); //产生由255个1组成的字符串 $m=memory_get_usage(); //获取当前占用内存 unset($s); $mm=memo原创 2017-09-13 10:27:08 · 1808 阅读 · 0 评论 -
走进微信公众号实现关注之后推送一条服务器自定义的消息给用户
下面是tp3.2实现的代码:<?phpnamespace Home\Controller;use Think\Controller;class IndexController extends Controller { public function index(){ $timestamp = $_GET['timestamp']; $nonce原创 2017-08-23 17:11:13 · 14549 阅读 · 1 评论 -
复习微信应用中,php采集简单demo
public function http_curl(){ //1.初始化 $ch = curl_init(); $url = 'http://www.baidu.com'; curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER原创 2017-08-24 10:43:14 · 291 阅读 · 0 评论 -
php 阻塞和非阻塞,同步与异步的理解,什么是异步非阻塞
“阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。1.同步与异步同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由*调用者转载 2017-08-29 10:46:33 · 1169 阅读 · 0 评论 -
php 把数字拆分成数组并把他们相加
$sum = 888;$arr = str_split($sum);//拆分数字为数组$res = '';for($i =0;$i $res+=$arr[$i];}echo $res;原创 2017-09-07 11:57:57 · 4260 阅读 · 0 评论 -
php fsockopen()方法,简化,异步非阻塞调用
介绍在项目中遇到一个问题,就是php是同步的读取下来的,如果一个方法请求的时间长了一点, 那么整个程序走下去将会遇到阻塞,现在我想触发这个方法,但是又不影响我下下面的程序正常的走下去。查了一上午的方法, 就这个函数比较靠谱,但是会比较low 一点, 因为直接是通过url寻找我们要触发的方法。方法function _sock($url) { $host = parse_url(...原创 2017-08-30 12:04:02 · 8954 阅读 · 3 评论 -
在php post/get请求封装
函数: function curlRequest($base_url, $query_data, $method = 'get', $ssl = true, $exe_timeout = 10, $conn_timeout = 10, $dns_timeout = 3600) { $ch = curl_init(); if ( $met...原创 2017-09-25 10:15:35 · 1002 阅读 · 0 评论