51.password_verify验证密码是否和散列值匹配,注意 password_hash() 返回的散列包含了算法、 cost 和盐值。 因此,所有需要的信息都包含内。使得验证函数不需要储存额外盐值等信息即可验证哈希
52.允许跨域js调用接口
//header("Content-type:text/html,charset=utf-8");
header("Access-Control-Allow-Origin: *");// 允许任意域名发起的跨域请求
//header("Access-Control-Allow-Methods: POST, GET");
//header('Access-Control-Allow-Headers: X-Requested-With,X_Requested_With');
53.使用yar时报错 curl exec failed 'Timeout was reached' 的问题,解决方式:$client->SetOpt(YAR_OPT_TIMEOUT, 0);
54.防止重复提交,后端可以对登录状态的操作url和操作参数进行缓存,缓存的key与自己的id相关,执行完操作后返回数据前,销毁该缓存。期间则判断有无缓存,有缓存并且相同的话,就报错:请不要重复操作
55.php代码优化:https://github.com/php-cpm/clean-code-php
a).不要用flag作为函数的参数 flag就是在告诉大家,这个方法里处理很多事。前面刚说过,一个函数应当只做一件事。 把不同flag的代码拆分到多个函数里
b).封装条件语句
c).避免用反义条件判断
d).避免条件判断 利用接口多态,一个函数只做一件事
e).php7使用类型声明和严格模式
f).将成员属性尽量定义为private,通过构造方法初始化,通过定义额外方法来获取该私有属性值
56.php开启opcache https://www.cnblogs.com/lamp01/p/8985068.html
57.php下grpc的安装 https://github.com/grpc/grpc/tree/master/src/php
58.PHP利用PCRE回溯次数限制绕过某些安全限制 https://www.freebuf.com/articles/web/190794.html
59.在实现方法重写的时候,访问修饰符可以不一样,但是子类方法的访问权限必须大于等于父类方法的访问权限(即不能缩小父类方法的访问权限) 如 父类public function cry(){} 子类 protected function cry(){} 则会报错
但是子类的访问权限可以放大,如: 父类private function cry(){} 子类 protected function cry(){} 可以正确执行
60.使用phpoffice/phpspreadsheet,导入导出数据 http://www.cnblogs.com/windyet/articles/9711044.html
61.修改nginx中配置中php端口时,fastcgi_pass 127.0.0.1:9999;
记得修改php-fpm中监听端口(Listen)为同样的9999 /etc/php-fpm.d/www.conf