PHP/MYSQL/SHELL
<?php
function password_strength($password){
$strength = 0;
// 小写字母
if(preg_match("/([a-z]+)/", $password)) $strength++;
// 大写字母
if(preg_match("/([A-Z]+)/", $password)) $strength++;
// 数字
if(preg_match("/([0-9]+)/", $password)) $strength++;
// 非任意(文字和数字)字母和下滑线的字符
if(preg_match("/(\W+)/", $password)) $strength++;
// 密码的长度
if (strlen($password) < 7) $strength--;
else $strength++;
switch($strength) {
case 0:
case 1:
$text = '密码强度太弱';
break;
case 2:
$text = '密码强度弱';
break;
case 3:
$text = '密码强度高';
break;
case 4:
case 5:
$text = '密码强度很高';
break;
}
return $text;
}
echo password_strength('123aZ456*'); //密码强度很高
?>
简单的笔记一下
select id,tags,(if(locate('人类',tags),2,0)+if(locate('暴力',tags),2,0)+if(locate('美学',tags),2,0)+if(locate('生物学',tags),2,0)+if(locate('机关枪',tags),2,0)) as zh from details order by zh desc
引用
官方给出的参考解决方法应该是首选检查的:
1、UCenter 应用 ID 需要和 UCenter 后台的 ID 一致;
2、UCenter 通信密钥需要和 UCenter 后台的通信密钥一致;
3、UCenter 访问地址查看是否是正确的地址;
4、UCenter IP 地址查看是否是 UCenter 所在的 MySQL 服务器的 IP 地址。
1、UCenter 应用 ID 需要和 UCenter 后台的 ID 一致;
2、UCenter 通信密钥需要和 UCenter 后台的通信密钥一致;
3、UCenter 访问地址查看是否是正确的地址;
4、UCenter IP 地址查看是否是 UCenter 所在的 MySQL 服务器的 IP 地址。
一一检查,并没有发现以上所提到的情况,这问题困扰了我相当长的一段时间了,我决定不解决誓不摆休。
后来按照http://www.discuz.net/thread-1388614-1-1.html上面的方法,顺藤摸瓜,找到了真正的原因。
原来是php5.3.x以后对set_magic_quotes_runtime函数默认不支持导致的问题。
//解决办法:找到api/uc.php
第32号:set_magic_quotes_runtime(0);
改为:@set_magic_quotes_runtime(0);
第32号:set_magic_quotes_runtime(0);
改为:@set_magic_quotes_runtime(0);
这个功能需求来自于网站运营策略,举倒子:
在一个排行列表中,默认有以下元素,顺序有一定的依据,假设是按下载次数排列。
$rows = array(
array('name'=>'QQ2010'),
array('name'=>'QQ2009'),
array('name'=>'迅雷5'),
array('name'=>'飞信2010'),
array('name'=>'Kugoo2010'),
array('name'=>'TTplayer'),
array('name'=>'Firefox4.0'),
array('name'=>'美图秀秀'),
array('name'=>'360safe'),
array('name'=>'Chrome6')
);
如果有一个客户[可牛杀毒]想买花10元/元下我们第二个位置,可以大家想,直接把QQ2009替换掉不就完事了吗。不,那样的话用户体验并不好,明明QQ2009是一个下载次数比较多的软件,为什么在列表中却没有了呢。
其实我们真正的需求是把QQ2009以下的单元都往后推,腾出第二个位置来给[可牛杀毒]。如果页面中只能显示10个单元,那倒霉的就是[Chrome6]了,谁叫他们付费买我们的位置呢,呵呵。
再说到程序原理上来吧,PHP要实现这个需求,挺简单,用数组函数array_splice就可以了,具体用法参照PHP手册。
给一个完整的例子吧:
<?php
$rows = array(
array('name'=>'QQ2010',),
array('name'=>'QQ2009',),
array('name'=>'迅雷5',),
array('name'=>'飞信2010',),
array('name'=>'Kugoo2010',),
array('name'=>'TTplayer',),
array('name'=>'Firefox4.0',),
array('name'=>'美图秀秀',),
array('name'=>'360safe',),
array('name'=>'Chrome6',),
);
$pop = array(
'2'=>array('name'=>'可牛杀毒'),
'5'=>array('name'=>'金山词霸2010'),
);
foreach($pop as $key=>$p){
array_splice($rows, $key-1, 0, array($p));
}
var_dump($rows);
?>
最近的结果是:
array(12) {
[0]=>
array(1) {
["name"]=>
string(6) "QQ2010"
}
[1]=>
array(1) {
["name"]=>
string(8) "可牛杀毒"
}
[2]=>
array(1) {
["name"]=>
string(6) "QQ2009"
}
[3]=>
array(1) {
["name"]=>
string(5) "迅雷5"
}
[4]=>
array(1) {
["name"]=>
string(12) "金山词霸2010"
}
[5]=>
array(1) {
["name"]=>
string(8) "飞信2010"
}
[6]=>
array(1) {
["name"]=>
string(9) "Kugoo2010"
}
[7]=>
array(1) {
["name"]=>
string(8) "TTplayer"
}
[8]=>
array(1) {
["name"]=>
string(10) "Firefox4.0"
}
[9]=>
array(1) {
["name"]=>
string(8) "美图秀秀"
}
[10]=>
array(1) {
["name"]=>
string(7) "360safe"
}
[11]=>
array(1) {
["name"]=>
string(7) "Chrome6"
}
}
在一个排行列表中,默认有以下元素,顺序有一定的依据,假设是按下载次数排列。
$rows = array(
array('name'=>'QQ2010'),
array('name'=>'QQ2009'),
array('name'=>'迅雷5'),
array('name'=>'飞信2010'),
array('name'=>'Kugoo2010'),
array('name'=>'TTplayer'),
array('name'=>'Firefox4.0'),
array('name'=>'美图秀秀'),
array('name'=>'360safe'),
array('name'=>'Chrome6')
);
如果有一个客户[可牛杀毒]想买花10元/元下我们第二个位置,可以大家想,直接把QQ2009替换掉不就完事了吗。不,那样的话用户体验并不好,明明QQ2009是一个下载次数比较多的软件,为什么在列表中却没有了呢。
其实我们真正的需求是把QQ2009以下的单元都往后推,腾出第二个位置来给[可牛杀毒]。如果页面中只能显示10个单元,那倒霉的就是[Chrome6]了,谁叫他们付费买我们的位置呢,呵呵。
再说到程序原理上来吧,PHP要实现这个需求,挺简单,用数组函数array_splice就可以了,具体用法参照PHP手册。
给一个完整的例子吧:
<?php
$rows = array(
array('name'=>'QQ2010',),
array('name'=>'QQ2009',),
array('name'=>'迅雷5',),
array('name'=>'飞信2010',),
array('name'=>'Kugoo2010',),
array('name'=>'TTplayer',),
array('name'=>'Firefox4.0',),
array('name'=>'美图秀秀',),
array('name'=>'360safe',),
array('name'=>'Chrome6',),
);
$pop = array(
'2'=>array('name'=>'可牛杀毒'),
'5'=>array('name'=>'金山词霸2010'),
);
foreach($pop as $key=>$p){
array_splice($rows, $key-1, 0, array($p));
}
var_dump($rows);
?>
最近的结果是:
array(12) {
[0]=>
array(1) {
["name"]=>
string(6) "QQ2010"
}
[1]=>
array(1) {
["name"]=>
string(8) "可牛杀毒"
}
[2]=>
array(1) {
["name"]=>
string(6) "QQ2009"
}
[3]=>
array(1) {
["name"]=>
string(5) "迅雷5"
}
[4]=>
array(1) {
["name"]=>
string(12) "金山词霸2010"
}
[5]=>
array(1) {
["name"]=>
string(8) "飞信2010"
}
[6]=>
array(1) {
["name"]=>
string(9) "Kugoo2010"
}
[7]=>
array(1) {
["name"]=>
string(8) "TTplayer"
}
[8]=>
array(1) {
["name"]=>
string(10) "Firefox4.0"
}
[9]=>
array(1) {
["name"]=>
string(8) "美图秀秀"
}
[10]=>
array(1) {
["name"]=>
string(7) "360safe"
}
[11]=>
array(1) {
["name"]=>
string(7) "Chrome6"
}
}
在使用swfupload上传文件的时候,老提示302。大概知道原因是因为验证失败自动跳转了。
swfuplaod在上传时,会新开一个进程,和原来的进程不一致,要解决这个问题,需要指定session_id,然后在登录页面判断,如果有post过来的session_id,那么就用函数session_id( $_POST['PHP_SESSIONID'])指定一下。
上传页的JS里面,可以获取当前的SESSION_ID的。
例如上传页的JS中:
在验证的判断页中:
(这一段是网上的注释:在带有Session验证的网站后台中SWFUpload无法正常工作,这是因为SWFUpload在上传时相当于重新开辟了一个新的Session 进程,因此无法与原有程序的Session保持一致,这就需要在上传时传递原有程序的SessionID,根据它来“找回”其应有的Session。)
特别感谢:妖怪、膘叔、觉醒。
swfuplaod在上传时,会新开一个进程,和原来的进程不一致,要解决这个问题,需要指定session_id,然后在登录页面判断,如果有post过来的session_id,那么就用函数session_id( $_POST['PHP_SESSIONID'])指定一下。
上传页的JS里面,可以获取当前的SESSION_ID的。
例如上传页的JS中:
post_params: {"PHPSESSID": "<?php echo session_id(); ?>"},
在验证的判断页中:
if (isset($_POST["PHPSESSID"])) {
session_id($_POST["PHPSESSID"]);
}
session_id($_POST["PHPSESSID"]);
}
(这一段是网上的注释:在带有Session验证的网站后台中SWFUpload无法正常工作,这是因为SWFUpload在上传时相当于重新开辟了一个新的Session 进程,因此无法与原有程序的Session保持一致,这就需要在上传时传递原有程序的SessionID,根据它来“找回”其应有的Session。)
特别感谢:妖怪、膘叔、觉醒。





