php
runtoweb3
go,python ,php,mysql
展开
-
RSA签名php实现
接口数据加上签名,可以防止别人篡改数据,过滤非法请求。/* * @param $data array 需要加密的数组*/function getSign($data,$private_key){ //排序 $data = argSort($data); //拼接得的需要加密的字符串 $mystr = createLinkstring($data); //用私钥加密 $sign = rsaSign($mystr,$private_key);原创 2020-09-18 16:36:01 · 594 阅读 · 0 评论 -
php的fsockopen伪造请求头,获取相应数据
http请求包含三个部分,请求行(\r\n)请求头(\r\n\r\n)请求主体http相应包含三部分,状态行(\r\n)响应头(\r\n\r\n)响应主体起始行与header之间通过一个换行符分隔(\r\n),多个header字段之间也是通过换行符分隔(\r\n),报文首部与报文主体之间则通过一个一个空行分隔(\r\n\r\n),报文首部有纯文本格式的字符串组成,报文主体则可以包含多种格式数据。php的fsockopen可以让我们自己构造请求header,获取响应header和响应主体数据.原创 2020-05-25 15:46:27 · 533 阅读 · 1 评论 -
Laravel Queue—消息队列任务
Laravel Queue—消息队列任务laravel队列的使用队列可以通过多种方式实现,在config/queue.php配置connection//这里配置了三种方式,具体选哪一种,需要在.env配置 QUEUE_CONNECTION=redis'connections' => [ 'sync' => [ 'driver' =...原创 2020-01-13 10:17:38 · 946 阅读 · 0 评论 -
php的错误异常处理
php的错误异常机制当我们没有自定义错误异常处理函数,php会按照默认的方式处理和显示错误异常。自定义默认的错误异常处理函数//注册捕获错误的处理函数set_error_handler([__CLASS__, 'appError']);//注册捕获错误的处理函数set_exception_handler([__CLASS__, 'appException']);//程序结束后...原创 2020-01-08 18:06:42 · 440 阅读 · 0 评论 -
TP5.1中间件的使用
Tp5.1也引入了中间件的功能中间件使用1.定义中间件类框架可以使用它命令或者自己在application/http/middleware目录下面生成一个Check中间件,格式一定要如下:必须有handle方法,第一个参数必须是Request对象,第二个是闭包。class Check{ public function handle(Request $request, \...原创 2019-12-07 00:18:27 · 2813 阅读 · 0 评论 -
TP5.1数据库操作
数据库操作有两种方式,一种是直接通过Db类// table方法必须指定完整的数据表名Db::table('think_user')->where('id',1)->find();Db::name('user')->where(['name'=>'aa'])->select();Db::query("select * from think_user wh...原创 2019-12-06 00:18:37 · 730 阅读 · 1 评论 -
fastcgi_finish_request,register_shutdown_function和__destruct的理解
针对nginx和php-fpm模式,php定义了一个函数fastcgi_finish_request,可以提高接口返回数据的速度。nginx的fastcgi模块与php-fpm程序进行交互,获取php-fpm的worker进程执行的结果。一般情况,php的进程完全执行完后,才会吧输出的数据flush到nginx的fastcgi缓存区。在php进程中执行fastcgi_finish_reques...原创 2019-12-05 14:47:41 · 271 阅读 · 0 评论 -
nginx和php-fpm的交互
nginx是一个webservice的功能,当检测到访问php文件时,会把请求交给fastcgi模块处理。nginx的fastcig模块配置nginx的fastcgi模块会把请求交给php-fpm程序处理。php-fpm的worker进程处理完后,会把数据返回给nginx,nginx会把数据放到内存缓存中,缓存区大小为fastcgi_buffer_size,fastcgi_buffe...原创 2019-12-04 15:31:08 · 931 阅读 · 1 评论 -
php的反射机制
在PHP中,反射是指在PHP运行状态中,扩展分析PHP程序,导出或者提取出关于类、属性、方法、参数等的详细信息,包括注释。这种动态获取信息以及动态调用对象方法的功能,被称为反射API。其实就是通过一个对象,获取到实例化这个对象的类的所有信息。包括所有属性(共有,私有,静态),所有方法(构造函数,私有函数),还有对应方法的参数信息,还有方法的注释信息等等。1.反射类对象ReflectionC...原创 2019-11-27 16:59:57 · 693 阅读 · 0 评论 -
PHP进程防止内测溢出的排查
PHP进程内存大小是可以设置的,默认在配置文件 memory_limit=128M也可以在程序中动态设置ini_set('memory_limit','1024M');这样就设置成1G了。但是一般不会这样设置,毕竟会影响到机器的其他服务。有时候可以排查一下代码,很多时候内存溢出是因为php变量没有及时释放,或者遍历比较大的数组时出现。1.排查memory_get_usage()ph...原创 2019-10-09 11:32:29 · 300 阅读 · 0 评论 -
composer install 和 composer update的区别
然而,对于如何『安装他们』,新手可能并不清楚。网上的答案有的说 composer install,有的说composer update,而这两者似乎都能成功把依赖下载下来并安装好,那么他们究竟有何区别呢? 首先要搞清楚的一件事情是,所有的依赖都定义在composer.json中,手册中给出了一些基本用法和例子。你可能已经注意到,在指定版本号的时候,我们并不一定要指明一个精确的版本。那么就有...转载 2019-02-19 16:31:23 · 991 阅读 · 0 评论 -
php-redis中文文档
phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系很有用;以下是redis官方提供的命令使用技巧:下载地址如下:https://github.com/owlient/phpredis(支持redis 2.0.4)Redis::__construct构造函数$redis = new Redis();connect, open 链接red...转载 2018-12-26 09:16:50 · 177 阅读 · 0 评论 -
php-fpm的安装与使用
php的默认安装位置上面已经指定为/usr/local/php,接下来配置相应的文件:cp php.ini-development /usr/local/php/lib/php.ini //这是php的配置文件cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf //php-fpm的配置文件...原创 2018-12-17 16:14:34 · 1559 阅读 · 0 评论 -
获取客户端真实ip
很多时候我们需要获取客户端的访问ip, public function get_real_client_ip($type = 0, $adv = false) { $type = $type ? 1 : 0; static $ip = NULL; if ($ip !== NULL) return $ip[$type]; ...原创 2018-07-06 16:37:31 · 243 阅读 · 0 评论 -
CGI ,Fastcgi,PHP-FPM这三个的解释
首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者。web server(比如说nginx)只是内容的分发者。比如,如果请求/index.html,那么web server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。好了,如果现在请求的是/index.php,根据配置文件,nginx知道这个不是静态文件,需要去找P...转载 2018-07-30 00:08:04 · 109 阅读 · 0 评论 -
php 源码安装配置参数的一些说明
1.enable和with参数命令有什么区别? enable 是启用 PHP 源码包自带,但是默认不启用的扩展,比如 ftp 和 exif 扩展。with 是指定扩展依赖的资源库的位置,如果是默认位置,就可以留空。2.如何将扩展编译进php,而不是以.so动态扩展形式存在? php 的扩展分为静态编译和动态编译两种,静态编译就是随着PHP的源码一起编译安装,也...原创 2018-08-01 09:57:37 · 402 阅读 · 0 评论 -
记录微信配置Token的一个坑
申请了微信公众号,本来想自己开发玩玩,没想到在第一步配置token就遇到麻烦,总是验证token失败。经过无数的尝试和网上查找资料,终于验证成功了。1.首先是检查代码是否正确啦 private function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GE...原创 2018-08-03 00:05:40 · 1191 阅读 · 0 评论 -
ThinkPHP源码解读1
1.Thinkphp我们可以设置一个入口文件index.php,然后在入口文件中引入Thinkphp框架的入口文件,原则上项目的入口文件可以放到任意处;2. ThinkPHP框架的入口文件大概做两个事情,一是定义目录的常量,二是启动核心类think的start方法;3.TP框架的大部分初始化都是在start方法中进行的;一个重要的步骤是加载核心文件,加载哪些文件呢?可以通过自己配置...原创 2018-08-09 00:24:09 · 749 阅读 · 0 评论 -
PHP的curl扩展的安装
有时候安装好php后,后面需要一些扩展需要添加进来,又不能影响当前php的工作,我们就只能通过动态添加扩展来实现一.首先明确一些目录1.源码包目录,就是放从网上下载的源码包文件的目录,里面有下载的php,mysql,http等源码例如:/usr/local/src/ 2.PHP扩展包路径,就是PHP用来支持扩展服务的软件包,一般在php源码包的ext目录例如:/usr/l...原创 2018-08-31 00:29:44 · 6991 阅读 · 0 评论 -
通过淘宝接口用ip获取位置信息
1.获取客户端ip//不同环境下获取真实的IPfunction get_ip(){ //判断服务器是否允许$_SERVER if(isset($_SERVER)){ if(isset($_SERVER[HTTP_X_FORWARDED_FOR])){ $realip = $_SERVER[HTTP_X_FORWARDED_FO...原创 2018-08-31 11:32:14 · 2061 阅读 · 1 评论 -
微信公众号获取用户位置信息
思路:1.先用微信sdk的定位功能,获取到用户的经纬度 2.把经纬度通过百度地图接口转换经纬度 3.通过百度地图接口,通过转换后的经纬度获取对应的位置信息一.微信公众好SDK使用步骤一:绑定域名先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。备注:登录后可在“开发者中心”查看对应的接口权限。 步骤二:引...原创 2018-08-29 13:46:41 · 12620 阅读 · 1 评论 -
Linux安装composer
其实安装composer非常简单,只要下载composer.phar就可以了composer.phar就是composer的命令;1.下载composer.phar到源码目录 /usr/local/srccd /usr/local/srccurl -sS https://getcomposer.org/installer | php下载完成如下:2.全局安装commp...原创 2018-09-08 00:53:05 · 207 阅读 · 0 评论 -
把图片转为base64格式
base64编码:图片的base64编码指将一副图片数据编码成一串字符串,使用该字符串代替图像地址 $img_file = file_get_contents($url); $img_content= base64_encode($img_file); $type = 'jpeg';//得到图片类型jpg $new_file = "./cs/cs.{$type...原创 2018-10-06 16:02:00 · 360 阅读 · 0 评论 -
下载微信头像到本地
通过微信接口,可以获取到微信头像的链接,例如:http://thirdwx.qlogo.cn/mmopen/y5vdnz5cVsANsZChfWe6IWsZ4PnWV9Tq78nvWoLvvvqWs0jOowJgAxSLZMqzibA41Fib82zZX6YGpd2D4jIfrN42XBXpmgZoFN,但是有时候我们需要下载微信的头像下来;// 下载微信头像到本地function ...原创 2018-09-28 11:44:01 · 3169 阅读 · 0 评论 -
array_merge合并数组返回null的一个坑
合并数组$arr1 + $arr2 和array_merge($arr1,$arr2);1)键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖)2)键名为字符时,+仍然把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉,但array_merge()此时会...原创 2018-10-10 15:23:38 · 2732 阅读 · 0 评论 -
登录验证码实现
验证码是比较常见的一个功能,当用户输入用户名密码后,必须也输入验证码才能提交。实现原理:1.随机生成验证码图片,并且把验证码储存在session中;2.提交登录是验证 前端代码:<form class="form-signin" method="post" action=""> <h2 class="form-signin-heading...原创 2018-10-25 10:58:32 · 687 阅读 · 1 评论 -
接口动态签名,防止被人恶意调用
在项目开发过程中,接口是必不可少的的,之前很多时候,常常是传几个参数去请求即可,没有做任何的验证手段,如果被别有用心的人发现你的接口,可以进行恶意攻击。有一种非常简单的接口验证手段,可以限制非正常调用;1.请求参数param:请求接口需要用到的参数request_time:请求时间戳sign : 签名有字符串,签名规则:MD5(request_time+private_key) ...原创 2018-11-09 10:11:25 · 3257 阅读 · 4 评论 -
apache开启rewrite模块,thinkphp路径省去index.php
1.首先要开启apache的url重新模块找到apache环境下的httpd.conf文件搜索AllowOverride None,然后全部替换为AllowOverride All;搜索LoadModule rewrite_module modules/mod_rewrite.so(搜索不到可以是空格,搜索一部分只要能找到就行),去掉前面的“#”号。最好把httpd.conf里面的所有...原创 2018-09-18 22:29:01 · 2643 阅读 · 0 评论 -
json_decode() 返回null
在接口返回一个数组 echo json_encode($arr);获取到的返回值是正确的json字符串,但是使用json_decode($json,ture)转为php数组时,却打印出null;确认数组时urt-8格式;而且返回的json字符串也是正确的json格式(复制到在线json转码显示正常),但是转不了数组;经过网上搜集,总结了一下几个json_decode()返回null的情况;...转载 2018-07-06 16:25:55 · 1639 阅读 · 0 评论