首页
关于
留言
壁纸
更多
直播
统计
友链
Search
1
好用的软件分享
457 阅读
2
最新Navicat 15 for MySQL破解+教程 正确破解步骤
279 阅读
3
面试常见问题100问
247 阅读
4
一个人要走的时候,千万别问原因
194 阅读
5
直击心灵的唯美句子
163 阅读
日常记录
后端
PHP
NodeJs
Python
Java
前端
JavaScript
数据库
MySQL
服务器
美文
微信开发
微信公众号
微信小程序
编程
登录
Search
标签搜索
mysql
面试
python
django
express
axios
thinkphp
PHP
励志
哲理
九九乘法表
node
cors
跨域
唯美句子
美文
文件上传
ajax
算法
jwt
公子初心
累计撰写
79
篇文章
累计收到
12
条评论
首页
栏目
日常记录
后端
PHP
NodeJs
Python
Java
前端
JavaScript
数据库
MySQL
服务器
美文
微信开发
微信公众号
微信小程序
编程
页面
关于
留言
壁纸
直播
统计
友链
搜索到
79
篇与
的结果
2023-12-15
PHP实现无限级分类
function getTree($data) { $items = []; foreach ($data as $v){ $items[$v['id']] = $v; // $items[1] = } $tree = array(); //格式化好的树 foreach ($items as $item) if (isset($items[$item['pid']])) $items[$item['pid']]['son'][] = &$items[$item['id']]; else $tree[] = &$items[$item['id']]; return $tree; }
2023年12月15日
14 阅读
0 评论
0 点赞
2023-12-14
PHP使用PHPmailer类和smtp发送邮件
1.开启邮件smtp服务2.设置授权码3.引入phpmailer类,smtp类本地下载 https://github.com/PHPMailer/PHPMailer4.示例代码//下载PHPMailer并开启php_openssl、php_socket扩展 include_once 'PHPMailer.php'; include_once 'SMTP.php'; $mail = new PHPMailer(); //实例化 $mail->IsSMTP(); // 启用SMTP $mail->Host = "smtp.yeah.net"; //SMTP服务器 以163邮箱为例子 $mail->Port = 25; //邮件发送端口 $mail->SMTPAuth = true; //启用SMTP认证 $mail->CharSet = "UTF-8"; //字符集 $mail->Encoding = "base64"; //编码方式 $mail->Username = "phpmaster@yeah.net"; //你的邮箱 $mail->Password = "EFWWFULFELKCUMQY"; //网易邮箱客户端授权码 $mail->From = "phpmaster@yeah.net"; //发件人地址(也就是你的邮箱) $mail->FromName = "张某某"; //发件人姓名 $address = "137647337@qq.com";//收件人email $mail->AddAddress($address, "亲");//添加收件人(地址,昵称) //附件 /*$mail->AddAttachment("logo.jpg"); $mail->AddAttachment("1.zip"); $mail->AddAttachment('1.xls','我的附件.xls'); // 添加附件,并指定名称*/ $mail->IsHTML(true); //支持html格式内容 //$mail->AddEmbeddedImage("logo.jpg", "my-attach", "logo.jpg"); //设置邮件中的图片 $mail->Subject = "你好"; //邮件标题 $mail->Body = '这是HTML邮件正文粗体,<a href="http://www.zhangxuhui.com">激活</a>'; //邮件主体内容 //发送 if(!$mail->Send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "success";5.场景:邮箱发送验证码类在php7.3+环境中报错:**filter_var(): explicit use of FILTER_FLAG_SCHEME_REQUIRED and FILTER_FLAG_HOST_REQUIRED is deprecated原因:查资料得知,php7.3+弃用了FILTER_FLAG_SCHEME_REQUIRED函数** 解决方式:PHPMailer.php 3599行 if (filter_var('http://' . $host, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)) { //Is it a syntactically valid hostname? return true; } 更改为: if (preg_match('/http:\/\/[\w.]+[\w\/]*[\w.]*\??[\w=&\+\%]*/is','http://' . $host)) { //Is it a syntactically valid hostname? return true; } 其实就是url地址地址的正则验证。
2023年12月14日
21 阅读
0 评论
0 点赞
2023-12-14
PHP实现CURL发送请求
public function curl($url, $params = false, $ispost = 0) { $httpInfo = array(); //初始化 $ch = curl_init(); /*CURL_HTTP_VERSION_NONE (默认值,让 cURL 自己判断使用哪个版本),CURL_HTTP_VERSION_1_0 (强制使用 HTTP/1.0)或CURL_HTTP_VERSION_1_1 (强制使用 HTTP/1.1)。 */ curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); // 判断php版本 如果5.6+ 则含有CURLFILE 这个类 ,如果5.6-则设置如下,为解决php不同版本的问题 if (class_exists('\CURLFile')) { curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true); } else { if (defined('CURLOPT_SAFE_UPLOAD')) { curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); } } //在HTTP请求中包含一个"User-Agent: "头的字符串。 curl_setopt( $ch, CURLOPT_USERAGENT , 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36' ); //尝试连接等待的时间,以毫秒为单位。设置为0,则无限等待。 如果 libcurl 编译时使用系统标准的名称解析器( standard system name resolver),那部分的连接仍旧使用以秒计的超时解决方案,最小超时时间还是一秒钟。 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60); // 允许 cURL 函数执行的最长秒数。 curl_setopt($ch, CURLOPT_TIMEOUT, 60); //TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //TRUE 时将会根据服务器返回 HTTP 头中的 "Location: " 重定向。(注意:这是递归的,"Location: " 发送几次就重定向几次,除非设置了 CURLOPT_MAXREDIRS,限制最大重定向次数。)。 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //FALSE 禁止 cURL 验证对等证书(peer's certificate)。 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //设置为 1 是检查服务器SSL证书中是否存在一个公用名(common name)。译者注:公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)。 设置成 2,会检查公用名是否存在,并且是否与提供的主机名匹配。 0 为不检查名称。 在生产环境中,这个值应该是 2(默认值)。 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //设置编码格式,为空表示支持所有格式的编码 curl_setopt($ch, CURLOPT_ENCODING, ''); if ($ispost) { // TRUE 时会发送 POST 请求,类型为:application/x-www-form-urlencoded,是 HTML 表单提交时最常见的一种。 curl_setopt($ch, CURLOPT_POST, true); //全部数据使用HTTP协议中的 "POST" 操作来发送 curl_setopt($ch, CURLOPT_POSTFIELDS, $params); //需要获取的 URL 地址,也可以在curl_init() 初始化会话的时候。 curl_setopt($ch, CURLOPT_URL, $url); } else { if ($params) { curl_setopt($ch, CURLOPT_URL, $url . '?' . $params); } else { curl_setopt($ch, CURLOPT_URL, $url); } } $response = curl_exec($ch); if ($response === FALSE) { //echo "cURL Error: " . curl_error($ch); return false; } $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $httpInfo = array_merge($httpInfo, curl_getinfo($ch)); curl_close($ch); return $response; }
2023年12月14日
42 阅读
0 评论
0 点赞
2023-12-14
Thinkphp6使用腾讯云发送短信步骤
1.前提条件国内短信地址:https://console.cloud.tencent.com/smsv2已开通短信服务,具体操作请参见 国内短信快速入门。如需发送国内短信,需要先 购买国内短信套餐包。已准备依赖环境:PHP 5.6.33 及以上版本。已在访问管理控制台 >API密钥管理页面获取 SecretID 和 SecretKey。SecretID 用于标识 API 调用者的身份。SecretKey 用于加密签名字符串和服务器端验证签名字符串的密钥,SecretKey 需妥善保管,避免泄露。2.安装 SDKcomposer require tencentcloud/tencentcloud-sdk-php3.查看thinkphp6是否已经安装成功了4.在框架中,控制器中建立一个方法(sendSms),用于发送短信5.框架中引入发送短信的类文件// 导入对应产品模块的client use TencentCloud\Sms\V20210111\SmsClient; // 导入要请求接口对应的Request类 use TencentCloud\Sms\V20210111\Models\SendSmsRequest; use TencentCloud\Common\Exception\TencentCloudSDKException; use TencentCloud\Common\Credential; // 导入可选配置类 use TencentCloud\Common\Profile\ClientProfile; use TencentCloud\Common\Profile\HttpProfile; 6.实例代码public function sendSms(){ try { /* 必要步骤: * 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。 * 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。 * 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人, * 以免泄露密钥对危及你的财产安全。 * CAM密匙查询: https://console.cloud.tencent.com/cam/capi*/ /********************************************1.secretId,secretKey***********************************************/ $cred = new Credential("XXX", "YYY"); //$cred = new Credential(getenv("TENCENTCLOUD_SECRET_ID"), getenv("TENCENTCLOUD_SECRET_KEY")); // 实例化一个http选项,可选的,没有特殊需求可以跳过 $httpProfile = new HttpProfile(); // 配置代理 // $httpProfile->setProxy("https://ip:port"); $httpProfile->setReqMethod("GET"); // post请求(默认为post请求) $httpProfile->setReqTimeout(30); // 请求超时时间,单位为秒(默认60秒) $httpProfile->setEndpoint("sms.tencentcloudapi.com"); // 指定接入地域域名(默认就近接入) // 实例化一个client选项,可选的,没有特殊需求可以跳过 $clientProfile = new ClientProfile(); $clientProfile->setSignMethod("TC3-HMAC-SHA256"); // 指定签名算法(默认为HmacSHA256) $clientProfile->setHttpProfile($httpProfile); // 实例化要请求产品(以sms为例)的client对象,clientProfile是可选的 // 第二个参数是地域信息,可以直接填写字符串 ap-guangzhou,或者引用预设的常量 $client = new SmsClient($cred, "ap-guangzhou", $clientProfile); // 实例化一个 sms 发送短信请求对象,每个接口都会对应一个request对象。 $req = new SendSmsRequest(); /* 填充请求参数,这里request对象的成员变量即对应接口的入参 * 你可以通过官网接口文档或跳转到request对象的定义处查看请求参数的定义 * 基本类型的设置: * 帮助链接: * 短信控制台: https://console.cloud.tencent.com/smsv2 * sms helper: https://cloud.tencent.com/document/product/382/3773 */ /************************ 2.短信应用ID: 短信SdkAppId在 [短信控制台] 添加应用后生成的实际SdkAppId,示例如1400006666 */ $req->SmsSdkAppId = "1400616870"; /**************************3.短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看 */ $req->SignName = "芒果鱼个人网"; /* 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper] */ $req->ExtendCode = ""; /* 下发手机号码,采用 E.164 标准,+[国家或地区码][手机号] * 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号*/ /**************************4.手机号*****************************/ $req->PhoneNumberSet = array("+8615238831671"); /* 国际/港澳台短信 SenderId: 国内短信填空,默认未开通,如需开通请联系 [sms helper] */ $req->SenderId = ""; /* 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回 */ $req->SessionContext = "xxx"; /****************************5.模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看 */ $req->TemplateId = "1262642"; /****************************6.模板变量 模板参数: 若无模板参数,则设置为空*/ $code = mt_rand(1000,9999); $req->TemplateParamSet = array($code); // 通过client对象调用SendSms方法发起请求。注意请求方法名与请求对象是对应的 // 返回的resp是一个SendSmsResponse类的实例,与请求对象对应 $resp = $client->SendSms($req); // 输出json格式的字符串回包 print_r($resp->toJsonString()); } catch(TencentCloudSDKException $e) { echo $e; } }7.发送成功后的响应收据{"SendStatusSet":[{"SerialNo":"2997:184567926916409342794633167","PhoneNumber":"+8615238831671","Fee":1,"SessionContext":"xxx","Code":"Ok","Message":"send success","IsoCode":"CN"}],"RequestId":"0922c611-4392-48f2-8619-4cfa9657155c"}
2023年12月14日
24 阅读
0 评论
0 点赞
2023-12-13
微信开发接口配置
class Wechat { public function __construct(){ $this->checkSignature(); } private function checkSignature() { $signature = $_GET["signature"]; // 加密签名 微信服务器 $timestamp = $_GET["timestamp"]; // 时间戳 $nonce = $_GET["nonce"]; // 随机数 $echostr = $_GET['echostr']; $token = 'zhangxuhui'; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ echo $echostr; }else{ return false; } } public function index(){ } }
2023年12月13日
25 阅读
0 评论
0 点赞
2023-12-12
屏幕画线软件ZOOMIT
ZoomIt 快捷方式屏幕画笔改为ctrl+1方便在绘制模式下增加/减少 (和光标) Ctrl + 鼠标向上/向下滚动或箭头键将光标 (绘制模式) 空格键白板 (绘制模式) WBlackboard (绘图模式) K键入文本 T在键入模式下增加/ (字号) Ctrl + 鼠标向上/向下滚动或箭头键红笔 R绿色笔 G蓝色笔 B黄色笔 Y橙色笔 O紫色笔 P绘制直线 按住 Shift绘制矩形 按住 Ctrl绘制椭圆 "保持"选项卡绘制箭头 按住 Ctrl + Shift擦除上一个绘图 Ctrl+Z清除所有绘图 E将屏幕截图复制到剪贴板 Ctrl + C将屏幕截图另存为 PNG Ctrl+S显示倒计时计时器 Ctrl + 3增加/减少时间 Ctrl + 鼠标向上/向下滚动或箭头键最小化计时器 (,而不暂停) Alt + Tab最小化时显示计时器 Left-Click ZoomIt 图标上显示实时缩放模式 Ctrl + 4退出 Esc 或 Right-Click
2023年12月12日
40 阅读
0 评论
0 点赞
2023-12-11
JDBC
1. JDBC 概念JDBC 就是使用 Java 语言操作关系型数据库的一套 API全称:(Java DataBase Connectivity) Java 数据库连接2. JDBC 本质官方 (sun 公司) 定义的一套操作所有关系型数据库的规则,即接口各个数据库厂商去实现这套接口,提供数据库驱动 iar 包我们可以使用这套接口 (JDBC) 编程,真正执行的代码是驱动 iar 包中的实现类 同一套 Java 代码,操作不同的关系型数据库 3.JDBC 好处各数据库厂商使用相同的接口,Java 代码不需要针对不同数据库分别开发可随时替换底层数据库,访问数据库的 Java 代码基本不变4. 使用过程4.1 创建工程,导入驱动 jar 包创建项目创建目录命名 lib 用于存放驱动 jar 包当前工程识别 jar 包 右键 add as Library4.src 右键新建类文件4.2 注册驱动 Class.forName("com.mysql.jdbc.Driver"); 4.3 获取连接String url = "jdbc:mysql://127.0.0.1/test?useSSL=false"; String user = "root"; String password = "root"; Connection conn = DriverManager.getConnection(url, user, password);4.4 定义 sqlString sql = "insert into XXX"; 4.5 获取 sql 对象 Statement statement = conn.createStatement(); 4.6 执行 sqlResultSet resultSet = statement.executeQuery(sql); 4.7 处理返回结果4.8 释放资源statement.close(); conn.close();
2023年12月11日
64 阅读
0 评论
0 点赞
2023-12-11
Centos修改镜像为国内的阿里云源
众所周知的原因,原版的镜像下载会比较慢,建议改成阿里的会比较快。1.备份你的原镜像文件,以免出错后可以恢复。mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup2.下载新的CentOS-Base.repo 到/etc/yum.repos.d/wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo如果没有安装wget,可以运行下面命令,安装wgetyum -y install wget如果你的系统是其他版本可以查看http://mirrors.aliyun.com/repo/对应命令wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo3.运行yum makecache生成缓存yum makecache其他不错的源网易开源镜像站:http://mirrors.163.com/中科大的Linux安装镜像源:http://centos.ustc.edu.cn/搜狐的Linux安装镜像源:http://mirrors.sohu.com/
2023年12月11日
53 阅读
0 评论
0 点赞
2023-12-11
Laravel中cookie存数组
function makeCookie($key,$val){ // 查看cookie中是否已经存过键为history_ids if(Cookie::has($key)){ // 已经存过了 $json_str = Cookie::get($key); // 获取的数据是json字符串,需要转成数组 $arr = json_decode($json_str,true); // 判断数组中的某个键是否存在 if(!array_key_exists($val,$arr)){ $arr[$val] = ["id"=>$val]; // [ ["id"=>4], ["id"=>888] ] // 将二维数组转成json格式的字符串 $json_str = json_encode($arr); Cookie::queue($key,$json_str); } }else{ // 还没存呢 第一次 $arr[$val]['id'] = $val; $json_str = json_encode($arr); // json形式的字符串 Cookie::queue($key,$json_str); }
2023年12月11日
23 阅读
0 评论
0 点赞
2023-12-11
git本地分支推送到远程分支
1、远端git库的创建和初始化创建git仓库可以在远端创建一个仓库,然后check到本地,在本地的文件里创建工程文件,然后提交也可以将本地现有的工程和远端的空仓库关联本地创建了一个工程 iOSDemo运行没有错误,就可以提交到远端了。一般情况下,远端仓库创建成功之后会有以下提示 ,如仓库名为:reposityName#Command line instructions #Git global setup --全局配置git账户名和关联邮箱 git config --global user.name "wjwdive" git config --global user.email "wjwdive@wjw.com.cn" #Create a new repository --第一种方式在你的某个目录启动终端命令,clone远端仓库到本地 git clone http://gitlab.wjw.com.cn/ios/reposityName.git cd reposityName touch README.md git add README.md git commit -m "add README" git push -u origin master #Existing folder --第二种方式,在本地文件夹初始化一个git库,并关联到远端仓库的master分支 cd existing_folder git init git remote add origin http://gitlab.wjw.com.cn/ios/reposityName.git git add . git commit -m "Initial commit" git push -u origin master #Existing Git repository --第三种方式,已经有本地git库,关联到远端仓库。用Xcode创建工程时勾选了本地 git cd existing_repo git remote rename origin old-origin git remote add origin http://gitlab.wjw.com.cn/ios/reposityName.git git push -u origin --all git push -u origin --tags 2、git创建分支并切换到当前新创建的分支上git checkout -b dev开发完成后git push origin dev此时就将本地分支推送到远程相应的分支上了记得推到远端之前先拉取最新代码git pull然后如果本地有一个分支是你创建的dev0628 ,是不能直接提交代码到远程的,因为远程并没有一个叫 origin/dev0628 的分支,需要将本地dev0628 关联到远程 origin/dev0628$git branch --set-upstream dev0628 origin/dev0628 fatal: the '--set-upstream' option is no longer supported. Please use '--track' or '--set-upstream-to' instead. --set-upstream已经过时,需要用 新的命令 --set-upstream-to $git branch --set-upstream-to origin/dev0628 Branch 'dev0628' set up to track remote branch 'dev0628' from 'origin'.这样本地分支就和远程分支关联起来了
2023年12月11日
12 阅读
0 评论
0 点赞
1
...
4
5
6
...
8