首页
直播
美图
视频
更多
统计
推荐
电子书站
免费视频站
好书推荐
Search
1
yii2框架融合workman 消息推送socketIO 插件
244 阅读
2
模板 源码 下载地址 集合
209 阅读
3
wordpress 插件 (主题)在线安装失败 解决办法探索
148 阅读
4
PHP使用json_encode()处理数组时,不转义 中文和 反斜线 等字符串
140 阅读
5
mysql 精准匹配时;字符串字段不区分大小写解决办法
123 阅读
我的博客
错误记录
登录
Search
标签搜索
php
mysql
wordpress
nginx
mysql安全
linux
typecho
redis
index.php
多继承
trait
微信公众号
微信
图片
文字
图文
用户权限
navicat
mysql用户权限
弱类型语言
周周
累计撰写
26
篇文章
累计收到
2
条评论
首页
栏目
我的博客
错误记录
页面
直播
美图
视频
统计
推荐
电子书站
免费视频站
好书推荐
搜索到
26
篇与
的结果
2021-12-02
微信公众号发送图文和图片 , 微信公众号被动回复用户信息
微信公众号回复用户信息有两种方式: 1、被动回复用户消息; 2、通过客服接口发送消息;(可以通过调用客服接口发送)本文不做阐述,可以看看微信文档,一、发送图片 1、可以将图片上传服务器上,代码如下:/** * 上传到本地服务器 * @param $content * @param $type * @return array * */ public static function filePathUrl($content,$type){ $ext_path = isset(self::$ext_path[$type]) ? self::$ext_path[$type] : '/file' ; $local_doc_dir = dirname(__DIR__) . "/web".$ext_path;//本地文件夹 if (!is_dir($local_doc_dir)){ mkdir($local_doc_dir,0777,true);//本地如果没有文件夹则创建文件夹 } // $name = uniqid().time().'.jpg' ; $name = uniqid().time().'.png' ; $res = file_put_contents($local_doc_dir.$name,$content) ; if($res){ return [ 'status' => 1 , 'url' => $local_doc_dir.$name , ] ; } else { return [ 'status' => 0 , 'msg' => '上传失败' , 'url' => $local_doc_dir.$name , ] ; } } 2、得到图片的绝对地址通过微信临时素材接口上传到微信服务器得到临时素材的media_id,/** * @todo * @param $media_path * @param string $type * @return mixed * @throws \Exception * */ public static function uploadWeChatWeb($media_path,$type = 'image'){ $access_token = getWeChatAccessToken(self::weChatAppId, self::weChatAppSecret); $url = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token={$access_token}"; if(class_exists('CURLFile')){ //7.0 $param = [ 'media' => new \CURLFile($media_path) , 'access_token' => $access_token, 'type' => $type, ]; }else{ //5.6以及5.6以下 $param = array( 'media' => '@'.$media_path, 'access_token' => $access_token, 'type' => $type, ); } $json_ret = requestHttp($url,'POST',$param,'',60,1) ; $ret = json_decode($json_ret,true) ; if($ret){ $ret['param_data'] = $param ; $ret['json_ret'] = $json_ret ; } else { $ret['param_data'] = $param ; $ret['json_ret'] = $json_ret ; } return $ret ; }注意: 1、media_path 是图片的绝对的地址,不是图片的url ; 这一点需要注意。 2、php 版本的不同导致代码有所差异,这边的考虑curl 的CURLOPT_SAFE_UPLOAD参数问题 代码调整: if(class_exists('CURLFile')){ //7.0 $param = [ 'media' => new \CURLFile($media_path) , 'access_token' => $access_token, 'type' => $type, ]; }else{ //5.6以及5.6以下 $param = array( 'media' => '@'.$media_path, 'access_token' => $access_token, 'type' => $type, ); } 微信回复的xml 组装: content参数发送文本时时文本内容,发送图片时图片的media_id;有参数不明白的可以阅读微信文档,或者咨询在下/** * 微信单文本信息回复 * @param $content */ private function respond_text($content,$img = 0){ if($img == 1){ // 发送图片xml $template = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Image> <MediaId><![CDATA[%s]]></MediaId> </Image> </xml>"; $info = sprintf($template,$this->from_user,$this->to_user,time(),'image',$content); } else { // 发送文本消息的xml $template = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $info = sprintf($template,$this->from_user,$this->to_user,time(),'text',$content); } exit($info); } 通过sprintf 函数将参数与xml字段替换 ; 得到想要的xml文件 ; 这样接口得到想要的功能 ; 如图 二、发送图文消息 通过组织图文的xml/** * 发送一条图文信息 * @param $title 图文标题 * @param $des 图文的介绍 * @param $picUrl 图片的url链接地址 * @param string $url 文章的第三方链接地址url * */ public static function respondOneNewsText($title,$des,$picUrl,$url){ $template = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <ArticleCount>1</ArticleCount> <Articles> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> </Articles> </xml>" ; $info = sprintf($template,self::$to_user_open_id,self::$form_user_open_id,time(),'news',$title,$des,$picUrl,$url); exit($info); } 通过sprintf 函数将参数与xml字段替换 ; 得到想要的xml文件 ; 这样接口得到想要的功能展示 ; 如图
2021年12月02日
101 阅读
0 评论
0 点赞
2021-11-28
php中trait语法的在多继承上的使用
php中trait语法的在多继承上的使用
2021年11月28日
56 阅读
1 评论
0 点赞
2021-11-19
IE 不支持 Promise 解决办法 (或者 promise 未定义)的解决方法
引入https://cdn.polyfill.io/v2/polyfill.min.js或https://cdn.polyfill.io/v2/polyfill.min.js
2021年11月19日
54 阅读
0 评论
0 点赞
2021-11-19
PHP 的 strtotime 的原理解析
我们来模拟下 date 内部的对于这种事情的处理逻辑: 1. 先做-1 month, 那么当前是07-31, 减去一以后就是06-31. 2. 再做日期规范化, 因为6月没有31号, 所以就好像2点60等于3点一样, 6月31就等于了7月1 是不是逻辑很” 清晰” 呢?我们也可以手动验证第二个步骤,比如:var_dump(date("Y-m-d", strtotime("2017-06-31"))); //输出2017-07-01 也就是说,只要涉及到大小月的最后一天,都可能会有这个迷惑,我们也可以很轻松的验证类似的其他月份,印证这个结论:var_dump(date("Y-m-d", strtotime("-1 month", strtotime("2017-03-31")))); //输出2017-03-03 var_dump(date("Y-m-d", strtotime("+1 month", strtotime("2017-08-31")))); //输出2017-10-01 var_dump(date("Y-m-d", strtotime("next month", strtotime("2017-01-31")))); //输出2017-03-03 var_dump(date("Y-m-d", strtotime("last month", strtotime("2017-03-31")))); //输出2017-03-03 那怎么办呢? 从 PHP5.3 开始呢,date 新增了一系列修正短语,来明确这个问题,那就是”first day of” 和 “last day of”, 也就是你可以限定好不要让 date 自动” 规范化”:var_dump(date("Y-m-d", strtotime("last day of -1 month", strtotime("2017-03-31")))); //输出2017-02-28 var_dump(date("Y-m-d", strtotime("first day of +1 month", strtotime("2017-08-31")))); ////输出2017-09-01 var_dump(date("Y-m-d", strtotime("first day of next month", strtotime("2017-01-31")))); ////输出2017-02-01 var_dump(date("Y-m-d", strtotime("last day of last month", strtotime("2017-03-31")))); ////输出2017-02-28 那如果是 5.3 之前的版本 (还有人用么?), 你可以使用 mktime 之类的,把所有的日子忽略掉,比如都限定为每月 1 号就可以了,只不过就不如直接用 first day 来的更加优雅.转自 鸟哥博客本文地址: https://www.laruence.com/2018/07/31/3207.html
2021年11月19日
54 阅读
0 评论
0 点赞
2021-11-19
Linux crontab 命令解释-实例
Linux crontab是用来定期执行程序的命令。
2021年11月19日
55 阅读
0 评论
1 点赞
2021-11-14
微信关注自动回复功能 (更新 : 同时回复多条信息)
第一条信息 : 通过关注事件触发 ,发送 关注回复信息 第二条信息 : 通过客服接口 发送信息 : 注 : * 多条信息也是类似的方法 (通过客服接口 发送信息) ;客服消息需要微信验证后才能回去到
2021年11月14日
59 阅读
0 评论
0 点赞
2021-11-14
mysql 两张张一对多关系,如何在一条主表信息中带出所关系的第三方数据
前提条件: 一张主表 (dl_data_task)表数据表字段 一张关系表(dl_data_task_model_map)表数据表字段 现在的问题: 如何在获取主表信息的同时将 对应的 model_id 也展示在主表信息中,分析: 因为 dl_data_task_model_map 和 dl_data_task 一对多的关系 , 所以一条主表信息对应多条 model_id 信息; 第一步: 获取了的结果是两条数据,但是实际主表信息只有一条 , 我下一步将两条数据合并成一条数据 第二步: 我们加了一个分组字段进行分组获取 结果是一条数据了,但是 model_id 不符合要求 第三步: 使用 group_concat 函数 这个数据符合我们的需求:目标达成 实现sql : 实现一条主表信息 同时展示对应的 model_id 信息 Sql1:SELECT `task`.id, task.NAME, GROUP_CONCAT( map.model_id ) AS modelIds FROM `dl_data_task` `task` INNER JOIN `dl_data_task_model_map` `map` ON map.data_task_id = task.id WHERE ( `task`.`uid` = 3 ) AND ( `task`.`status` = 0 ) GROUP BY `task`.`id` Sql2:SELECT `task`.id, task.NAME, GROUP_CONCAT( map.model_id ) AS modelIds FROM `dl_data_task` `task` INNER JOIN `dl_data_task_model_map` `map` ON map.data_task_id = task.id WHERE ( `task`.`uid` = 3 ) AND ( `task`.`status` = 0 ) 为什么这样写 ,主要展示主表的信息,顺带获取对应的 model_id 信息;为什么链表查询也是业务逻辑需求,只能链表查询。一对多关系,注意分组的使用,如果不使用分组,就会展示多少相同的数据 ; GROUP_CONCAT 和 GROUP BY 保留一个就好了都能达到目的需求。
2021年11月14日
62 阅读
0 评论
0 点赞
2021-11-13
网站服务器配置 nginx.conf 有误,导致服务器 **$_SERVER** 的 PATH_INFO 无法获取
问题 配置 maccms 时,配置 nginx.conf 成功之后,网站只能访问首页,无法访问其他的页面 ;问题分析 环境使用的 php nginx mysql ; 使用的是 tp5 的框架 ,问题发现配置好服务器之后发现无法访问其他页面,使用 debug 调试发现无法解析路由 ;原因: tp5 解析路由使用了 $_SERVER 中 PATH_INFO,但是如图配置无法获取 path_Info , 导致路由解析失败 ; 访问其他的路由,都跳转到首页 ,之前的错误配置 解决办法 调整后的服务器配置 location ~ [^/]\.php(/|$) { #fastcgi_pass remote_php_ip:9000; fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; #增加这一句 fastcgi_param PATH_INFO $fastcgi_path_info; #增加这一句 include fastcgi.conf; } 配置成功之后:重新启动一下 nginx 服务器; 之前的访问的问题就可以解决了。
2021年11月13日
65 阅读
0 评论
0 点赞
2021-11-13
wordpress 插件 (主题)在线安装失败 解决办法探索
问题: 从官网下载 wordpress 源码 下载地址 ; 按安装步骤安装好wordpress之后,无法安装插件 和安装主题 ; 安装插件提示 文件复制失败 ;解决办法:第一步: 使用xshell 管理工具 连接服务 进入你服务器wordpress 安装目录 , 在wp-content 创建 tmp目录 将wp-content目录下的权限放开 ;chmod 777 -R wp-content/第二步: 修改 wp-config.php ; 文件地址 :你服务器wordpress 安装根目录下; 如图: 在文件末尾加这些配置; 代码:define('WP_TEMP_DIR', ABSPATH.'wp-content/tmp'); define("FS_METHOD", "direct"); define("FS_CHMOD_DIR", 0777); define("FS_CHMOD_FILE", 0777); 这样 配置好之后,你wordpress 就可以在线安装 插件和主题了 ; 文章有什么错误的地方,望各位多多指点;感谢观看; QQ(wechat):2024662993 (Sying1775511885)
2021年11月13日
148 阅读
0 评论
0 点赞
2021-11-11
php redis 集合sadd同时写入多个键值的方法
php 使用redis 扩展,如何同时写入多个键值的应用 使用 ... 运算符定义变长参数函数 官方解释 地址实例<?php function f($req, $opt = null, ...$params) { // $params 是一个包含了剩余参数的数组 printf('$req: %d; $opt: %d; number of params: %d'."\n", $req, $opt, count($params)); } f(1); f(1, 2); f(1, 2, 3); f(1, 2, 3, 4); f(1, 2, 3, 4, 5); ?>输出$req: 1; $opt: 0; number of params: 0 $req: 1; $opt: 2; number of params: 0 $req: 1; $opt: 2; number of params: 1 $req: 1; $opt: 2; number of params: 2 $req: 1; $opt: 2; number of params: 3由此类推: 批量设置集合数值 if(is_array($value)){ $value = \Yii::$app->redis->sadd($key,…$value) ; }else{ $value = \Yii::$app->redis->sadd($key,$value) ; }
2021年11月11日
57 阅读
0 评论
0 点赞
2021-11-11
PHP使用json_encode()处理数组时,不转义 中文和 反斜线 等字符串
json_encode 语法简介: (PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL json >= 1.2.0) json_encode — 对变量进行 JSON 编码 说明 json_encode(mixed $value, int $options = 0, int $depth = 512): string|false返回字符串,包含了 value 值 JSON 形式的表示。编码受传入的 options 参数影响,此外浮点值的编码依赖于 serialize_precision。 参数 value 待编码的 value ,除了 资源(resource) 类型之外,可以为任何数据类型所有字符串数据的编码必须是 UTF-8。 注意: PHP 实现了 JSON 的一个超集,参考 » RFC 7159. options 由以下常量组成的二进制掩码: JSON_FORCE_OBJECT, JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_INVALID_UTF8_IGNORE, JSON_INVALID_UTF8_SUBSTITUTE, JSON_NUMERIC_CHECK, JSON_PARTIAL_OUTPUT_ON_ERROR, JSON_PRESERVE_ZERO_FRACTION, JSON_PRETTY_PRINT, JSON_UNESCAPED_LINE_TERMINATORS, JSON_UNESCAPED_SLASHES, JSON_UNESCAPED_UNICODE, JSON_THROW_ON_ERROR。 关于 JSON 常量详情参考 JSON 常量页面。 depth 设置最大深度。 必须大于0。 返回值 成功则返回 JSON 编码的 string 或者在失败时返回 false 。问题1: 项目经常 用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似"\u*"的格式, 还会在一定程度上增加传输的数据量.$str = '中华人民共和国' ; echo json_encode($str) ; die() ; // "\u4e2d\u534e\u4eba\u6c11\u5171\u548c\u56fd"解决: 使用 json_encode 第二个参数 JSON_UNESCAPED_UNICODE(中文不转为unicode ,对应的数字 256) ; `$str = '中华人民共和国' ; echo json_encode($str) ; // "\u4e2d\u534e\u4eba\u6c11\u5171\u548c\u56fd" echo json_encode($str,JSON_UNESCAPED_UNICODE) ; // "中华人民共和国" die() ;` 问题2: 用PHP的json_encode来处理数组的时候, 不想转义其中的 /;解决2: 使用 json_encode 第二个参数 JSON_UNESCAPED_SLASHES (不要编码 /。 ,对应的数字 64) ;`$str = '中华/人民/共和国' ; echo json_encode($str,JSON_UNESCAPED_UNICODE) ; // "中华\/人民\/共和国" echo json_encode($str,JSON_UNESCAPED_UNICODE+JSON_UNESCAPED_SLASHES) ; //"中华/人民/共和国" echo json_encode($str,320) ; //"中华/人民/共和国"`
2021年11月11日
140 阅读
0 评论
1 点赞
2021-11-11
mysql 计算 一个文本字段的内容一个文字出现的次数
问题: 如何统计一个text字段内容中某个字或者词语出现的次数解决思路: 使用mysql 的内置函数计算 ; 当前需求用到的函数是length 计算字符串的长度 ; replace 替换内容的字段 ;譬如 我想统计 数据表dl_data_list_1 中tag_content 内容中 B-date 出现次数 只需要写出下面的sql 就可以达到目的SQL语句: SELECT ( LENGTH( tag_content )- LENGTH( REPLACE ( tag_content, 'B-date', '' )))/ LENGTH( 'M-date' ) AS num, tag_content FROMdl_data_list_1 WHEREid = 1205946; 这样写的原因 : 先通过length 函数获取原字段内容的长度 num1 , 将目标字段通过replace字段替换成空,在获取替换后的内容长度num2,(num1-num2)/目标字段的长度,就是字段在文本内容出现的次数;感谢观看,有错误的地方 望及时提醒我纠正,谢谢
2021年11月11日
78 阅读
0 评论
1 点赞
1
2
3