简单讲解下正则的使用:单个字符:[]如: a [a-zA-Z0-9_]特殊符号代表特殊含义的单个字符:\d: 单个数字字符 [0-9]\w: 单个单词字符 [a-zA-Z0-9_] 量词符号:?:表示出现 0 次或 1 次 *:表示出现 0 次或多次 +:出现 1 次或多次 {m,n}: 表示 m<= 数量 <= n* m 如果缺省: {,n}: 最多 n 次 * n 如果缺省:{m,} 最少 m 次 开始结束符号 ^: 开始$: 结束 创建var reg = new RegExp(" 正则表达式 ");var reg = / 正则表达式 /; 方法. test(参数): 验证指定的字符串是否符合正则定义的规范,简单示例:var a="12345";var reg=/^\w{6,12}$/; // 正则 表示字符数 6 -12var b=reg.test(a); // 此处 a 值不符合返回 falsealert(b);下面以注册表单校验为例:<!-- 导入 jquery--><script src="js/jquery-3.3.1.js"></script><script> /* 思路: * 为每个单元格建立校验 * 在输入框离开焦点跟提交时候启用校验 */ function checkUsername() { // 校验用户名 /* 获取用户名值 * 定义正则 * 判断是否为 true*/ var username = $("#username").val(); var reg_username = /^\w{3,10}$/; // 用户名为 3 -10 位字符串 var flag = reg_username.test(username); if (flag) { console.log(" 用户名合法 ") // 浏览器控制台显示日志内容 实际不用写 $("#username").css("border", ""); } else { console.log(" 用户名不合法 ") $("#username").css("border", "1px solid red"); } return flag; } function checkPassword() { var password = $("#password").val(); var reg_password = /^\w{6,16}$/; // 密码为 6 -10 位字符串 var flag = reg_password.test(password); if (flag) { console.log(" 密码合法 ") $("#password").css("border", ""); } else { console.log(" 密码不合法 ") $("#password").css("border", "1px solid red"); } return flag; } function checkEmail() { var email = $("#email").val(); var reg_email = /^\w+\@\w+\.\w+$/; // 符合特定格式的字符串 带 @跟. var flag = reg_email.test(email); if (flag) { console.log(" 邮箱合法 ") $("#email").css("border", ""); } else { console.log(" 邮箱不合法 ") $("#email").css("border", "1px solid red"); } return flag; } function checkName() { var name = $("#name").val(); var reg_name = /^\w{3,10}$/; var flag = reg_name.test(name); if (flag) { console.log(" 姓名合法 ") $("#name").css("border", ""); } else { console.log(" 姓名不合法 ") $("#name").css("border", "1px solid red"); } return flag; } function checkTelephone() { var telephone = $("#telephone").val(); var reg_telephone = /^\1\d{10}$/; // 首位为 1 后面十位为数字 var flag = reg_telephone.test(telephone); if (flag) { console.log(" 手机合法 ") $("#telephone").css("border", ""); } else { console.log(" 手机不合法 ") $("#telephone").css("border", "1px solid red"); } return flag; } function checkCheck() { var check = $("#check").val(); var reg_check = /^\w{4}$/; // 已知验证码为四位字符 var flag = reg_check.test(check); if (flag) { console.log(" 验证码合法 ") $("#check").css("border", ""); } else { console.log(" 验证码不合法 ") $("#check").css("border", "1px solid red"); } return flag; } $(function () { /* 当表单提交时调用校验方法 */ $("#registerForm").submit(function () { if (checkName() && checkPassword() && checkName() && checkEmail() && checkTelephone() && checkCheck()) { $.post("user/regist", $(this).serialize(), function (data) { //serialize()序列化表单内容 if (data.flag) { // 从服务器获取注册结果 console.log(" 注册成功 ") location.href = "regist_ok.html"; // 注册成功跳转页面 } else { console.log(" 注册失败 ") $("#errorMsg").html(data.errorMsg); // 注册失败显示错误信息 } }) } }); $("#username").blur(checkUsername); // 鼠标离开输入框执行事件 $("#password").blur(checkPassword); // 注意方法名后不要加(),否则失焦事件将无异议 $("#email").blur(checkEmail); $("#name").blur(checkName); $("#telephone").blur(checkTelephone); $("#check").blur(checkCheck); })</script>
经常看到一些网站下端都会写“本站已安全运行 xx 天之内”的字样,到底怎么也能实现呢?除了用 PHP 等其他语言,其实 js 也可以很容易实现,下面放代码:<a> 网站已运行 </a><a id="days">0</a><a> 天 </a><script>var s1 = '2018-02-13';// 设置为你的建站时间s1 = new Date(s1.replace(/-/g, "/"));s2 = new Date();var days = s2.getTime() - s1.getTime();var number_of_days = parseInt(days / (1000 * 60 * 60 * 24));document.getElementById('days').innerHTML = number_of_days;</script> 区区几行即可实现,可以放在网站任意位置哦!
描述: 目标服务器没有返回一个 X -Frame-Options 头。X-Frame-Options HTTP 响应头是用来确认是否浏览器可以在 frame 或 iframe 标签中渲染一个页面,网站可以用这个头来保证他们的内容不会被嵌入到其它网站中,以来避免点击劫持。危害: 攻击者可以使用一个透明的、不可见的 iframe,覆盖在目标网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的 iframe 页面。通过调整 iframe 页面的位置,可以诱使用户恰好点击 iframe 页面的一些功能性按钮上,导致被劫持。解决方案:修改 web 服务器配置,添加 X -frame-options 响应头。赋值有如下三种:(1)DENY:不能被嵌入到任何 iframe 或 frame 中。 (2)SAMEORIGIN:页面只能被本站页面嵌入到 iframe 或者 frame 中。 (3)ALLOW-FROM uri:只能被嵌入到指定域名的框架中。也可在代码中加入,在 PHP 中加入:header('X-Frame-Options: deny');防止某些重要网页被其他网站框架导入,可以给页面增加 X -Frame-Options 响应头,这样浏览器会依据 X -Frame-Options 的值来控制 iframe 框架的页面是否允许加载显示出来,IE 下的效果如下(此内容无法再框架中显示。为了帮助保护在此网站中输入的信息安全,此内容的发行者不允许在框架中显示该信息),其他非 IE 核心浏览器会显示空白内容。动态页添加 X -Frame-Options 响应头示例代码 asp?123<%response.AddHeader "X-Frame-Options","Deny"%>Asp.Net?1Response.AddHeader("X-Frame-Options", "Deny");PHP?1header('X-Frame-Options:Deny'); 如果确认你整个网站都不能被框架,可以直接设置 web 服务器,增加 X -Frame-Options 响应头。IIS 如下图所示,增加 http 头 X-Frame-Options 响应头可用值有DENY:浏览器拒绝当前页面加载任何 Frame 页面SAMEORIGIN:frame 页面的地址只能为同源域名下的页面ALLOW-FROM:origin 为允许 frame 加载的页面地址 浏览器对 X -Frame-Options 响应头的支持如下 浏览器 版本支持IE8.0+Firefox3.6.9+Opera10.50+Safari4.0+Chrome4.1.249.1024+
几年前在买东西消费还少不了现金,现在移动支付已经遍地开花,就连路边摊都会贴个微信或支付宝收款码了,但是某些商店居然用一个二维码实现多种支付软件付款,是不是觉得很神奇?其实我们也能简单实现下(以下来自网络收集整理): 1、你要先有一个域名和空间,无论免费收费皆可,PHP 的即可 2、或许收款码网址:打开自己的支付宝,微信,QQ,找到收款码然后保存下来。 如何获取微信收款码?打开微信,点击右上角的【+】号,再点击收付款,然后点击“我要收款”,最后保存收款码或截图即可。 如何获取支付宝收款码?打开支付宝,在其首页点击一下【收钱】,直接点击保存图片即可。 如何获取 QQ 收款码?打开手机 QQ,在其主界面点击右上角的【+】号,再点击付款,然后点击右上角的【...】选择【我要收款】,截图收款码保存到相册即可。 3、打开二维码识别工具 点击进入在线工具 上传收款码图片之后得到各收款二维码网址备用 源码部分 : 多合一收款码其实原理很简单,通过判断扫描方的软件 UA 跳转到不同网址而已。可以 点击此处查看软件 UA根据 UA 不同跳转到不同网址,但是有个小问题,腾讯 QQ、微信跳转后并不会直接付款,所以只能通过间接方式,跳转到收款码图片页面,然后长按收款码执行付款操作。下面直接上 PHP 代码header('HTTP/1.1 301 Moved Permanently');if(strstr($_SERVER['HTTP_USER_AGENT'], 'QQ/')){header('Location: QQ 收款码图片页 ');}else if(strstr($_SERVER['HTTP_USER_AGENT'], 'Alipay')){header('Location: 此处输入支付宝二维码所识别的链接 '); }else if(strstr($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger/')){header('Location: 微信收款码图片页 ');}另外还附赠一份现成的 HTML 收款码源码,使用时请自行替换收款码网址,该源码来自网络 点击链接进入下载源码 (密码:5voc)