首页
留言板
友情链接
Search
1
【javascript】JS-向当前url追加参数
2,308 阅读
2
【PHP】生成随机昵称
2,169 阅读
3
【PHP】判断一个字符串是否属于序列化后的数据
2,005 阅读
4
【css】html+css给文章页,做阅读全文
1,942 阅读
5
【PHP】 设计模式(23种)
1,870 阅读
默认分类
typecho
代码改变世界
mysql
Winform
go
设计模式
PHP
python
nginx
网络安全
文艺范
Search
标签搜索
php
typecho
代码注释
mysql
nginx
redis
golang
docker
html
curl
linux
go
thinkphp
mamp
laravel
跨域
http
rsa
sql
酒
依然范儿特西
累计撰写
118
篇文章
累计收到
26
条评论
首页
栏目
默认分类
typecho
代码改变世界
mysql
Winform
go
设计模式
PHP
python
nginx
网络安全
文艺范
页面
留言板
友情链接
搜索到
106
篇与
代码改变世界
的结果
2022-12-15
PHP解析小程序返回的buffer信息,并解析成图片
需要引入 GuzzleHttp 包composer require guzzlehttp/guzzle核心代码如下:<?php require __DIR__ . './vendor/autoload.php'; use GuzzleHttp\Client; use GuzzleHttp\Exception\GuzzleException; /** * get client * @return Client */ function httpGetClient() { static $client ; if (!$client) { $client = new Client(); } return $client; } //GET function httpGet($url) { $client = httpGetClient(); $options = [ 'verify' => false, ]; $response = $client->get($url,$options); return $response->getBody()->getContents(); } // POSTBODY function httpPostBody($url, $requestData=[], $header=[]) { $client = httpGetClient(); $options = [ 'headers' => $header, 'body' => json_encode($requestData,JSON_UNESCAPED_UNICODE ), 'verify' => false, ]; $response = $client->post($url, $options); if ($response->getStatusCode()==200) { return $response->getBody()->getContents(); }else{ return null; } } //postForm function httpPostForm($url, $requestData, $header) { $client = new Client(['verify' => false]); try { $response = $client->request('post', $url, ['form_params' => $requestData, 'headers' => $header]); $response->getStatusCode(); // 200 $response->getHeaderLine('content-type'); if ($response->getStatusCode()==200) { return [true,$response->getBody()->getContents()]; }else{ return [false,[]]; } } catch (GuzzleException $e) { } return [false,[]]; } function getAccessToken(){ $appid = ''; $secret = ''; //获取access_token $access_token_url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret; $access_token_data = httpGet($access_token_url); $access_token_data = json_decode($access_token_data,true); return $access_token_data['access_token']; } function getQrcode($access_token){ $url = 'https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token='.$access_token; $requestData = [ 'path'=>'pages/order-status/index?loose_id=1', 'width'=>430, ]; $header = []; return httpPostBody($url,$requestData,$header); } $access_token = getAccessToken(); //$access_token = ""; $data = getQrcode($access_token); if(is_null(json_decode($data))){ //不是json数据, 有数据流,返回值为null $jpg = $data; //创建文件写入 $file = fopen("img/test.jpg",'w'); fwrite($file,$jpg); fclose($file); }else{ //不是数据流,则代表有错误发生 $data_array = json_decode($data,true); print_r($data_array); } ?> 如果提示你无法写入, 记得新建一个文件夹: img ,并给可写权限
2022年12月15日
16 阅读
0 评论
1 点赞
2022-12-06
window下 phpstudy+nginx报错502的处理办法
1 开启日志修改nginx 日志级别, 开启错误日志和访问日志2 端口检测查看 80 端口和 9000 端口占用情况, 大部分是因为 9000端口被占用导致# 查看所有的端口 netstat -ano # 查询指定的端口占用,在命令行输入: netstat -aon | findstr 端口号 # 查询PID对应的进行进程: tasklist | findstr PID #关闭程序: taskkill /f /t /im 程序名
2022年12月06日
27 阅读
0 评论
0 点赞
2022-12-01
网站置灰样式代码
代码<style> html{filter: grayscale(1);} </style>
2022年12月01日
19 阅读
0 评论
0 点赞
2022-12-01
thinkphp3.2 AuthBehavior.class中,使用session无效原因分析
背景在开发中。 创建了一个 AuthBehavior.class 在做全局的权限验证, 里边会读取session, admin_id, 结果是读取失败原因在AuthBehavior.class这个类中,使用session的时候,session_start()还没有执行,所以无法读取;过程分析:关于 behavior 文件加载,程序执行过程大概是这样index.php -> 应用开始(app_begin)标签位侦听并执行绑定行为 -> session启动 -> 控制器开始(action_begin)标签位侦听并执行绑定行为解决办法第一种: 修改tags.php文件'app_begin' => array('Behavior\AuthBehavior'), 修改为 'action_begin' => array('Behavior\AuthBehavior'), 第二种: 偏方:在index.php就启用session_start(); 但是这样有一个问题,就是配置文件里面的那些改变session配置的参数可能及不起作用了(例如session前缀 SESSION_PREFIX) 提示:session函数位置 ThinkPHP\Common\functions.php参考文章:https://www.kancloud.cn/manual/thinkphp/1704
2022年12月01日
14 阅读
0 评论
1 点赞
2022-11-30
解决thinkphp5 session失效问题
1 index.php//定义session 保存目录 define('SESSION_SAVE_PATH',__DIR__.'./runtime/session/');2 config.php 增加session的保存目录 path // +---------------------------------------------------------------------- // | 会话设置 // +---------------------------------------------------------------------- 'session' => [ 'id' => '', // SESSION_ID的提交变量,解决flash上传跨域 'var_session_id' => '', // SESSION 前缀 'prefix' => 'laofan_', // 是否自动开启 SESSION 'auto_start' => true, //有效期 'expire' => 86400, // 驱动方式 'type' => '', 'path'=>SESSION_SAVE_PATH, ],
2022年11月30日
22 阅读
0 评论
0 点赞
2022-11-28
golang字符串切割
//定义一个字符串和相应map str := "PHP 是 世 界 上 最 好 的 编 程 语 言" map1 := make(map[string]int) //进行切割,此处成为[]string,并进行排序,方便后面直接计数 str2 := strings.Split(str, " ") sort.Strings(str2) for i := 0; i < len(str2); i++ { count := 1 for j := i + 1; j < len(str2); j++ { if str2[j] == str2[i] { count++ i = j } } map1[str2[i]] = count } fmt.Println(map1)
2022年11月28日
17 阅读
0 评论
0 点赞
2022-11-10
V50js代码
疯狂星期四, v50let arr = [ [1, 9, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22], [2, 8, 12, 18, 22], [3, 7, 12, 13, 14, 15, 16, 18, 22], [4, 6, 16, 18, 22], [5, 5, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22], ]; function demo(arr) { let str = ""; let style=[]; for (let i = 0; i < arr.length; i++) { for (j = 0; j < 30; j++) { if (arr[i].indexOf(j) > -1) { str += "%c█"; style.push(j< 12 ? "color:red" : "color:green") } else { str += " "; } } str += "\n"; } return [str,...style]; } console.log(...demo(arr));
2022年11月10日
29 阅读
0 评论
0 点赞
2022-10-26
【mysql】如何在一个大表里新加表结构? pt-online-schema-change工具带你去实现
mysql面试题: 如何在一个大表里新加表结构?直接加, 会很慢, 显然不可取,正确做法是:A表: 大数据量的表(原始表) B表: 含有新增表结构的表(新表) 直接创建B表,然后把A表的 存量和增量 都存入B表, 最后删除A表,把B表的表名字改为A表现在有个工具,可以很好的实现这个功能 :pt-online-schema-changehttps://docs.percona.com/percona-toolkit/pt-online-schema-change.html工作原理是创建一个新表,在新表上执行表结构修改,然后从原表中copy原始数据到表结构修改后的表,当数据copy完成以后就会将原表移走,用新表代替原表,默认动作是将原表drop掉。在copy数据的过程中,任何在原表的更新操作都会更新到新表,因为这个工具在会在原表上创建触发器,触发器会将在原表上更新的内容更新到新表。 注意: 如果表中已经定义了触发器这个工具就不能工作了!!
2022年10月26日
30 阅读
0 评论
1 点赞
2022-08-30
php通过各种函数判断0和空
函数对0的判断$cast_id = 0; var_dump(strlen($cast_id)); //1 var_dump(emptyempty($cast_id)); // true var_dump(isset($cast_id)); //true var_dump(is_null($cast_id));//false 对空的判断$cast_id = ""; var_dump(strlen($cast_id)); //0 var_dump(emptyempty($cast_id)); // true var_dump(isset($cast_id)); //true var_dump(is_null($cast_id));//false 补充:下面给大家介绍下php 语法里0不等于null为空的解决办法今天遇到这样一个问题是这样的: php 语句里,我想判断一个值大于等于0. 我是使用 ($value !=null && $value >=0), 返回的结果为空,这点真的好奇怪。实验总结:php 语句如下:$index=0; echo "A: ".$index."<br>"; //0 echo "B: ".($index !=null && $index >=0)."<br>";// echo "C: ".(isset($index) && $index >=0)."<br>";//1 echo "D: ".(0 !=null)."<br>";// 结果:A: 0 B: C: 1 D: 要判断一个数值[该数组可能为空等]大于等于0, 可用另外一个方法: is_numeric($index) === true$index=array_search($url, $contentOtherStr, true); //值大于等于0, 即存在 if(is_numeric($index) === true) { echo "$url existed. "."<br>"; }else{ echo "$url Add. "."<br>"; array_push($contentOtherStr, $url); } 这个很奇怪,终于解决了,Mark 一下。总结:php的语句稍有些怪异,从其它编程语言转来的同学们一定多加小心谨慎,注意惯性思维及语法差异点啊,避免陷入坑中。其它资料:原因是在PHP中变量是以C语言的结构体来存储的,空字符串和NULL,false都是以值为0存储的,其中这个结构体有个zend_uchar type;这样的成员变量,他是用来保存变量的类型的,而空字符串的类型是string,NULL的类型是NULL,false是boolean。这一点可以用 echo gettype('') ;和 echo gettype(NULL) ;来打印看看! 而===运算符是不单比较值,还有比较类型的,所以第三个为false!另外再说下,php中= 一个等号是赋值== 两个等号是判断相等且只比较值,不比较类型=== 三个等号是判断值和类型都相等!= 不等于符号,只比较值,不管类型!== 不全等符号,比较值和类型所以 空字符串(''),false, NULL 和 0是值相等而类型不一样!注意:NULL是一种特殊的类型.两种情况下为NULL$var = NULL;$var;3.""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。PHP中区分0和空function test() { $a = 0; $b = ''; $c = null; // 区分 0、''、null // 1、方法一 if ($a !== '') { echo '0和null'; } else { echo '空字符串'; } // 2、方法二 if ($a !== null) { echo '0和空字符串'; } else { echo 'null'; } // 3、方法三 if (strlen($a) > 0) { echo '0'; } else { echo '空字符串和null'; } // 以上三种方法都只能把其中一个和另外两个区分出来,如果需要3个单独区分,需要结合使用 }
2022年08月30日
37 阅读
0 评论
0 点赞
2022-07-24
zsh&oh-my-zsh 让你的Linux命令终端直接起飞!
shell的类型有很多种,linux下默认的是bash,虽然bash的功能已经很强大,但对于以懒惰为美德的程序员来说,bash的提示功能不够强大,界面也不够炫,并非理想工具。 而zsh的功能极其强大,只是配置过于复杂,起初只有极客才在用。后来,有个穷极无聊的程序员可能是实在看不下去广大猿友一直只能使用单调的bash, 于是他创建了一个名为【oh-my-zsh麻省理工学院许可下发布的】的开源项目...
2022年07月24日
84 阅读
0 评论
2 点赞
1
2
...
11