PHP 表单
阅读量:4014
发布时间:2015-10-20 20:50:09
客户端和服务器端数据通信主要是有:HTTP通信和Socket通信(当然也还有别的通信方式)。
HTTP在Web中有文本数据的传输、表单的提交,这里主要讲的是表达的提交(GET、和POST两种请求)。
说明:
以下的代码都是提交到自己本身,只是演示最基础的表单提交
一、GET请求
在form表单中,有一个submit按钮,当点击这个按钮的时候在form标签内的表单数据会被提交到填写好的目标地址上。
get数据请求会在地址栏出现所提交的信息,也有只是输出URL地址模拟数据提交。
数据提交以后直接使用 $_GET['需要获取的名称'] 这是PHP内置函数
初级:
<?php // 判断是否已经提交数据了,没有提交数据显示html代码 if(isset($_GET['submit']) && $_GET['submit'] != ""){ $full_name = $_GET['full_name']; // 接受数据 $age = $_GET['age']; // 接受数据 $sex = $_GET['sex']; // 接受数据 echo "姓名:".$full_name." 年龄:".$age." 性别:".$sex; exit(); //结束程序 } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>GET数据提交</title> </head> <body> <!-- action 是提交数据地址 默认是自己本身 method数据提交方式 get/pst --> <form action="" method="get"> 姓名:<input type="text" name="full_name"> <br> 年龄:<input type="text" name="age"> <br> <select name="sex"> <option value="男">男</option> <option selected="selected" value="女">女</option> </select> <input type="submit" value="提交" name="submit"> </form> </body> </html>
为了防止数据提交不合法,或者是空的数据提交我们就需要以下的方法(将这个表单改写了以下,使得提交完善一点):
以下不具有通用性,如密码的加密、富文本提交的数据过滤规则、有些时候我们需要对提交的数据进行编码
中级:
<?php // 判断是否已经提交数据了,没有提交数据显示html代码 if(isset($_GET['submit']) && $_GET['submit'] != ""){ $full_name = filter_name('full_name'); // 接受数据 $age = filter_name('age'); // 接受数据 $sex = filter_name('sex'); // 接受数据 echo "姓名:".$full_name." 年龄:".$age." 性别:".$sex; exit(); //结束程序 } // 表单数据提交验证 function filter_name($content = null) { if(isset( $_GET[ $content ] ) && $_GET[ $content ] != ""){ $content = $_GET[$content]; if (!get_magic_quotes_gpc()) // 判断magic_quotes_gpc是否为打开 { $content = addslashes($content); // 进行magic_quotes_gpc没有打开的情况对提交数据的过滤 } $content = trim($content); // 移除输入字符两端的空格 $content = str_replace("_", "\_", $content); // 把 '_'过滤掉 $content = str_replace("%", "\%", $content); // 把' % '过滤掉 $content = nl2br($content); // 回车转换 $content= htmlspecialchars($content); // html标记转换 }else{ $content = ""; } return $content; } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>GET数据提交</title> </head> <body> <!-- action 是提交数据地址 默认是自己本身 method数据提交方式 get/pst --> <form action="" method="get"> 姓名:<input type="text" name="full_name"> <br> 年龄:<input type="text" name="age"> <br> <select name="sex"> <option value="男">男</option> <option selected="selected" value="女">女</option> </select> <input type="submit" value="提交" name="submit"> </form> </body> </html>
二、POST数据提交
get、post数据提交的效果都是一样,post不会再地址栏显示所提交的数据
get、post都创建数组(例如,array( key => value, key2 => value2, key3 => value3, ...))进行数据提交
以下程序是表单数据提交,判断是get还是post请求,有提交数据的时候,将提交数据打印出来
初级:
<?php // 判断是否已经提交数据了,没有提交数据显示html代码 if(isset($_POST['submit']) && $_POST['submit'] != ""){ $full_name = $_POST['full_name']; // 接受数据 $age = $_POST['age']; // 接受数据 $sex = $_POST['sex']; // 接受数据 echo "姓名:".$full_name." 年龄:".$age." 性别:".$sex; exit(); //结束程序 } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>GET数据提交</title> </head> <body> <!-- action 是提交数据地址 默认是自己本身 method数据提交方式 get/pst --> <form action="" method="post"> 姓名:<input type="text" name="full_name"> <br> 年龄:<input type="text" name="age"> <br> <select name="sex"> <option value="男">男</option> <option selected="selected" value="女">女</option> </select> <input type="submit" value="提交" name="submit"> </form> </body> </html>
以下程序可以判断是请求是get还是post请求,然后将所有的请求数据打印出来
全能:
<?php // 判断数据提交类型,将数据打印出来 if($_GET){ echo "GET请求<br><br>"; filter_name($_GET); }elseif($_POST){ echo "POST请求<br><br>"; filter_name($_POST); }else{ echo "请提交数据"; } function filter_name($content = null) { if(is_array($content)){ //数组循环 foreach ($content as $key => $value) { echo $key.": ".$value; echo "<br>"; } }else{ echo $content; } exit(); } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>GET数据提交</title> </head> <body> <!-- action 是提交数据地址 默认是自己本身 method数据提交方式 get/pst --> <form action="" method="post"> 姓名:<input type="text" name="full_name"> <br> 年龄:<input type="text" name="age"> <br> <select name="sex"> <option value="男">男</option> <option selected="selected" value="女">女</option> </select> <input type="submit" value="提交" name="submit"> </form> </body> </html>
当前没有评论