首页
关于
Search
1
Fastadmin 美化后台样式
310,896 阅读
2
关于破解移动宽带光猫 型号: GS3101 超级管理员密码
26,922 阅读
3
给Thinkphp3用上composer
19,965 阅读
4
Wallpaper完美壁纸修复天气bug(无需申请API)
19,758 阅读
5
PECL无法安装时手动编译安装PHP扩展
19,611 阅读
Linux
Mysql
PHP
Nginx
归档
Android
Python
IOS
浴室沉思
C++
CCF CSP认证
Windows
C#
前端
登录
Search
标签搜索
php
git
Windows
wkhtmltopdf
短信
defense
API
Google Photos
python
wkhtmltoimage
网页快照
linux
ssr
https
mail
sms
小程序
封装
ComoBox
拼多多
Guooo
累计撰写
126
篇文章
累计收到
81
条评论
首页
栏目
Linux
Mysql
PHP
Nginx
归档
Android
Python
IOS
浴室沉思
C++
CCF CSP认证
Windows
C#
前端
页面
关于
搜索到
53
篇与
的结果
2017-06-29
关于原生PHP实现功能的示例
ThinkPHP 用多了,原生PHP都快不会了,不行,不行不行跨域头 header('Access-Control-Allow-Origin:*');PHP跳转页面header("Location: https://note.coccoo.cc"); //确保重定向后,后续代码不会被执行 exit; ``` ### PHP获取html中img标签的src值(正则表达式) > 实现功能主要是在`富文本编辑器`提交过来的数据,包含了所有的html样式,但是我要根据富文本提交过来的数据判断有没有图片,如果有的话就把图片提取出来当`封面`,如果没有就给它一个`默认的封面` //content 富文本内容 //matches 提取出来的包含src的数组 //pic 最终的src值 if (preg_match('/<img.+src=\"?(.+\.(jpg|gif|bmp|bnp|png))\"?.+>/i',$content,$matches)){ //得到图片地址结尾的位置 if ($num = strpos($matches[1],'"')){ //截取字符串,得到真正图片地址 $pic = substr($matches[1],0,$num); }else{ $pic = $matches[1]; } } ### mysqli连接数据库(可能)常用功能 > 现在貌似`mysql_`函数都慢慢被废弃了,开始转用`mysqli_`函数,比如`mysqli_connect` 设置编码$con = mysqli_connect($host,$username,$password,$db) or die("Unable to connect to the MySQL!"); mysqli_query($con,"set names 'utf8'");//设置编码开启事务$con->autocommit(false);//开启事务 $res1 = mysqli_query($con,$sql1);//第一条操作 $res2 = mysqli_query($con,$sql2);//第二条操作 if ($res1 && $res2){ //提交事务 $con->commit(); //关闭连接 mysqli_close($con); }else{ //回滚 $con->rollback(); } ### 判断某时间戳是否在今年 > 判断某个时间戳是不是在今年,如果是,就不显示带年份,如果不是,就显示年份时间 //$dis_time 要展示出来的时间 //date('Y',time()) == date('Y',$dis_time) 判断时间戳是否是今年 $dis_time = (date('Y',time()) == date('Y',$dis_time)) ? date('m-d H:i',$dis_time) : date('y-m-d H:i',$dis_time);这样展示出来的数据就有两种形式,`06-29 12:28` 或者 `2008-07-22 12:28` ### 时间戳转换成微信朋友圈形式 > 把时间戳转换成类似朋友圈的形式,比如`一分钟前`,`两天前`之类的 //@param $addTime 传进去的时间戳 //return $timeStr 转换后的时间public function getTime($addTime){ $nowTime = time();//当前时间 if($addTime > $nowTime) { return ""; } $dTime = $nowTime-$addTime;//时间差 $year = intval($dTime/2592000/12);//年数 $month = intval($dTime/2592000);//月数 $day = intval($dTime/86400);//天数 $hour = intval($dTime/3600);//小时 $min = intval($dTime/60);//分钟 if ($min<1){ $timeStr = '刚刚'; }else if ($hour < 1){ //分钟处理 $timeStr = $min.'分钟前'; }else if ($day<1){ //小时处理 $timeStr = $hour.'小时前'; }else if ($month<1){ //天数处理 $timeStr = $day.'天前'; }else if ($year<1){ //月数处理 $timeStr = $month.'月前'; }else{ //年数处理 $timeStr = $year.'年前'; } return $timeStr; }
2017年06月29日
1,583 阅读
0 评论
0 点赞
2017-06-22
Session会话和浏览器的关系
今天想和大家分享一个关于Session的话题: 当浏览器关闭时,Session就被销毁了?我们知道Session的作用是可以保存当前用户的状态信息,初学它的时候,认为Session的生命周期是从打开一个浏览器窗口发送请求到关闭浏览器窗口,但其实这种说法是不正确的!下面就具体的去解释:当用户第一次访问Web应用中支持Session的某个网页时,就会开始一个新的Session,那么接下来当用户浏览这个Web应用的不同网页时,始终处于一个Session中再详细些:当一个Session开始时,Servlet容器会创建一个HttpSession对象,那么在HttpSession对象中,可以存放用户状态的信息Servlet容器为HttpSession对象分配一个唯一标识符即Sessionid,Servlet容器把Sessionid作为一种Cookie保存在客户端的 浏览器 中用户每次发出Http请求时,Servlet容器会从HttpServletRequest对象中取出Sessionid,然后根据这个Sessionid找到相应的HttpSession对象,从而获取用户的状态信息以上就是Session的运行机制,但是还没有提到Session的生命周期,再往下了解!其实让Session结束生命周期,有以下两种办法:一个是Session.invalidate()方法,不过这个方法在实际的开发中,并不推荐,可能在强制注销用户的时候会使用;一个是当前用户和服务器的交互时间超过默认时间后,Session会失效我们知道Session是存在于服务器端的,当把浏览器关闭时,浏览器并没有向服务器发送任何请求来关闭Session,自然Session也不会被销毁,但是可以做一点努力,在所有的客户端页面里使用js的window.onclose来监视浏览器的关闭动作,然后向服务器发送一个请求来关闭Session,但是这种做法在实际的开发中也是不推荐使用的,最正常的办法就是不去管它,让它等到默认的时间后,自动销毁那么为什么当我们关闭浏览器后,就再也访问不到之前的session了呢?其实之前的Session一直都在服务器端,而当我们关闭浏览器时,此时的Cookie(应该是会话Cookie)是存在于浏览器的进程中的,当浏览器关闭时,Cookie也就不存在了。其实Cookie有两种:一种是存在于浏览器的进程中;一种是存在于硬盘上而session的Cookie是存在于浏览器的进程中,那么这种Cookie我们称为会话Cookie,当我们重新打开浏览器窗口时,之前的Cookie中存放的Sessionid已经不存在了,此时服务器从HttpServletRequest对象中没有检查到sessionid,服务器会再发送一个新的存有Sessionid的Cookie到客户端的浏览器中,此时对应的是一个新的会话,而服务器上原先的session等到它的默认时间到之后,便会自动销毁。ps:当在同一个浏览器中同时打开多个标签,发送同一个请求或不同的请求,仍是同一个session;当不在同一个窗口中打开相同的浏览器时,发送请求,仍是同一个session;当使用不同的浏览器时,发送请求,即使发送相同的请求,是不同的session;当把当前某个浏览器的窗口全关闭,再打开,发起相同的请求时,就是本文所阐述的,是不同的session,但是它和session的生命周期是没有关系的.
2017年06月22日
1,583 阅读
0 评论
0 点赞
2017-06-18
网站初步实现https访问
2017/09/24 : 对了,开头补充一点,一般网站访问https大多是使用301永久跳转的,具体实现规则在下面也有。可以忽视上面那句话~~今天服务器一度崩溃,因为一个字母因为在朋友那里看到他已经升级https,所以我也准备把网站从http改成https,看起来不过就加一个字母而已有点麻烦,不过好在初步完成了方法首先要去某个地方申请证书,小网站申请免费的就好,我是在腾讯云申请个免费的。其实你也可以自建证书,只不过可能会显示你的证书不安全。申请完证书之后就是安装证书,腾讯云文档写的还是比较清楚的,自己看一下基本上都能过。然后去下载证书,把你下载的证书解压放到你的服务器上,比如放在/etc/http/conf/ca/下,然后按照这个,不管是Apache、nginx还是IIS都有对应的方法。踩坑接下来是坑(敲黑板)1. 原谅我一直不知道服务器使用https是一定要用443端口的,所以80要改成4432. web代理软件需要打开重定向支持,没有对应模块(mod_ssl和openssl)的话需要自行安装或者编译安装,方法去百度 google3. 配置网站自动跳转HTTPS在访问网站的时候一般不会手动加https://,所以需要用Apache重定向功能让http的访问流量自动转移到https,所以就要用到 .htaccess这个文件了,具体使用方法参考上一条或者如果你也是使用Apache并且不想用.htaccess文件的话,可以用这种方法:在你原本的虚拟主机配置上加一句话 :Redirect permanent / note.coccoo.cc:443现在你的站点看起来就像这样:<VirtualHost *:80> ServerName note.coccoo.cc Redirect permanent / note.coccoo.cc:443 DocumentRoot "/home/wwwroot/typecho" </VirtualHost>或者也可以直接在站点加上如下代码那么你的站点就像这样<VirtualHost *:80> ServerName note.coccoo.cc DocumentRoot "/home/wwwroot/typecho" RewriteEngine on RewriteCond %{HTTPS} !=on RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R] </VirtualHost>让你的站点下所有的链接都跳转到443端口,然后再配置一个443端口的虚拟主机就可以了现在我的配置就像这样了<VirtualHost *:80> ServerName note.coccoo.cc Redirect permanent / note.coccoo.cc:443 DocumentRoot "/home/wwwroot/typecho" </VirtualHost> <VirtualHost *:443> ServerName note.coccoo.cc:443 DocumentRoot "/home/wwwroot/typecho" SSLEngine on SSLCertificateFile /etc/httpd/conf/extra/note/2_note.coccoo.cc.crt SSLCertificateKeyFile /etc/httpd/conf/extra/note/3_note.coccoo.cc.key SSLCertificateChainFile /etc/httpd/conf/extra/note/1_root_bundle.crt <Directory "/home/wwwroot/typecho"> AllowOverride All </Directory> </VirtualHost>4. 在使用https的时候,正常情况下在网站域名前会出现安全字样,如下但是如果你的网站中有任何文件(包括但不限于图片、js、css等)不是通过https访问的,就会在域名前出现一个感叹号,如下5. 我的部分.htaccess配置<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{SERVER_PORT} !^443$ #RewriteCond %{REQUEST_URI} !^/test.php RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301] </IfModule>以上规则的意思是,如果访问的url的端口不是443,且访问页面不是test.php,则应用RewriteRule这条规则。这样便实现了:访问了 http://localhost/index.php 或者 http://localhost/admin/index.php 等页面的时候会自动跳转到 https://localhost/index.php 或者 https://localhost/admin/index.php。解释下%{SERVER_PORT} —— 访问端口%{SERVER_NAME} —— 比如如果url是 http://localhost/test.php,则是指 localhost%{REQUEST_URI} —— 比如如果url是 http://localhost/test.php,则是指 /test.php
2017年06月18日
2,218 阅读
0 评论
0 点赞
2017-06-14
PHP发送邮件
我当时使用的是PHPMailer-5.2版本,在更新到6.x版本以后使用方式不同了,请自行根据文档测试或者直接使用 5.2 版本的分支最近突然想在Centos服务器上弄一些定时任务,但是又不想一直监视,所以打算在服务器上弄一个邮件功能,这样当任务完成的时候就可以直接通过邮件给我及时发送通知。先在github上找了一下,发现了一个开源的邮件发送模块,很欣慰地址:https://github.com/PHPMailer/PHPMailer目前为止该项目已经有了8884个star,据文档说明,该项目使用范围很广,包括WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla!等,更多信息你还是自己去github上看吧,不介绍了。粗略看了一下使用起来比较简单,所以就用这个吧!你需要一点点东西一台能用的电脑/服务器安装了php有至少两个邮箱(一个也可以,自己给自己发:))0.5克 脑子好,开始了以网易邮箱举例,首先你要知道如何开启SMTP (其实每个邮箱官网都会有介绍,自己去看看就好啦,这里给你几个示例)首先,先从github上下载或者使用git方式克隆下来git clone https://github.com/PHPMailer/PHPMailer.git下载下来应该就是一个文件夹了,然后你在文件夹外面新建一个index.php文件,目录应该如下了mail (文件夹)PHPMail (文件夹)index.php然后你就在这个index.php文件里写点东西就可以了,PHPMail这个文件夹我们不需要动,因为我们需求又不高,如果只是简单发送邮件的话(笑按照这个代码复制进去改一下就行了<?PHP //邮件发送 require './PHPMailer/PHPMailerAutoload.php'; $mail = new PHPMailer; // $mail->SMTPDebug = 3; // 调试输出 $mail->isSMTP(); // Set mailer to use SMTP $mail->Host = 'smtp.163.com'; // 这个是网易邮箱的 $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = 'gty0211@163.com'; // 邮箱帐号 $mail->Password = 'password'; // SMTP 密码(这个密码一般和邮箱登陆密码不一样) $mail->SMTPSecure = 'ssl'; // 加密方式,可以设置 TLS , ssl 也可以 $mail->Port = 465; // 协议端口号,跟加密方式关联,一般是465,不行的话就一个个试试吧 $mail->setFrom('gty0211@163.com', 'TianYu'); //发信地址,后一个是昵称 $mail->addAddress('xxxxxxxxx@qq.com','demo'); // 收信地址,后一个是昵称 // $mail->addAddress('xxxxxxxxx@qq.com'); // 也可以这样写,昵称不填 // $mail->addReplyTo('info@example.com', 'Information'); // // $mail->addCC('cc@example.com'); //抄送 // $mail->addBCC('bcc@example.com'); //抄送有关,反正我不用 // $mail->addAttachment('/var/tmp/file.tar.gz'); // 添加附件地址 // $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // 添加附件,修改附件名称 $mail->isHTML(true); // 是否发送HTML格式邮件 $mail->Subject = '这是个主题'; //主题 $mail->Body = '这是一个 HTML 形式的 <b> bold!</b>'; //html类型正文 $mail->AltBody = '这是个纯文本形式的body!'; //普通形式正文 if(!$mail->send()) { echo 'Message 发送失败. '; echo '错误信息: ' . $mail->ErrorInfo; } else { echo 'Message 已发送'; }然后让php执行就可以了php index.php或者直接访问到这个index.php项目地址,也会自动发送邮件。好了,邮件发送到这里就已经成功了。你也可以作死地把这个邮件发送功能嵌入到其他项目,shell,python脚本里面。The END
2017年06月14日
2,489 阅读
2 评论
0 点赞
2017-06-05
PHP微信网页授权获取openid和获取用户信息
头一次接触微信认证和curl,摸了两三天才找到点门路,先把代码贴上来,以备不时之需入口函数是getOpenid先新建一个index.php,代码如下<?php include('./wechat.php'); $wechat = new Wechat(); //获取openid和accessToken $wechat->getOpenid(); //获取用户信息 //$wechat->getUserInfo();然后在和index.php同级的目录新建一个wechat.php在这个文件里你要改一个地址,看仔细!<?php /** * 微信公众号获取openid */ class Wechat { private $redirect_url = "https://note.coccoo.cc/PHP/61.html";//这里填你自己的地址!!要能访问到这个类下的getOpenid方法!! //用户同意授权,获取openid //应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid), snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。) public function getOpenid($scope = 'snsapi_base'){ if (!isset($_GET['code'])){ $url = $this->get_authorize_url($scope); Header("Location: $url"); exit(); }else{ //获取code码用以获取openid $code = $_GET['code']; $res = $this->get_token($code); return $res;//完整数据 //return $res['openid']; } } /** * 拼接url */ public function get_authorize_url($scope){ $appid='xxxxxxxxxxx';//微信公众号appid $state='123';//状态码 //处理回调域名 $redirect_url = $this->redirect_url; $redirect_url = urlencode($redirect_url); //对中文转码 //拼接url $url = "https://open.weixin.qq.com/connect/oauth2/authorize?"; $url = $url . 'appid='.$appid; $url = $url . '&redirect_uri='.$redirect_url; $url = $url . '&response_type=code'; $url = $url . "&scope=" . $scope; //应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。 $url = $url . "&state=" . $state; return $url; } /** * 通过code换取openid/token */ public function get_token($code = ''){ $appid='xxxxxxxxxxxxxx';//微信公众号appid $secret='xxxxxxxxx';//应用密钥 $wx_access_url= 'https://api.weixin.qq.com/sns/oauth2/access_token?'; $wx_access_url = $wx_access_url . 'appid='.$appid; $wx_access_url = $wx_access_url . '&secret='.$secret; $wx_access_url = $wx_access_url . '&code='.$code; $wx_access_url = $wx_access_url . '&grant_type=authorization_code'; $res = $this->http($wx_access_url); //发送网络请求 if ($res[0] == 200){ $arr = json_decode($res[1],true); //返回数组 return $arr; } return $res[1]; } /** * 微信获取用户信息 */ public function getUserInfo(){ $data = $this->getOpenid('snsapi_userinfo');//获取用户信息 $access_token = $data['access_token']; $openId = $data['openid']; $infourl = 'https://api.weixin.qq.com/sns/userinfo?'; $infourl = $infourl . 'access_token='.$access_token; $infourl = $infourl . '&openid='.$openId; $infourl = $infourl . '&lang=zh_CN'; $info = $this->http($infourl); //用户信息数据 if($info[0] == 200){ return json_decode($info[1],true);//返回包含信息的数组 } return $info[1]; } //发送网络请求 public function http($url, $method='', $postfields = null, $headers = array(), $debug = false) { $ci = curl_init(); /* Curl settings */ curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ci, CURLOPT_TIMEOUT, 30); curl_setopt($ci, CURLOPT_RETURNTRANSFER, true); //没有这下面一句,可能报错“SSL certificate problem: unable to get local issuer certificate” //但是这一句是跳过验证,所以安全敏感度不高的可以用这个方法 curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, 0); switch ($method) { case 'POST': curl_setopt($ci, CURLOPT_POST, true); if (!empty($postfields)) { curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields); $this->postdata = $postfields; } break; } curl_setopt($ci, CURLOPT_URL, $url); curl_setopt($ci, CURLOPT_HTTPHEADER, $headers); curl_setopt($ci, CURLINFO_HEADER_OUT, true); $response = curl_exec($ci); $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE); if ($debug) { echo "=====post data======\r\n"; var_dump($postfields); echo '=====info=====' . "\r\n"; print_r(curl_getinfo($ci)); echo '=====$response=====' . "\r\n"; print_r($response); } curl_close($ci); return array($http_code, $response); } }然后在微信浏览器访问你的index.php就可以了。
2017年06月05日
3,446 阅读
2 评论
0 点赞
2017-06-05
Centos搭建SVN服务器
安装svn服务yum install subversion输入rpm -ql subversion可以看安装的位置,这样说明安装,已经成功一半了创建svn目录mkdir -p /var/svn/创建版本库svnadmin create /var/svn/svnrepos要想在同一个端口创建多个项目的话就在次执行这个命令就可以了 svnadmin create /var/svn/项目名执行了这个命令之后会在/var/svn/svnrepos目录下生成如下这些文件,这样你距离成功还差9%啦进入conf目录,里面都是些配置文件authz文件是权限控制文件passwd是帐号密码文件svnserve.conf SVN服务配置文件设置帐号密码vi passwd在[users]块中添加用户和密码,格式:帐号=密码,如demo=demo设置权限vi authz在末尾添加如下代码:[/] demo=rw demo2=r意思是版本库的根目录demo对其有读写权限,demo2(如果有这个用户的话)只有读权限。修改svnserve.conf文件vi svnserve.conf去掉这几句前面的#号anon-access = read #匿名用户可读 auth-access = write #授权用户可写 password-db = passwd #使用哪个文件作为账号文件 authz-db = authz #使用哪个文件作为权限文件 realm = /var/svn/svnrepos # 认证空间名,版本库所在目录启动svn版本库至此,你已经成功99%啦svnserve -d -r /var/svn/这里-d是指后台运行,-r是指根目录是 /var/svn/自行去测试吧 100% Getsvn://你的ip/svnrepos停止服务killall svnserve
2017年06月05日
1,590 阅读
0 评论
0 点赞
2017-06-04
Centos7 升级PHP版本到5.6
据说Centos是比较追求稳定的版本,它上面所有yum源的软件版本都是比较靠后的。所以当有些项目需要新版软件的时候,就需要手动更新了。这是一个项目的报错This version of ownCloud requires at least PHP 5.6.0 You are currently running 5.4.16. Please update your PHP version.我是打算从5.4的版本升级到5.6,其实升级其他版本也一样,可以执行yum list | grep php查看所有可安装的版本。下面来讲一下如何升级进入终端后查看php版本php -v 输出可能如下: PHP 5.4.35 (cli) (built: Nov 14 2014 07:04:10) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2015, by Zend Technologies 执行下面的命令升级软件仓库 rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm 执行下面的命令删除phpyum remove php-common 然后像安装那样问你是否继续的,输入yes即可 清除一下缓存yum clean all安装php 5.6版本(php56w-devel这个不是必需的)yum install -y php56w php56w-fpm php56w-opcache php56w-xml php56w-mcrypt php56w-gd php56w-devel php56w-mysql php56w-intl php56w-mbstring php56w-cli php56w-common php56w-pdo重启httpdservice httpd restart #查看最新的版本 php -v #现在应该是5.6了!
2017年06月04日
4,699 阅读
5 评论
0 点赞
2017-06-01
微信公众号开发保持用户登录状态思路
先看个流程图微信开发离不开openid(为了识别用户,每个用户针对每个公众号会产生一个安全的openid).而通常我们获取openid,以及获取用户的基本信息是通过用户授权的方式进行获取。那么ok,怎样通过授权方式获取呢,看上面的流程图中的code(此code是由微信为我们提供,只能使用一次),并且该code只有当我们点配置的菜单时(配置菜单要使用用户授权的方式配置),才能获取到。所以当用户点击菜单时:我们先判断该code,如果不为null,通过该code获取openid。拿到openid后,我们去数据库通过openid查询用户信息,如果返回有结果说明该用户已经登录过,将用户信息放置session中,跳转到登录后的页面拿到openid后,如果我们去数据库没有查询到用户信息,说明该用户没有登录过,跳转到登录页面,让用户登录,登录完将openid与用户信息插入到数据库,并放置session中,跳转到登录后的页面。如果code为null,我们从session中直接取用户信息(注意session过期的处理),如果取到用户信息,进入到登录后的页面如果code为null,并且session过期,或者没有获取到用户的信息,跳转到微信授权的地址,重新走流程,形成循环。这样,我们就能保证用户一次登录,永久不用登录的效果了,其实最主要还是要搞清openid,每个用户针对同一个公众号,此openid是永远不会变的,哪怕是你取消了重新关注。注意事项今天使用测试号测试的时候,服务器验证通过,但是无论怎么获取code都是Scope参数错误或没有Scope权限(redirect_url错误也可能是这个原因)。看了下参数不可能错误,只有权限问题。最终发现问题:测试号权限列表里面有个网页授权用户基本信息,在那里填入域名或者ip,不带www和http://,不需要详细地址,然后在获取code就没问题了。
2017年06月01日
2,254 阅读
0 评论
0 点赞
1
...
4
5
6
7