php实现 密码验证合格程序(复杂问题分类,超简单的)(分类+规范编码)
php实现 密码验证合格程序(复杂问题分类,超简单的)(分类+规范编码)
一、总结
一句话总结:复杂问题分类,超简单的。分类+规范编码。
1、写的时候判断 不能有相同长度超2的子串重复 的时候,子串重复写成隔2位置了?
应该是任意的
47 for($j=$ii+2;$j<$len;$j++){
2、分类,把大问题化小,就会非常简单?
4 //1、判断长度
5 if(!isLength($str)){
6 echo 'NG'.PHP_EOL;
7 }
8 //2、判断包括大小写字母.数字.其它符号,以上四种至少三种
9 else if(!isMulti($str)){
10 echo 'NG'.PHP_EOL;
11 }
12 //3、判断不能有相同长度超2的子串重复
13 else if(hasSubstr($str)){
14 echo 'NG'.PHP_EOL;
15 }else{
16 echo 'OK'.PHP_EOL;
17 }
3、写的时候判断 不能有相同长度超2的子串重复 的时候,返回逻辑出错?
有相同子串返回true,没有相同子串返回false,逻辑弄反了
56 if($count==3) return true;
57
58 }
59
60 }
61 return false;
4、多组输入如何解决?
while
3 while($str=trim(fgets(STDIN))){
5、判断 包括大小写字母.数字.其它符号,以上四种至少三种 怎么写?
分类+正则+统计分类合格情况
26 function isMulti($str){
27 $myType=0;
28 //有数字
29 if(preg_match('/\d/',$str)) $myType++;
30 //有大写字母
31 if(preg_match('/[A-Z]/',$str)) $myType++;
32 //有小写写字母
33 if(preg_match('/[a-z]/',$str)) $myType++;
34 //有其它字符
35 $str2=preg_replace('/[A-Za-z0-9]/','',$str);
36 $len2=strlen($str2);
37 if($len2>=1) $myType++;
38
39 if($myType>=3) return true;
40 else return false;
41 }
二、密码验证合格程序
题目描述
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
说明:长度超过2的子串
输入描述:
一组或多组长度超过2的子符串。每组占一行
输出描述:
如果符合要求输出:OK,否则输出NG
代码:
<?php
//分类来解决情况比较多或者稍微复杂一点的情况
while($str=trim(fgets(STDIN))){
//1、判断长度
if(!isLength($str)){
echo 'NG'.PHP_EOL;
}
//2、判断包括大小写字母.数字.其它符号,以上四种至少三种
else if(!isMulti($str)){
echo 'NG'.PHP_EOL;
}
//3、判断不能有相同长度超2的子串重复
else if(hasSubstr($str)){
echo 'NG'.PHP_EOL;
}else{
echo 'OK'.PHP_EOL;
}
} function isLength($str){
$len=strlen($str);
if($len>8) return true;
else return false;
} function isMulti($str){
$myType=0;
//有数字
if(preg_match('/\d/',$str)) $myType++;
//有大写字母
if(preg_match('/[A-Z]/',$str)) $myType++;
//有小写写字母
if(preg_match('/[a-z]/',$str)) $myType++;
//有其它字符
$str2=preg_replace('/[A-Za-z0-9]/','',$str);
$len2=strlen($str2);
if($len2>=1) $myType++; if($myType>=3) return true;
else return false;
} function hasSubstr($str){
$len=strlen($str);
for($i=0;$i<$len;$i++){
$ii=$i;
for($j=$ii+2;$j<$len;$j++){
$jj=$j;
$count=0;
while($jj<$len&&$count<=2&&$str[$ii]==$str[$jj]){
//echo $str[$ii]." ".$str[$jj].PHP_EOL;
$ii++;
$jj++;
$count++;
}
if($count==3) return true; } }
return false;
} ?>
php实现 密码验证合格程序(复杂问题分类,超简单的)(分类+规范编码)的更多相关文章
- WebService 用户名密码验证
原文:WebService 用户名密码验证 在项目开发的过程中,WebService是经常要用的,当调用WebService方法时,需要经过服务的验证才可以调用,一般就是用户名/密码验证,还有一个就是 ...
- PHP操作Redis(一) PHP连接Redis,含Redis密码验证、指定某一Redis数据库
台服务器上都快开启200个redis实例了,看着就崩溃了.这么做无非就是想让不同类型的数据属于不同的应用程序而彼此分开. 那么,redis有没有什么方法使不同的应用程序数据彼此分开同时又存储在相同的实 ...
- 【WCF】使用“用户名/密码”验证的合理方法
我不敢说俺的方法是最佳方案,反正这世界上很多东西都是变动的,正像老子所说的——“反(返)者,道之动”.以往看到有些文章中说,为每个客户端安装证书嫌麻烦,就直接采用把用户名和密码塞在SOAP头中发送,然 ...
- WCF 安全性之 自定义用户名密码验证
案例下载 http://download.csdn.net/detail/woxpp/4113172 客户端调用代码 通过代理类 代理生成 参见 http://www.cnblogs.com/woxp ...
- OpenVPN使用用户名/密码验证方式
OpenVPN推荐使用证书进行认证,安全性很高,但是配置起来很麻烦.还好它也能像pptp等vpn一样使用用户名/密码进行认证. 不管何种认证方式,服务端的ca.crt, server.crt, ser ...
- Nginx密码验证 ngx_http_auth_basic_module模块
有时候我们需要限制某些目录只允许指定的用户才可以访问,我们可以给指定的目录添加一个用户限制. nginx给我们提供了ngx_http_auth_basic_module模块来实现这个功能. 模块ngx ...
- java密码验证正则表达式校验
,正则表达式就是记录文本规则的代码.php密码验证正则表达式(8位长度限制)<?php //密码验证 $password = "zongzi_Abc_oo13a2"; $n ...
- 【WCF】Silverlight+wcf+自定义用户名密码验证
本文摘自 http://www.cnblogs.com/virusswb/archive/2010/01/26/1656543.html 在昨天的博文Silverlight3+wcf+在不使用证书的情 ...
- vb6-很简单的配置密码验证提示
'很简单的配置密码验证提示 Dim add As String add = Trim(InputBox("请输入配置密码", "报表配置")) If add = ...
随机推荐
- Mysql数据库存储引擎--转
原文地址:http://pangge.blog.51cto.com/6013757/1303893 简单介绍 存储引擎就是指表的类型.数据库的存储引擎决定了表在计算机中的存储方式.存储引擎的概念是My ...
- 为您的Office文档加把锁-ADRMS的安装
为您的Office文档加把锁-ADRMS的安装 如今不少企业越来越重视自己KM(知识管理系统)的建立对于KM的建立实施虽然可以有效地解决企业在知识管理上的问题对于一些具有商业利益关系的机密文件(例如: ...
- Fedora 10下应用网络模拟器NS心得
650) this.width=650;" onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" ...
- 交叉编译工具链bash: gcc:no such file or directory
在进行交叉编译工具链安装时,有三种方法: 1.源码编译,手动安装 2.二进制可执行文件直接安装 3.直接解压工具链,手动修改环境变量 为了方便,我们多用方法3进行安装.但是问题来了,你的工具链制作时有 ...
- BZOJ3529: [Sdoi2014]数表(莫比乌斯反演,离线)
Description 有一张 n×m 的数表,其第 i 行第 j 列(1 <= i <= n, 1 <= j <= m)的数值为 能同时整除 i 和 j 的所有自然数之和.给 ...
- 执行spark-shell时遇到的主机地址的错误
下载了spark 1.4,执行spark-shell时遇到以下错误: java.net.UnknownHostException: UKON-M-Q0EP: UKON-M-Q0EP: nodename ...
- Android .getRGB得到是负数,解决方案
情景:ava.awt.color 下面的getRGB怎么得出的是负数???本来想通过getRGB得到一个整数,在另外的一个部分在根据这个整数构件一个color,因为参数规定只能能传整数!!!color ...
- ArcGIS教程:地理处理服务演示样例(河流网络)(三)
设置输出符号系统 步骤: 展开 StoweStreamNet.tbx 并双击创建河流网络模型. 接受默认的 45 公顷并单击确定以运行模型. StreamNet 图层将加入至 ArcMap. 右键单击 ...
- Library Component Properties的表格如何填写
- 微服务实践(五):微服务的事件驱动数据管理 - DockOne.io
原文:微服务实践(五):微服务的事件驱动数据管理 - DockOne.io [编者的话]本文是使用微服务创建应用系列的第五篇文章.第一篇文章介绍了微服务架构模式,并且讨论了使用微服务的优缺点:第二和第 ...