作者:matrix
发布时间:2013-11-08
分类:兼容并蓄
想要从 google Play 直接下载到 APK 文件的确是很麻烦的事情。
有了APK Downloader,那就可以直接下载应用。
地址
http://apps.evozi.com/apk-downloader/
说明:
输入框里填写google paly的应用地址
https://play.google.com/store/apps/details?id=org.leetzone.Android.yatsewidgetfree&hl=zh_CN
回车之后就有直接下载的那绿色按钮了
其他
20151016 P.S. apkpure同样可以
http://apkpure.com/
180322 P.S.
https://www.apkmirror.com
https://www.apklinker.com
190219 P.S.
https://apk-dl.com
参考:
http://www.freegroup.org/2013/11/apk-downloader/
如何直接从 Google Play 各国市场下载 APK 文件?
作者:matrix
发布时间:2013-11-04
分类:Wordpress 兼容并蓄
加强博客后台的登录安全 wowordpress验证码插件曾尝试用在后台的验证功能上面,但这东西不靠谱 也就放弃。
不过看到 乜都讲D 的方法,很不错~ 免插件
代码:
<?php
function bd_login_form()
{
?>
<p>
<label for="user_pass_2">身份认证<br />
<input type="password" name="pwd_2" id="user_pass_2" value="" size="20" tabindex="20" /></label>
</p>
<?
}
add_action('login_form', 'bd_login_form');
function bd_authenticate_username_password($user, $username = '', $password = '')
{
if ( isset($_POST['log']) )
{
$bDone = false;
if ( isset( $_REQUEST['pwd_2'] ) )
{
$pwd2 = $_REQUEST['pwd_2'];
if ( $pwd2 === '123' ) // 自由修改认证码
$bDone = true;
}
if ( $bDone == false )
{
remove_filter('authenticate', 'wp_authenticate_username_password', 20, 3);
$error = new WP_Error();
$error->add('incorrect_password', __('<strong>错误</strong>:身份认证失败。'));
return $error;
}
}
return $user;
}
add_filter('authenticate', 'bd_authenticate_username_password');
?>
说明:
此代码来自向WP登陆页加验证框 ,就改了几个字。
第22行123为认证密码,注意修改~
将上面代码保存到主题目录的functions.php使用。
作者:matrix
发布时间:2013-11-03
分类:零零星星
TIME: 20190120 工作几年回过头来发现最近真理这篇post都是17年4月份了。看来工作之后真是进步或许没时间亦或变懒,不为简单函数做笔记。
大多都外链工具所用到的,整理整理,以便后用。
使用@符号也可以
preg_match_all ("/share_uk=(.*?)share/",$ukidConnect,$ukidList, PREG_PATTERN_ORDER);
//使用preg_match_all正则匹配数据并保存到$titleList数组中
$ukidList[0][1]表示第1数组【第一个括弧的值,如.*?】匹配到的字符串
如果preg_match_all换成preg_match,$ukidList[1]也表示第1数组【第一个括弧的值,如.*?】匹配到的字符串
废弃的eregi函数同理,传说使用preg函数更高效
strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。
strpos() 返回字符串在另一个字符串中第一次出现的位置。
strpos 区别大小写strpos查找成功后则是返回的是位置。因为位置有可能是0,所以判断查找失败使用===false更合适。
$zhuaqian=strpos($titleList[0][0],"title>");
$zhuahou=strpos($titleList[0][0],"_免费高速下载|百度云 网盘-分享无限制");
$xinzhi=substr($titleList[0][0],6,$zhuahou-6); //取适当的两个位置中间的值也就是文件名
$_SERVER["REQUEST_URI"]; php自带的函数
取得当前url的页面url。
http://127.0.0.1/xxx.php?st=http://hhtjim.com
返回:/xxx.php?st=http://hhtjim.com
$NOWstr = 'http://' .$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"];//由于$_GET['url']取url不完整
$NEWstr=explode('?url=',$NOWstr);
$quurl = $NEWstr[1];
作用大大的有。
示例代码:
function curl_get($url,$post=false,$carry_ua=true){
$ch=curl_init($url);
if($carry_ua){
curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent:Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7D11 Safari/528.16'));
}
if ($post) {
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$get_url = curl_exec($ch);
curl_close($ch);
return $get_url;
}
不懂,再保留另外的
$curlPost=’http://songtaste.com/time.php’;
$ch = curl_init();//初始化curl
curl_setopt($ch,CURLOPT_URL, $url);//提交到指定网页
curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec($ch);//运行curl
curl_close($ch);
print_r($data);//输出结果
模拟POST提交数据
$post_data = array('nid' => '13714766852756201', 'shorturl' => 'QeEWZNzPansuQ');
$url='http://ajy8hpcasy.l17.yunpan.cn/share/downloadfile/';
$_REFERER='http://ajy8hpcasy.l17.yunpan.cn/lk/QeEWZNzPansuQ';
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_REFERER,$_REFERER);
ob_start();
curl_exec($ch);
$result = ob_get_contents() ;
ob_end_clean();
echo $result;
set_time_limit(0);//为0时:允许脚本运行的时间无上限。不设置此函数的话默认为30s
header("location: http://hhtjim.com");//跳转到http://hhtjim.com
list() 函数用数组中的元素为一组变量赋值。实际上是一种语言结构,不是函数。
list($shareid, $uk) = array_slice($res, 1, 2);
//数组中有shareid, uk元素,让元素名最为变量名字。
//$res为总的数组,1为规定取出元素的开始位置。2为需要返回的数组数量。
define("GREETING","Hello world!");
//常量名为GREETING,值为"Hello world!
条件表达式e1?e2:e3,若e1为真(非0),则此表达式的值为e2的值;若为假,则表达式的值为e3
例如:
preg_match('|Location: (.+)\r|', $src, $res);
$songurl = $res ? $res[1] : exit(" error!");
示例:
$rt='{"errno":0,"errmsg":"\u64cd\u4f5c\u6210\u529f","data":{"downloadurl":"http:\/\/wsdl25.yunpan.cn\/share.php?method=Share.download&fhash=119f736a936d62396d7dd71ff8fb7d187d69d3d9&xqid=23620387&fname=%E8%AF%B4%E6%98%8E.doc&fsize=211968&nid=13754589643979953&cqid=157ddad976b9aa811591ed43134891f7&st=48ea3770079bce5360f952cff1dc9d29&e=1382784599&dt=25.1291649b2f9ed61380291c5c0d711ca9","params":[]}}';
$obj = json_decode($rt);
$dll=$obj->data->downloadurl;
echo $dll;
结果显示:http://wsdl25.yunpan.cn/share.php?method=Share.download&fhash=119f736a936d62396d7dd71ff8fb7d187d69d3d9&xqid=23620387&fname=%E8%AF%B4%E6%98%8E.doc&fsize=211968&nid=13754589643979953&cqid=157ddad976b9aa811591ed43134891f7&st=48ea3770079bce5360f952cff1dc9d29&e=1382784599&dt=25.1291649b2f9ed61380291c5c0d711ca9
示例二:
json数据:
{
"songs": [{
"score": 100,
"copyrightId": 0,
"mvid": 0,
"mp3Url": "http://m1.music.126.net/fG44YGce-id8VZ9LjQIPpQ==/1069824813834035.mp3"
}],
"code": 200
}
php处理:
$eo='上面的json数据';
$obj=json_decode($eo,true);
echo $obj['songs'][0]['mp3Url'];
结果返回:
h t t p : / /m1.music.126.net/fG44YGce-id8VZ9LjQIPpQ==/1069824813834035.mp3
$b = &$a; //变量前& 表示$b 和 $a 引用了同一个变量
extract() 函数 把数组中的键名设置为变量,其键值为变量的值。
对于数组中的每个元素,键名用于变量名,键值用于变量值。
substr_replace($P,$v,9,1);//(替换第10位的数字为$p)
<<< 运算符,将由自定义分界符间的内容视为字符串,可对其间的变量做处理
echo <<<tem
<script>alert("输入的留言内容太长!");history.go(-1);</script>
tem;
tem是任意字符,<<<后的tem标记着开始。必须以 tem; 结尾,另起一行顶格(前面无空格)书写,否则会报错。
echo <<<'tem'
$a str
tem;
添加单引号 就不会解析里面的变量
urlencode()返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数.
rawurlencode()功能和urlencode基本一样,采用的是RFC1738编码,因此空格会编码为%20
sprintf() 函数把格式化的字符串写入一个变量中。
array_search()函数在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。
函数计算字符串的 MD5 散列,第二的参数规定十六进制或二进制输出格式。
PHP_EOL表示换行符
split()用正则表达式将字符串分割到数组中
mt_rand(A,B) 函数返回A到B的随机整数
创建一个包含变量名和它们的值的数组:
$firstname = "Bill";
$lastname = "Gates";
$age = "60";
$result = compact("firstname", "lastname", "age");
print_r($result);
extract() 正好相反
陆续添加整理。。。