工作原理 GET GET传参 当表单以GET方式提交时,会将用户填写内容放在URL参数中进行提交,表单的method属性不写(或改为get)然后提交表单,会得到下方URL
http://localhost/login.php?username=test&password=123456“?”后面的内容为参数信息 参数是由参数名和参数值组成的,中间使用等号“=”进行连接 多个参数之间使用“&”分隔 username和password是参数名,对应表单中的name属性 test和123456是参数值,对应用户填写的内容
POST方式 method属性表示提交方式 action属性表示提交的目标地址,如果省略,表单则提交给当前页面进行处理。 当单击按钮时,表单中具有name属性的元素会被提交,提交数据的参数名为name属性的值,参数值为value属性的值。
<form method="post" action="reg.php"> <input type="text" name="user" value="" /> <input type="password" name="pwd" value="" /> <input type="submit" value="提交" /> </form>数组方式提交数据–单选按钮
<input type="radio" name="binary" value="yes" /> 对 <input type="radio" name="binary" value="no" /> 错 对于一组单选按钮,它们应该具有相同的name属性和不同的value属性。 当表单提交时,如果选中单选按钮“对”,则提交的数据为“binary=yes” 若两个单选按钮都没有被选中,则name属性为binary的数据不会被提交。提交数据–下拉菜单
<select name="city"> <option value="济南">济南</option><option value="天津">天津</option> <option value="大连">大连</option><option value="其他">其他</option> </select> 对于下拉菜单,它提供了有限的选项,用户只能选择下拉菜单中的某一项。 如果用户选择“大连”并提交表单,则提交的数据为“city=大连” <input type="checkbox" name="hobby[]" value="swimming"> 游泳 <input type="checkbox" name="hobby[]" value="reading"> 读书 <input type="checkbox" name="hobby[]" value="running"> 跑步 print_r($_POST['hobby']); Array ( [0] => swimming [1] => running ) 一组复选框可以提交多个值,因此复选框的name属性使用“hobby[]”数组形式。 当用户勾选“羽毛球”和“乒乓球”时,提交的hobby数组有两个元素:羽毛球和乒乓球。 当用户没有勾选任何复选框时,表单将不会提交hobby数据。判断表单数据是否为空-POST 当需要判断表单中“name”属性是否为空时,可以使用empty()函数。
if(empty($_POST['name'])){ //没有收到name,或name的值为空 }用empty()函数判断数组元素是否为空,为空时返回true,元素不存在时也返回true。 过滤外部数据 在开发 PHP 程序时,为了便于调试,会将用户输入的内容直接显示到网页中。但是当网站上线时,如果不对用户的输入进行任何过滤,会带来安全风险。
<div> 用户名: <div><?php echo $_POST['username']; ?></div> 来访时间: <div>2015-03-18</div> </div> 上述代码将一个来自 POST 方式提交的 username 字段直接输出到网页中。 如果用户输入“</div>”,那么网页结构会遭到破坏。 如果用户输入<script>标记和 JavaScript 代码,那么这些代码也会被浏览器执行,从而威胁到网站的安全。HTML特殊字符处理 HTML特殊字符处理–nl2br 举例: textarea中的换行符是“\r\n”,而不是HTML中的换行标记“”。因此,若在表单的textarea标记中输入多行文本,然后将文本显示在div标记中时,会遇到换行显示成空格的问题。 nl2br()函数可以将字符串中的“\n”转换成HTML换行符,示例代码如下
echo nl2br(“盛邦\n升华", false); 盛邦<br> 升华 nl2br()函数的第二个参数用于设置使用XHTML兼容换行符,默认值为true。 当第二个参数设置为false时,会将字符串中的“\n”转换成<br>,否则转换为<br/>。