首页
直播
美图
视频
更多
统计
推荐
电子书站
免费视频站
好书推荐
Search
1
yii2框架融合workman 消息推送socketIO 插件
246 阅读
2
模板 源码 下载地址 集合
210 阅读
3
wordpress 插件 (主题)在线安装失败 解决办法探索
151 阅读
4
PHP使用json_encode()处理数组时,不转义 中文和 反斜线 等字符串
143 阅读
5
mysql 精准匹配时;字符串字段不区分大小写解决办法
125 阅读
我的博客
错误记录
登录
Search
标签搜索
php
mysql
wordpress
nginx
mysql安全
linux
typecho
redis
index.php
多继承
trait
微信公众号
微信
图片
文字
图文
用户权限
navicat
mysql用户权限
弱类型语言
周周
累计撰写
28
篇文章
累计收到
2
条评论
首页
栏目
我的博客
错误记录
页面
直播
美图
视频
统计
推荐
电子书站
免费视频站
好书推荐
搜索到
28
篇与
的结果
2021-12-02
mysql 用户设置访问权限 (软件篇[navicat])
一、使用工具新建用户: 二、设置权限1、配置数据库以及数据表(记得保存): 2、设置【服务器权限】全部为撤销3、刷新数据库权限:mysql> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.000 sec)4、配置连接:三、测试权限:1、测试结果,已屏蔽没有权限的数据库以及数据表: 以上就是本文的全部内容,希望对大家的学习有所帮助,
2021年12月02日
85 阅读
0 评论
0 点赞
2021-12-02
mysql 用户设置访问权限 (命令篇)
问题:为了数据库的安全,设置特定用户访问数据库或者数据库表的权限?解决方法:1、新增数据库用户数据方式1:// 添加无限制访问用户以及密码 CREATE USER 'your_username'@'%' IDENTIFIED BY 'your_password';// 添加本地访问用户以及密码 CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'your_password'; 注: user 是用户的名称,host 设置用户连接的方式;host:% 表示无限制(允许任何主机)登录数据库;localhost 表示服务器本地登录数据库 指定ip 表示指定某个ip终端访问数据库。还有人把host 设置成127.0.0.1,与localhost类似,但是两个存在着明显区别。 mysql -h 127.0.0.1 的时候,使用 TCP/IP 连接, mysql server 认为该连接来自于127.0.0.1或者是"localhost.localdomain" mysql -h localhost 的时候,是 不使用TCP/IP 连接的,而使用 Unix socket ;此时,mysql server则认为该client是来自"localhost" mysql权限管理中的"localhost"有特定含义: 需要根据自己的环境设置成localhost 还是选择127.0.0.1 ; 这个我们后面再说明。方式2: 通过sql 写入mysql user 表中INSERT INTO `mysql`.`user` (`Host`, `User`, `Select_priv`, `Insert_priv`, `Update_priv`, `Delete_priv`, `Create_priv`, `Drop_priv`, `Reload_priv`, `Shutdown_priv`, `Process_priv`, `File_priv`, `Grant_priv`, `References_priv`, `Index_priv`, `Alter_priv`, `Show_db_priv`, `Super_priv`, `Create_tmp_table_priv`, `Lock_tables_priv`, `Execute_priv`, `Repl_slave_priv`, `Repl_client_priv`, `Create_view_priv`, `Show_view_priv`, `Create_routine_priv`, `Alter_routine_priv`, `Create_user_priv`, `Event_priv`, `Trigger_priv`, `Create_tablespace_priv`, `ssl_type`, `ssl_cipher`, `x509_issuer`, `x509_subject`, `max_questions`, `max_updates`, `max_connections`, `max_user_connections`, `plugin`, `authentication_string`, `password_expired`, `password_last_changed`, `password_lifetime`, `account_locked`) VALUES ('%', 'testadmin', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', '', '', '', '', 0, 0, 0, 0, 'mysql_native_password', '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9', 'N', '2021-12-01 22:15:24', NULL, 'N');2、用户授权(grant)grant Alter, Create, Delete, Drop, INDEX, Insert, Select, Update on `your_db_name`.* TO 'your_username'@'%'; // Alter, Create, Delete, Drop, INDEX, Insert, Select, Update 用户操作数据库或者数据库表的具体权限; // `your_db_name`.* :表示`your_db_name`库下所有的表的权限都赋予 ; // `your_db_name`.table_name :表示`your_db_name`库下table_name表权限的赋予 ; 或者 授予用户数据库表的全部权限 ,不需要一个个授予;如下:grant All privileges on `your_db_name`.* TO 'your_username'@'%'; // All privilege :表示全部权限 授予全部数据库表的全部权限 ,不需要一个个授予;如下:grant All privileges on *.* TO 'your_username'@'%'; // All privilege :表示全部权限mysql> grant all privileges on `apple_cms`.ac_actor TO 'testadmin'@'%'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) 如图效果 3、刷新MySQL的系统权限相关表,或者重启数据库服务flush privileges; // sql 命令或者systemctl restart mysql ;// linux 命令 不同版本linux 命令不同,根据自己服务器而定,切勿死记4、撤销用户权限(REVOKE)REVOKE privilege ON databasename.tablename FROM 'username'@'host';注: 删除用户的对应的表或者库的权限5、删除用户 根据条件删除指定的用户drop user your_name DROP USER 'your_username'@'host'; DROP USER 'your_username'@'%';综上就可以自己设置用户的访问操作权限 ,
2021年12月02日
96 阅读
0 评论
0 点赞
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日
103 阅读
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日
55 阅读
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日
62 阅读
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日
64 阅读
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日
66 阅读
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日
151 阅读
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日
58 阅读
0 评论
0 点赞
1
2
3