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

示例1

输入

复制

021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000

输出

复制

OK
NG
NG
OK

代码:

 <?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实现 密码验证合格程序(复杂问题分类,超简单的)(分类+规范编码)的更多相关文章

  1. WebService 用户名密码验证

    原文:WebService 用户名密码验证 在项目开发的过程中,WebService是经常要用的,当调用WebService方法时,需要经过服务的验证才可以调用,一般就是用户名/密码验证,还有一个就是 ...

  2. PHP操作Redis(一) PHP连接Redis,含Redis密码验证、指定某一Redis数据库

    台服务器上都快开启200个redis实例了,看着就崩溃了.这么做无非就是想让不同类型的数据属于不同的应用程序而彼此分开. 那么,redis有没有什么方法使不同的应用程序数据彼此分开同时又存储在相同的实 ...

  3. 【WCF】使用“用户名/密码”验证的合理方法

    我不敢说俺的方法是最佳方案,反正这世界上很多东西都是变动的,正像老子所说的——“反(返)者,道之动”.以往看到有些文章中说,为每个客户端安装证书嫌麻烦,就直接采用把用户名和密码塞在SOAP头中发送,然 ...

  4. WCF 安全性之 自定义用户名密码验证

    案例下载 http://download.csdn.net/detail/woxpp/4113172 客户端调用代码 通过代理类 代理生成 参见 http://www.cnblogs.com/woxp ...

  5. OpenVPN使用用户名/密码验证方式

    OpenVPN推荐使用证书进行认证,安全性很高,但是配置起来很麻烦.还好它也能像pptp等vpn一样使用用户名/密码进行认证. 不管何种认证方式,服务端的ca.crt, server.crt, ser ...

  6. Nginx密码验证 ngx_http_auth_basic_module模块

    有时候我们需要限制某些目录只允许指定的用户才可以访问,我们可以给指定的目录添加一个用户限制. nginx给我们提供了ngx_http_auth_basic_module模块来实现这个功能. 模块ngx ...

  7. java密码验证正则表达式校验

    ,正则表达式就是记录文本规则的代码.php密码验证正则表达式(8位长度限制)<?php //密码验证 $password = "zongzi_Abc_oo13a2"; $n ...

  8. 【WCF】Silverlight+wcf+自定义用户名密码验证

    本文摘自 http://www.cnblogs.com/virusswb/archive/2010/01/26/1656543.html 在昨天的博文Silverlight3+wcf+在不使用证书的情 ...

  9. vb6-很简单的配置密码验证提示

    '很简单的配置密码验证提示 Dim add As String add = Trim(InputBox("请输入配置密码", "报表配置")) If add = ...

随机推荐

  1. spring jdbcTemplate使用queryForList示例

    查询代码: LogVo 日志要显示的内容(Log的部分或者全部列) Log是日志完整的实体 public List<LogVO> findLogByDate(String startDat ...

  2. 利用日志使管理Linux更轻松

    利用日志使管理Linux更轻松 操作系统的日志主要具有审计与监测的功能,通过对日志信息的分析,可以检查错误发生的原因,监测追踪入侵者及受到攻击时留下的痕迹,甚至还能实时的进行系统状态的监控.有效利用日 ...

  3. 虚拟机上的企业网络管理系统(cisco works 2000安装配置)

    虚拟机上的企业网络管理系统 北京 李晨光 相关文章 Cisco Works 2000 网络管理软件安装.配置全过程 http://you.video.sina.com.cn/b/18168631-14 ...

  4. 关于img标签的探讨

    关于img标签的探讨:一直以来img属于那一种标签受到困惑,因为它既有块元素的特性也有行内元素的属性.它独占一行,也可以设置宽高. 在此重新学习一下标签元素的分类;html元素的分类:块元素.内联元素 ...

  5. python使用大漠插件进行脚本开发的尝试(一)

    关于游戏脚本是纯然的小白,记一下学习过程遇到的问题.是在win10系统下对PC端的游戏进行脚本编辑,不知道会不会半途放弃. 一.大漠插件 大漠插件在游戏脚本编辑过程中是比较常见的工具,按我理解大致做的 ...

  6. 在window编写好的网站往linux上发布

    得知ASP.NET CORE可以跨平台,我内心很躁动,毕竟自己喜欢的,之前没有学过linux导致一开始上手linux有点困难,按照https://www.microsoft.com/net/core# ...

  7. BZOJ3530: [Sdoi2014]数数(Trie图,数位Dp)

    Description 我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为其子串.例如当S=(22,333,0233)时,233是幸运数,2333.20233.3 ...

  8. CF1009F Dominant Indices(树上DSU/长链剖分)

    题目大意: 就是给你一棵以1为根的树,询问每一个节点的子树内节点数最多的深度(相对于这个子树根而言)若有多解,输出最小的. 解题思路: 这道题用树链剖分,两种思路: 1.树上DSU 首先想一下最暴力的 ...

  9. sql server还原数据库代码

    RESTORE DATABASE ExaminationsystemFROM DISK = 'C:\Users\admin\Desktop\20140324.bak'with replace,MOVE ...

  10. MySQL 使用mysqld_multi部署单机多实例详细过程

    ,如何使用多实例 由于多实例中,各个实例的资源都是不share的,所以要合理分配好各个实例的内存.磁盘等资源,避免out of memery或则 full disk的情况出现.