首页
关于
留言
友链
电台
壁纸
我的足迹
推荐
知易而行MCP
Search
1
乐橙CMS影视管理系统最全版本
109,326 阅读
2
VIP视频解析破解电影解析模拟破解影视解析
77,802 阅读
3
乐橙CMS影视管理系统4.0.18版本
16,941 阅读
4
新浪图片链接修复教程集合
15,129 阅读
5
反调试代码调试死机代码禁止F12代码
12,103 阅读
语言
PHP
Java
Go
JavaScript
CSS
Vue
资源教程
网络杂谈
技术文章
影视交流
软件工具
Mac
知易而行
登录
Search
标签搜索
PHP
AI
LINUX
微信
MYSQL
树莓派
OpenClaw
ESP32S3
小智AI
P2P
JS
破解
乐橙cms
支付
uniapp
人工智能
技术趋势
智能玩具
ESP32
DIY
子沐~
累计撰写
128
篇文章
累计收到
372
条评论
首页
栏目
语言
PHP
Java
Go
JavaScript
CSS
Vue
资源教程
网络杂谈
技术文章
影视交流
软件工具
Mac
知易而行
页面
关于
留言
友链
电台
壁纸
我的足迹
推荐
知易而行MCP
搜索到
128
篇与
的结果
2020-10-15
查看树莓派局域网IP,启动vnc远程连接
命令:ping raspberrypi.local 启动远程连接:vncserver
2020年10月15日
1,111 阅读
0 评论
0 点赞
2020-08-06
PHP使用BC Math 函数处理浮点运算问题
做小数的相加减问题是,出现了浮点运算不准的情况,看来都说解释型语言对于浮点运算都会有问题的说法是真的。首先看一段代码: $a = 0.1; $b = 0.7; var_dump(($a + $b) == 0.8); 打印出来的值居然为 boolean false这是为啥?PHP手册对于浮点数有以下警告信息:Warning浮点数精度显然简单的十进制分数如同 0.1 或 0.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999...。这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3333333. . .。所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数那么上面的算式我们应该改写为<?php $a = 0.1; $b = 0.7; var_dump(bcadd($a,$b,2) == 0.8); 这样就能解决浮点数的计算问题了
2020年08月06日
1,198 阅读
0 评论
0 点赞
2020-07-17
php时间换算适用于留言评论
function mac_friend_date($time) { if (!$time) return false; $fdate = ''; $d = time() - intval($time); $ld = $time - mktime(0, 0, 0, 0, 0, date('Y')); //得出年 $md = $time - mktime(0, 0, 0, date('m'), 0, date('Y')); //得出月 $byd = $time - mktime(0, 0, 0, date('m'), date('d') - 2, date('Y')); //前天 $yd = $time - mktime(0, 0, 0, date('m'), date('d') - 1, date('Y')); //昨天 $dd = $time - mktime(0, 0, 0, date('m'), date('d'), date('Y')); //今天 $td = $time - mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')); //明天 $atd = $time - mktime(0, 0, 0, date('m'), date('d') + 2, date('Y')); //后天 if ($d == 0) { $fdate = '刚刚'; } else { switch ($d) { case $d < $atd: $fdate = date('Y年m月d日', $time); break; case $d < $td: $fdate = '后天' . date('H:i', $time); break; case $d < 0: $fdate = '明天' . date('H:i', $time); break; case $d < 60: $fdate = $d . '秒前'; break; case $d < 3600: $fdate = floor($d / 60) . '分钟前'; break; case $d < $dd: $fdate = floor($d / 3600) . '小时前'; break; case $d < $yd: $fdate = '昨天' . date('H:i', $time); break; case $d < $byd: $fdate = '前天' . date('H:i', $time); break; case $d < $md: $fdate = date('m月d日 H:i', $time); break; case $d < $ld: $fdate = date('m月d日', $time); break; default: $fdate = date('Y年m月d日', $time); break; } } return $fdate; }
2020年07月17日
1,239 阅读
0 评论
0 点赞
2020-04-07
全新美化多功能爱蜗影视v9.1完整APP源码 无后门+有后台
###相信大家对千月已经不咋感兴趣了吧!今天我为大家带来一款超好看多功能优化影视源码,无后门,有后台,需要7.1php环境,需要数据库 ###使用notepad++批量替换URL【awgw.xiao18.top】为你的域名,替换名称【爱蜗影视】为你的应用名称; ###所有广告已经清除! 服务端: 1.将替换好的后端源码打包上传至站点根目录后解压; 2.配置网站伪静态为ThinkPHP; 3.创建数据库,并导入DataV3.sql.gz数据库文件 4.修改/application/database.php中数据库连接信息; 5.登陆后台为你的URL后面+/admin进入后台,默认用户名admin默认密码123456; 6.如需对接支付,请/pay、/daili_pay文件夹下epay.config.php文件中商户ID、密钥和云支付网关; 7.修改站点根目录下的download.htm文件可配置应用分发地址 APP端: 1.Apicloud新建APP,选配模块UIScrollPicture、shareAction、clipBoard、dialogBox、webBrowser、mcm、mam、QQPlus、wx、push、UIPullRefreshMotive; 2.修改前端根目录中的config.xml文件为你的APP信息(PS:包含APPID、QQOlus、wx等模块的配置信息); 3.修改/html/login.html文件中的微信登录apiKey和apiSecret; 4.使用TortoiseSVN上传前端代码; 5.Apicloud上传签名证书后云编译中设置版本编译后下载APP,并上传至分发平台 6.功能图片太多,没法一个一个给大家截图了!下载地址[hide]链接:https://btoss.cn/s/rof72wzq 密码:hbukgytvlto8[/hide]
2020年04月07日
3,515 阅读
19 评论
0 点赞
2020-04-01
微信公众号支付jsapi
<?php header('Content-type:text/html; Charset=utf-8'); $mchid = 'xxxxx'; //微信支付商户号 PartnerID 通过微信支付商户资料审核后邮件发送 $appid = 'xxxxx'; //微信支付申请对应的公众号的APPID $appKey = 'xxxxx'; //微信支付申请对应的公众号的APP Key $apiKey = 'xxxxx'; //https://pay.weixin.qq.com 帐户设置-安全设置-API安全-API密钥-设置API密钥 //①、获取用户openid $wxPay = new WxpayService($mchid,$appid,$appKey,$apiKey); $openId = $wxPay->GetOpenid(); //获取openid if(!$openId) exit('获取openid失败'); //②、统一下单 $outTradeNo = uniqid(); //你自己的商品订单号 $payAmount = 0.01; //付款金额,单位:元 $orderName = '支付测试'; //订单标题 $notifyUrl = 'https://www.xxx.com/wx/notify.php'; //付款成功后的回调地址(不要有问号) $payTime = time(); //付款时间 $jsApiParameters = $wxPay->createJsBizPackage($openId,$payAmount,$outTradeNo,$orderName,$notifyUrl,$payTime); $jsApiParameters = json_encode($jsApiParameters); ?> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>微信支付样例-支付</title> <script type="text/javascript"> //调用微信JS api 支付 function jsApiCall() { WeixinJSBridge.invoke( 'getBrandWCPayRequest', <?php echo $jsApiParameters; ?>, function(res){ WeixinJSBridge.log(res.err_msg); if(res.err_msg=='get_brand_wcpay_request:ok'){ alert('支付成功!'); }else{ alert('支付失败:'+res.err_code+res.err_desc+res.err_msg); } } ); } function callpay() { if (typeof WeixinJSBridge == "undefined"){ if( document.addEventListener ){ document.addEventListener('WeixinJSBridgeReady', jsApiCall, false); }else if (document.attachEvent){ document.attachEvent('WeixinJSBridgeReady', jsApiCall); document.attachEvent('onWeixinJSBridgeReady', jsApiCall); } }else{ jsApiCall(); } } </script> </head> <body> <br/> <font color="#9ACD32"><b>该笔订单支付金额为<span style="color:#f00;font-size:50px"><?php echo $payAmount?>元</span>钱</b></font><br/><br/> <div align="center"> <button style="width:210px; height:50px; border-radius: 15px;background-color:#FE6714; border:0px #FE6714 solid; cursor: pointer; color:white; font-size:16px;" type="button" onclick="callpay()" >立即支付</button> </div> </body> </html> <?php class WxpayService { protected $mchid; protected $appid; protected $appKey; protected $apiKey; public $data = null; public function __construct($mchid, $appid, $appKey,$key) { $this->mchid = $mchid; //https://pay.weixin.qq.com 产品中心-开发配置-商户号 $this->appid = $appid; //微信支付申请对应的公众号的APPID $this->appKey = $appKey; //微信支付申请对应的公众号的APP Key $this->apiKey = $key; //https://pay.weixin.qq.com 帐户设置-安全设置-API安全-API密钥-设置API密钥 } /** * 通过跳转获取用户的openid,跳转流程如下: * 1、设置自己需要调回的url及其其他参数,跳转到微信服务器https://open.weixin.qq.com/connect/oauth2/authorize * 2、微信服务处理完成之后会跳转回用户redirect_uri地址,此时会带上一些参数,如:code * @return 用户的openid */ public function GetOpenid() { //通过code获得openid if (!isset($_GET['code'])){ //触发微信返回code码 $scheme = $_SERVER['HTTPS']=='on' ? 'https://' : 'http://'; $uri = $_SERVER['PHP_SELF'].$_SERVER['QUERY_STRING']; if($_SERVER['REQUEST_URI']) $uri = $_SERVER['REQUEST_URI']; $baseUrl = urlencode($scheme.$_SERVER['HTTP_HOST'].$uri); $url = $this->__CreateOauthUrlForCode($baseUrl); Header("Location: $url"); exit(); } else { //获取code码,以获取openid $code = $_GET['code']; $openid = $this->getOpenidFromMp($code); return $openid; } } /** * 通过code从工作平台获取openid机器access_token * @param string $code 微信跳转回来带上的code * @return openid */ public function GetOpenidFromMp($code) { $url = $this->__CreateOauthUrlForOpenid($code); $res = self::curlGet($url); //取出openid $data = json_decode($res,true); $this->data = $data; $openid = $data['openid']; return $openid; } /** * 构造获取open和access_toke的url地址 * @param string $code,微信跳转带回的code * @return 请求的url */ private function __CreateOauthUrlForOpenid($code) { $urlObj["appid"] = $this->appid; $urlObj["secret"] = $this->appKey; $urlObj["code"] = $code; $urlObj["grant_type"] = "authorization_code"; $bizString = $this->ToUrlParams($urlObj); return "https://api.weixin.qq.com/sns/oauth2/access_token?".$bizString; } /** * 构造获取code的url连接 * @param string $redirectUrl 微信服务器回跳的url,需要url编码 * @return 返回构造好的url */ private function __CreateOauthUrlForCode($redirectUrl) { $urlObj["appid"] = $this->appid; $urlObj["redirect_uri"] = "$redirectUrl"; $urlObj["response_type"] = "code"; $urlObj["scope"] = "snsapi_base"; $urlObj["state"] = "STATE"."#wechat_redirect"; $bizString = $this->ToUrlParams($urlObj); return "https://open.weixin.qq.com/connect/oauth2/authorize?".$bizString; } /** * 拼接签名字符串 * @param array $urlObj * @return 返回已经拼接好的字符串 */ private function ToUrlParams($urlObj) { $buff = ""; foreach ($urlObj as $k => $v) { if($k != "sign") $buff .= $k . "=" . $v . "&"; } $buff = trim($buff, "&"); return $buff; } /** * 统一下单 * @param string $openid 调用【网页授权获取用户信息】接口获取到用户在该公众号下的Openid * @param float $totalFee 收款总费用 单位元 * @param string $outTradeNo 唯一的订单号 * @param string $orderName 订单名称 * @param string $notifyUrl 支付结果通知url 不要有问号 * @param string $timestamp 支付时间 * @return string */ public function createJsBizPackage($openid, $totalFee, $outTradeNo, $orderName, $notifyUrl, $timestamp) { $config = array( 'mch_id' => $this->mchid, 'appid' => $this->appid, 'key' => $this->apiKey, ); //$orderName = iconv('GBK','UTF-8',$orderName); $unified = array( 'appid' => $config['appid'], 'attach' => 'pay', //商家数据包,原样返回,如果填写中文,请注意转换为utf-8 'body' => $orderName, 'mch_id' => $config['mch_id'], 'nonce_str' => self::createNonceStr(), 'notify_url' => $notifyUrl, 'openid' => $openid, //rade_type=JSAPI,此参数必传 'out_trade_no' => $outTradeNo, 'spbill_create_ip' => '127.0.0.1', 'total_fee' => intval($totalFee * 100), //单位 转为分 'trade_type' => 'JSAPI', ); $unified['sign'] = self::getSign($unified, $config['key']); $responseXml = self::curlPost('https://api.mch.weixin.qq.com/pay/unifiedorder', self::arrayToXml($unified)); //禁止引用外部xml实体 libxml_disable_entity_loader(true); $unifiedOrder = simplexml_load_string($responseXml, 'SimpleXMLElement', LIBXML_NOCDATA); if ($unifiedOrder === false) { die('parse xml error'); } if ($unifiedOrder->return_code != 'SUCCESS') { die($unifiedOrder->return_msg); } if ($unifiedOrder->result_code != 'SUCCESS') { die($unifiedOrder->err_code); } $arr = array( "appId" => $config['appid'], "timeStamp" => "$timestamp", //这里是字符串的时间戳,不是int,所以需加引号 "nonceStr" => self::createNonceStr(), "package" => "prepay_id=" . $unifiedOrder->prepay_id, "signType" => 'MD5', ); $arr['paySign'] = self::getSign($arr, $config['key']); return $arr; } public static function curlGet($url = '', $options = array()) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 30); if (!empty($options)) { curl_setopt_array($ch, $options); } //https请求 不验证证书和host curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $data = curl_exec($ch); curl_close($ch); return $data; } public static function curlPost($url = '', $postData = '', $options = array()) { if (is_array($postData)) { $postData = http_build_query($postData); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置cURL允许执行的最长秒数 if (!empty($options)) { curl_setopt_array($ch, $options); } //https请求 不验证证书和host curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $data = curl_exec($ch); curl_close($ch); return $data; } public static function createNonceStr($length = 16) { $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; $str = ''; for ($i = 0; $i < $length; $i++) { $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); } return $str; } public static function arrayToXml($arr) { $xml = "<xml>"; foreach ($arr as $key => $val) { if (is_numeric($val)) { $xml .= "<" . $key . ">" . $val . "</" . $key . ">"; } else $xml .= "<" . $key . "><![CDATA[" . $val . "]]></" . $key . ">"; } $xml .= "</xml>"; return $xml; } public static function getSign($params, $key) { ksort($params, SORT_STRING); $unSignParaString = self::formatQueryParaMap($params, false); $signStr = strtoupper(md5($unSignParaString . "&key=" . $key)); return $signStr; } protected static function formatQueryParaMap($paraMap, $urlEncode = false) { $buff = ""; ksort($paraMap); foreach ($paraMap as $k => $v) { if (null != $v && "null" != $v) { if ($urlEncode) { $v = urlencode($v); } $buff .= $k . "=" . $v . "&"; } } $reqPar = ''; if (strlen($buff) > 0) { $reqPar = substr($buff, 0, strlen($buff) - 1); } return $reqPar; }
2020年04月01日
1,790 阅读
0 评论
0 点赞
2020-04-01
支付宝Jsapi支付源码
<?php error_reporting(0); header('Content-type:text/html; Charset=utf-8'); /*** 请填写以下配置信息 ***/ $appid = 'xxxxxx'; //https://open.alipay.com 账户中心->密钥管理->开放平台密钥,填写添加了电脑网站支付的应用的APPID $notifyUrl = 'http://www.xxx.com'; //付款成功后的异步回调地址 $outTradeNo = uniqid(); //你自己的商品订单号,不能重复 $payAmount = 0.1; //付款金额,单位:元 $orderName = '支付测试'; //订单标题 $signType = 'RSA2'; //签名算法类型,支持RSA2和RSA,推荐使用RSA2 //商户私钥 $rsaPrivateKey='xxxx'; /*** 配置结束 ***/ if(!isInAlipayClient()){ echo '<h3>请使用支付宝扫码打开该网页:</h3><img src="https://www.kuaizhan.com/common/encode-png?large=true&data='.getCurrentUrl().'" />'; exit(); } $aliPay = new AlipayService(); $aliPay->setAppid($appid); $aliPay->setScope('auth_base'); $aliPay->setRsaPrivateKey($rsaPrivateKey); $result = $aliPay->getToken(); $user = array(); if($baseInfo = $result['alipay_system_oauth_token_response']){ $userid = $baseInfo['user_id']; //支付用户的支付宝id }else{ echo '<h1>'.$result['error_response']['code'].':'.$result['error_response']['sub_msg'].'</h1>';exit(); } $aliPay->setNotifyUrl($notifyUrl); $aliPay->setTotalFee($payAmount); $aliPay->setOutTradeNo($outTradeNo); $aliPay->setOrderName($orderName); $aliPay->setBuyerId($userid); $orderStr = $aliPay->createOrder(); $tradeNo = $orderStr['alipay_trade_create_response']['trade_no']; if(!$tradeNo){ exit('获取订单号失败'); } ?> <!DOCTYPE html> <html lang="en"> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta charset="UTF-8"> <title>支付宝jsapi支付</title> <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.bootcss.com/jquery/2.1.0/jquery.min.js"></script> <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.min.js"></script> </head> <body> <div class="container"> <?php if(!isInAlipayClient()): ?> <h3>请使用支付宝扫码打开该网页:</h3> <img src="https://www.kuaizhan.com/common/encode-png?large=true&data=<?php echo getCurrentUrl()?>" /> <?php else: ?> <h3>点击唤起支付宝收银台</h3> <a href="javascript:void(0)" class="btn btn-primary btns-lg orderstrPay orderstr">点击支付</a> <div class="alert alert-success" role="alert" style="margin-top:30px;display: none"> </div> <?php endif; ?> </div> <p id="result"></p> <div class="alert alert-success" role="alert" style="margin-top:30px;display: none"> </div> <script type="application/javascript"> // 调试时可以通过在页面定义一个元素,打印信息,使用alert方法不够优雅 function log(obj) { $("#result").append(obj).append(" ").append("<br />"); } $(document).ready(function(){ // 页面载入完成后即唤起收银台 // 点击payButton按钮后唤起收银台 $(".orderstr").click(function() { tradePay("<?=$tradeNo?>"); }); // 通过jsapi关闭当前窗口,仅供参考,更多jsapi请访问 // /aod/54/104510 $("#closeButton").click(function() { AlipayJSBridge.call('closeWebview'); }); }); // 由于js的载入是异步的,所以可以通过该方法,当AlipayJSBridgeReady事件发生后,再执行callback方法 function ready(callback) { if (window.AlipayJSBridge) { callback && callback(); } else { document.addEventListener('AlipayJSBridgeReady', callback, false); } } function tradePay(tradeNO) { ready(function(){ // 通过传入交易号唤起快捷调用方式(注意tradeNO大小写严格) AlipayJSBridge.call("tradePay", { tradeNO: tradeNO }, function (data) { // log(JSON.stringify(data)); if(data.resultCode!=9000){ //支付失败 alert(data.resultCode+":"+data.memo); }else{ //支付成功 $(".alert-success").html("<strong>支付成功!</strong> 订单号:<?=$tradeNo?>"); $(".alert-success").show(); } }); }); } </script> </body> </html> <?php class AlipayService { protected $appId; protected $notifyUrl; protected $charset; //私钥值 protected $rsaPrivateKey; protected $totalFee; protected $outTradeNo; protected $orderName; protected $scope; protected $buyerId; protected $authCode; public function __construct() { $this->charset = 'utf8'; } public function setAppid($appid) { $this->appId = $appid; } public function setNotifyUrl($notifyUrl) { $this->notifyUrl = $notifyUrl; } public function setRsaPrivateKey($saPrivateKey) { $this->rsaPrivateKey = $saPrivateKey; } public function setTotalFee($payAmount) { $this->totalFee = $payAmount; } public function setOutTradeNo($outTradeNo) { $this->outTradeNo = $outTradeNo; } public function setOrderName($orderName) { $this->orderName = $orderName; } public function setScope($scope) { $this->scope = $scope; } public function setBuyerId($buyerId) { $this->buyerId = $buyerId; } public function setAuthCode($authCode) { $this->authCode = $authCode; } /** * 获取orderStr * @return array */ public function createOrder() { //请求参数 $requestConfigs = array( 'out_trade_no'=>$this->outTradeNo, 'total_amount'=>$this->totalFee, //单位 元 'subject'=>$this->orderName, //订单标题 'buyer_id'=>$this->buyerId, //购买者的userid 'timeout_express'=>'2h', //该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。 // 'store_id'=>'', //商户门店编号。该参数用于请求参数中以区分各门店,非必传项。 //'terminal_id'=>'xxx', //'extend_params'=>array( //'sys_service_provider_id'=>'xxxx' //系统商编号,该参数作为系统商返佣数据提取的依据,请填写系统商签约协议的PID //) ); $commonConfigs = array( //公共参数 'app_id' => $this->appId, 'method' => 'alipay.trade.create', //接口名称 'format' => 'JSON', 'charset'=>$this->charset, 'sign_type'=>'RSA2', 'timestamp'=>date('Y-m-d H:i:s'), 'version'=>'1.0', 'notify_url' => $this->notifyUrl, 'biz_content'=>json_encode($requestConfigs), ); $commonConfigs["sign"] = $this->generateSign($commonConfigs, $commonConfigs['sign_type']); $result = $this->curlPost('https://openapi.alipay.com/gateway.do',$commonConfigs); return json_decode($result,true); } public function generateSign($params, $signType = "RSA") { return $this->sign($this->getSignContent($params), $signType); } protected function sign($data, $signType = "RSA") { $priKey=$this->rsaPrivateKey; $res = "-----BEGIN RSA PRIVATE KEY-----\n" . wordwrap($priKey, 64, "\n", true) . "\n-----END RSA PRIVATE KEY-----"; ($res) or die('您使用的私钥格式错误,请检查RSA私钥配置'); if ("RSA2" == $signType) { openssl_sign($data, $sign, $res, version_compare(PHP_VERSION,'5.4.0', '<') ? SHA256 : OPENSSL_ALGO_SHA256); //OPENSSL_ALGO_SHA256是php5.4.8以上版本才支持 } else { openssl_sign($data, $sign, $res); } $sign = base64_encode($sign); return $sign; } /** * 校验$value是否非空 * if not set ,return true; * if is null , return true; **/ protected function checkEmpty($value) { if (!isset($value)) return true; if ($value === null) return true; if (trim($value) === "") return true; return false; } public function getSignContent($params) { ksort($params); $stringToBeSigned = ""; $i = 0; foreach ($params as $k => $v) { if (false === $this->checkEmpty($v) && "@" != substr($v, 0, 1)) { // 转换成目标字符集 $v = $this->characet($v, $this->charset); if ($i == 0) { $stringToBeSigned .= "$k" . "=" . "$v"; } else { $stringToBeSigned .= "&" . "$k" . "=" . "$v"; } $i++; } } unset ($k, $v); return $stringToBeSigned; } /** * 转换字符集编码 * @param $data * @param $targetCharset * @return string */ function characet($data, $targetCharset) { if (!empty($data)) { $fileType = $this->charset; if (strcasecmp($fileType, $targetCharset) != 0) { $data = mb_convert_encoding($data, $targetCharset, $fileType); //$data = iconv($fileType, $targetCharset.'//IGNORE', $data); } } return $data; } public function buildOrderStr($data) { return http_build_query($data); } public function curlPost($url = '', $postData = '', $options = array()) { if (is_array($postData)) { $postData = http_build_query($postData); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置cURL允许执行的最长秒数 if (!empty($options)) { curl_setopt_array($ch, $options); } //https请求 不验证证书和host curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $data = curl_exec($ch); curl_close($ch); return $data; } /** * 获取access_token和user_id */ public function getToken() { //通过code获得access_token和user_id if (!isset($_GET['auth_code'])){ //触发微信返回code码 $scheme = $_SERVER['HTTPS']=='on' ? 'https://' : 'http://'; $uri = $_SERVER['PHP_SELF'].$_SERVER['QUERY_STRING']; if($_SERVER['REQUEST_URI']) $uri = $_SERVER['REQUEST_URI']; $baseUrl = $scheme.$_SERVER['HTTP_HOST'].$uri; $url = $this->__CreateOauthUrlForCode($baseUrl); Header("Location: $url"); exit(); } else { //获取code码,以获取openid $this->setAuthCode($_GET['auth_code']); return $this->doAuth(); } } /** * 构造获取token的url连接 * @param string $redirectUrl 微信服务器回跳的url,需要url编码 * @return 返回构造好的url */ private function __CreateOauthUrlForCode($redirectUrl) { $urlObj["app_id"] = $this->appId; $urlObj["redirect_uri"] = urlencode($redirectUrl); $urlObj["scope"] = $this->scope; $urlObj["state"] = 123456; $bizString = $this->ToUrlParams($urlObj); return "https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?".$bizString; } /** * 拼接签名字符串 * @param array $urlObj * @return 返回已经拼接好的字符串 */ private function ToUrlParams($urlObj) { $buff = ""; foreach ($urlObj as $k => $v) { if($k != "sign") $buff .= $k . "=" . $v . "&"; } $buff = trim($buff, "&"); return $buff; } /** * 获取access_token和user_id * @return array */ public function doAuth() { $commonConfigs = array( //公共参数 'app_id' => $this->appId, 'method' => 'alipay.system.oauth.token',//接口名称 'format' => 'JSON', 'charset'=>$this->charset, 'sign_type'=>'RSA2', 'timestamp'=>date('Y-m-d H:i:s'), 'version'=>'1.0', 'grant_type'=>'authorization_code', 'code'=>$this->authCode, ); $commonConfigs["sign"] = $this->generateSign($commonConfigs, $commonConfigs['sign_type']); $result = $this->curlPost('https://openapi.alipay.com/gateway.do',$commonConfigs); $result = iconv('GBK','UTF-8',$result); return json_decode($result,true); } } // 是否支付宝客户端 function isInAlipayClient() { if( strpos($_SERVER['HTTP_USER_AGENT'], 'AlipayClient') !== false ) { return true; } return false; } function getCurrentUrl() { $scheme = $_SERVER['HTTPS']=='on' ? 'https://' : 'http://'; $uri = $_SERVER['PHP_SELF'].$_SERVER['QUERY_STRING']; if($_SERVER['REQUEST_URI']) $uri = $_SERVER['REQUEST_URI']; $baseUrl = urlencode($scheme.$_SERVER['HTTP_HOST'].$uri); return $baseUrl;
2020年04月01日
2,198 阅读
0 评论
0 点赞
2020-03-31
安卓+ios双端原生直播源码 后端+代理端源码 原价3.5万
【全源码】2020新款开发萌萌直播社交视频社区精品移动双端原生开发源码原价3.5万的直播源码,包括安卓+ios双端原生源码;后端+代理端源码;数据库。下载地址:https://pan.baidu.com/share/init?surl=vBEthzIOLl8yLt5BSUzNRA密码:[hide] 5bxr[/hide]
2020年03月31日
2,767 阅读
10 评论
0 点赞
2020-03-31
千月二开APP影视双端2020年最新版
下载地址:https://btoss.cn/s/icmq9obk密码:隐藏内容,请前往内页查看详情
2020年03月31日
7,276 阅读
29 评论
0 点赞
2020-01-14
宝塔面板 7.1.0破解专业版脚本
安装要求 内存:512M以上,推荐768M以上(纯面板约占系统60M内存) 硬盘:100M以上可用硬盘空间(纯面板约占20M磁盘空间) 系统:CentOS 7.1+ (Ubuntu16.04+.、Debian9.0+),确保是干净的操作系统,没有安装过其它环境带的Apache/Nginx/php/MySQL(已有环境不可安装) 编辑器问题已经修复,已经开心版的,请输入“bt”命令执行“9”清除面板缓存,以及手动清理浏览器缓存,即可正常使用! 宝塔面板 7.1.0 安装命令 Centos安装命令: [hide] yum install -y wget && wget -O install.sh http://download.miui.uk:25041/install/install_6.0.sh && sh install.sh [/hide] 试验性Centos/Ubuntu/Debian安装命令支持ipv6,注意使用root权限执行此命令 (支持Centos8) [hide] curl -sSO http://download.miui.uk:25041/install/new_install.sh && bash new_install.sh [/hide] Ubuntu/Deepin安装命令: wget -O install.sh http://download.miui.uk:25041/install/install-ubuntu_6.0.sh && sudo bash install.sh Debian安装命令: wget -O install.sh http://download.miui.uk:25041/install/install-ubuntu_6.0.sh && bash install.sh Fedora安装命令: wget -O install.sh http://download.miui.uk:25041/install/install_6.0.sh && bash install.sh Linux面板7.0.3升级命令: [hide] curl http://download.miui.uk:25041/install/update6.sh|bash [/hide] 插件相关脚本 收费Nginx防火墙(面板先安装在执行脚本): [hide] wget -O btwaf.sh http://download.miui.uk:25041/install/btwaf.sh && bash btwaf.sh install [/hide] 免费Nginx防火墙(无需面板安装): wget -O free_btwaf.sh http://download.miui.uk:25041/install/free_btwaf.sh && bash free_btwaf.sh install 收费Apache防火墙(面板先安装在执行脚本): wget -O btwaf_httpd.sh http://download.miui.uk:25041/install/btwaf_httpd.sh && bash btwaf_httpd.sh install 主机异常登录插件脚本 wget -O host_login.sh http://download.miui.uk:25041/install/host_login.sh && bash host_login.sh install 河马webshell查杀插件脚本 [hide] wget -O hm_shell_san.sh http://download.miui.uk:25041/install/hm_shell_san.sh && bash hm_shell_san.sh install [/hide] 修复工具 解除拉黑、解锁文件脚本: [hide] wget -O waf.sh http://download.miui.uk:25041/install/waf.sh && bash waf.sh [/hide]
2020年01月14日
5,292 阅读
15 评论
0 点赞
2019-12-18
thinkPHP漏洞修复
thinkPHP 本身函数漏洞解决办法 1,nginx过滤url (invokefunction|call_user_func_array|\\think\\) 2,thinkPHP App.php 374行添加 if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) { throw new HttpException(404, 'controller not exists:' . $controller); }
2019年12月18日
1,658 阅读
0 评论
0 点赞
1
...
6
7
8
...
13