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 = ...
随机推荐
- iOS多语言(国际化)开发(尾随系统 + APP内手动设置)
一:尾随系统切换语言 1>创建好项目project后, 新建一个多语言文件: 2>加入要设置的语言类型: 3>加入成功 细心的朋友可能会发如今English后面写的是3 Files ...
- ASP.net 环境搭建
https://www.cnblogs.com/leizhanjun/p/6081928.html
- RocketMQ(九):消息发送(续)
匠心零度 转载请注明原创出处,谢谢! RocketMQ网络部署图 NameServer:在系统中是做命名服务,更新和发现 broker服务. Broker-Master:broker 消息主机服务器. ...
- 40.lombok在IntelliJ IDEA下的使用
转自:https://www.cnblogs.com/yjmyzz/p/lombok-with-intellij-idea.html lombok是一款可以精减java代码.提升开发人员生产效率的辅助 ...
- 分析器错误消息: 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分
关于错误提示:此实现不是 Windows 平台 FIPS 验证的加密算法的一部分的解决方案 不知怎么的,每次Win10升级后相应的注册器都恢复默认了,当我运行08版的asp项目时会报这个错. vs上的 ...
- DriverModule_01
最小驱动模块: 最简单的Makefile 无配置文件 最小驱动的四部分 头文件 声明模块信息 模块驱动的入口.出口 功能区 关于这个头文件的分析: linux头文件的位置,例如#include< ...
- PatentTips - Maintaining shadow page tables in a sequestered memory region
BACKGROUND Malicious code, known as malware, which includes viruses, worms, adware, etc., may attack ...
- 【Android开发经验】我们要友好的告诉用户,程序要崩溃了
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 尽管我们的程序在正式上线之前,都会经过严格的測试.从而保证程序的健壮性和良好的用户体验,可是 ...
- [Vue + TS] Write a Vue Component as a Class in TypeScript
Starter app: https://github.com/alexjoverm/Vue-Typescript-Starter Writing Vue components as plain ob ...
- 全面解析Activity的生命周期
欢迎Follow我的GitHub, 关注我的CSDN. 在Android应用中, Activity是最重要的组件, 其生命周期(Lifecycle)被大家所熟知. 可是, 大家须要注意一些细节, 才干 ...