一、表单安全 1、htmlspecialchars()函数 把特殊字符转换为 HTML 实体。这意味着 之类的 HTML 字符会被替换为 < 和 > 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。 跨站点脚本攻击(Cross Site Scripting):为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。 HTML 实体:HTML 中的预留字符必须被替换为字符实体。如果希望正确地显示预留字符,我们必须在 HTML 源代码中使用字符实体(character entities)。 显示结果 描述 实体名称 实体编号 空格 小于号 < < > 大于号 > > & 和号 & & “ 引号 " " ‘ 撇号 ' (IE不支持) ' ¢ 分 ¢ ¢ £ 镑 £ £ ¥ 日圆 ¥ ¥ ? 欧元 € € § 小节 § § © 版权 © © ® 注册商标 ® ® ? 商标 ™ ™ × 乘号 × × ÷ 除号 ÷ ÷ 一个简单的加法器(注意看其中的htmlspecialchars) '>+=登录后复制 2、创建表单验证函数 表单测试">姓名:电邮:网址:评论:name:".$name; echo "email:".$email; echo "website:".$website; echo "comment:".$comment; ?>登录后复制 二、表单必填 字段 验证规则 Name 必需。必须包含字母和空格。 E-mail 必需。必须包含有效的电子邮件地址(包含 @ 和 .)。 Website 可选。如果选填,则必须包含有效的 URL。 Comment 可选。多行输入字段(文本框)。 表单必填 .error {color:#FF0000;} "> 姓名: * 电邮: * 网址: 评论: name:".$name; echo "email:".$email; echo "website:".$website; echo "comment:".$comment; ?> 登录后复制 三、格式匹配 利用正则表达式(Regular Expression)对用户输入的数据进行格式验证。更多有关正则表达式的知识请看正则表达式30分钟入门教程以及正则表达式全部符号解释。 int preg_match ( string $pattern , string $subject ); 搜索subject与pattern给定的正则表达式的一个匹配。 Regex quick reference 符号 意义 [abc] A single character: a, b or c [^abc] Any single character but a, b, or c [a-z] Any single character in the range a-z [a-zA-Z] Any single character in the range a-z or A-Z ^ Start of line $ End of line \A Start of string \z End of string . Any single character \s Any whitespace character \S Any non-whitespace character \d Any digit \D Any non-digit \w Any word character (letter, number, underscore) \W Any non-word character \b Any word boundary character (…) Capture everything enclosed (a b) a? Zero or one of a a* Zero or more of a a+ One or more of a a{3} Exactly 3 of a a{3,} 3 or more of a a{3,6} Between 3 and 6 of a 1、匹配姓名 “/^[a-zA-Z ]*$/” 只允许空格和字母,”^”表示开头,”$”表示结尾,[a-zA-Z ]表示a-z或者A-Z或者空格中的一个字符。 $name = test_input($_POST["name"]);if (!preg_match("/^[a-zA-Z ]*$/",$name)) { $nameErr = "只允许字母和空格!"; }登录后复制 2、匹配E-mail “/([\w-]+\@[\w-]+.[\w-]+)/” “\w”匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’; +匹配前面的子表达式一次或多次; “-“匹配”-“。 3、匹配URL “/\b(?:(?:https?|ftp):\/\/|www.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i” 四、保留表单中的值 原理:在input标签中嵌入邮箱:" />密码:"/>"; echo "邮箱:".$email; echo ""; echo "密码:".$passwd; ?>登录后复制 版权声明:本文为Lshare原创文章,需要转载的请联系我,有问题欢迎评论或私信。 09-19 01:03