Atwood定律:凡是能用JavaScript写出来的,最终都会用JavaScript写出来

 

PHP 如何防止 CSRF 跨站域请求伪造

CSRF 背景与介绍CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一。其他安全隐患,比如 SQL 脚本注入,跨站域脚本攻击等在近年来已经逐渐为众人熟知,很多网站也都针对他们进行了防御。然而,对于大多数人来说,CSRF 却依然是一个陌生的概念。即便是大名鼎鼎的 Gmail, 在 2007 年
ngtwewy 2020-04-05    PHP   

为什么 PDO 无法捕获异常

场景:有些复杂的原生SQL语句查询,出错了没有报错:try{ $sth = $dbh->prepare($sql); $sth->execute(); $articles = $sth->fetchAll(\PDO::FETCH_ASSOC); } catch (\PDOException $e){ return $this->json($e->getMe
ngtwewy 2020-03-29    PHP   

PHP 一次查询生成二维 Json

场景:一次查询,返回给前端一个列表,需要在列表的每一项中加一个相关子对象。比如,返回给前端一个文章列表,列表中的每一项中,都要有一个文章作者的信息对象,如下:{ "count": "548", "list": [ { "id": "620", "user_id": "1", "category_id": "17", "name": "买藕了",
ngtwewy 2020-03-29    PHP   

Workerman 开启 WSS

准备工作:1、Workerman版本不小于3.3.72、PHP安装了openssl扩展3、已经申请了证书(pem/crt文件及key文件)放在磁盘任意目录代码: array( // 请使用绝对路径 'local_cert'=> '磁盘路径/server.pem', // 也可以是crt文件 'local_pk'=> '磁盘路径/server.key', 'verify_peer'=> fa
ngtwewy 2020-02-29    PHP   

PHP 为什么会引入 Trait

软件开发中的两种常用代码复用模式,继承和组合。继承:强调 父类与子类 的关系,即子类是父类的一个特殊类型;组合:强调 整体与局部 的关系,侧重的一种需要的关系;软件开发中有一条原则,叫做组合优于继承。这是因为从耦合度来看,继承要高于组合。继承关系中,子类与父类保持着高度的依赖关系,加上 PHP 不支持多继承,为了避免重写编写代码,很多功能都被统一封装到父类中。这样做有两个坏处:一是随着继承的层数和
ngtwewy 2020-02-22    PHP   

PHP 获取父分类和子分类常用递归函数

/** * 递归获取所有 ID * @param array $array 所有分类列表 * @param [type] $id 子分类ID */ function get_all_parents($array, $id){ $arr = []; foreach ($array as $v) { if($v['id'] == $id){
ngtwewy 2020-02-16    PHP   

ThinkPHP 5.0 原生查询分页

use think\paginator\driver\Bootstrap; // 获取用户上传列表 $page    = input('page/d') > 0 ? input('page/d') : 1;  $per_page  = Config::get('per_page'); $offset   = ($page-1) * $per_page; $sql = "...";
ngtwewy 2020-02-05    PHP   

Workerman 实现 WebSocket IM 聊天系统【后端篇】

前端篇地址:https://javascript.net.cn/article?id=652相关文档:https://restfulapi.cn/d/271一,WebSocket 简介WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket
ngtwewy 2020-02-03    PHP   

PHP 常用函数

数组函数:1.排序类:【1.无返回值,传值引用,就直接对原数组进行了修改】按V:sort,rsort,asort,arsort,按K:ksort,krsortsort() 按升序对给定数组的值排序,不保留键名rsort() 对数组逆向排序,不保留键名asort() 对数组排序,保持索引关系arsort() 对数组逆向排序,保持索引关系ksort() 按键名对数组排序krsort() 将数组按照键逆
ngtwewy 2020-01-31    PHP   

php生成唯一识别码uuid

php生成唯一识别码uuid/*生成唯一标志 *标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx(8-4-4-4-12) */ functionuuid() { $chars = md5(uniqid(mt_rand(), true)); $uuid = substr ( $chars, 0, 8 ) . '-' . substr ( $
ngtwewy 2019-11-16    PHP   

php中$GLOBALS["HTTP_RAW_POST_DATA"]报错

$postStr = file_get_contents("php://input");因为一般PHP中register_globals参数都设置了On,禁止了使用$GLOBALS["HTTP_RAW_POST_DATA"];php://inputphp://input 是个可以访问请求的原始数据的只读流。 POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_PO
ngtwewy 2019-11-03    PHP   

PHP下载文件,隐藏真实文件地址

public function fileUrl($url) { $file = 'uploads/files/'.$url; if (file_exists(\dirname(__FILE__).$file)) { return $this->error("文件不存在"); } // 新文件名 $filename = expl
ngtwewy 2019-07-07    PHP   

在PDO中使用事务

一般还是ORM的事务方便一些,下面是PHP原生PDO MySQL的事务。 function getPDO(){ $dsn = 'mysql:dbname='.config('database')['database'].';host='.config('database')['hostname']; $username = config('database
ngtwewy 2019-06-25    PHP   

PHP文件上传进度:使用 Session 的 upload_progress

1. 设置文件上传大小限制,修改如下: upload_max_filesize = 50m; 允许上传文件大小的最大值。默认为2M post_max_size = 50m; 指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M max_execution_time = 600; 每个PHP页面运行的最大时间值(秒),默认30秒 max_input_time = 60
ngtwewy 2019-06-25    PHP   

PHP文件上传进度:文件切片上传

设置文件上传大小限制,修改如下: upload_max_filesize = 50m; 允许上传文件大小的最大值。默认为2M post_max_size = 50m; 指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M max_execution_time = 600; 每个PHP页面运行的最大时间值(秒),默认30秒 max_input_time = 600;
ngtwewy 2019-06-25    PHP