1、第4章 PHP和HTML表单,主 讲:田 旭 Email:,PHP程序设计,本章主要内容,HTML表单 GET提交方法 POST提交方法 获取提交的数据 文本框、单选按钮、复选框 列表框、隐藏字段 常用表单数据验证 URL编码解码函数,HTML表单,大部分网页通过表单实现交互 定义表单:/表单内容说明: action:包含程序的URL,该程序用于处理表单提交的信息 enctype:为特殊的协议指定某些格式 method:表单提交的方法:GET和POST name:表单的名称,HTML表单,定义表单:帐号: 密码:HTML表单程序举例,HTML表单 GET提交方法,GET提交方法本质上是将数据通
2、过连接地址的形式传递到下一个页面。GET方法提交的数据量不宜太大。其实现途径: 1)直接书写超级链接 将要传递的数据直接话URL的后面,如 http:/./show.php?name1=value&name2=. 2)表单 需要两个文件:HTML表单文件和表单处理文件表单程序举例 get.htm get.php,HTML表单 POST提交方法,POST方法本质是将所有的数据作为单独的数据块提交到服务器。表单程序举例 post.htm post.php,获取提交的数据,1)接收通过HTML表单元素提交的信息,自动为表单元素分配变量。 变量名实际上就是HTML表单中的name属性2)将提交的数据保
3、存在全局数据组中,通过调用系统特定的自动全局变量来获取相应的值 $_GET $_POST $_REQUEST = $_GET + $_POST + $_COOKIE,获取提交的数据 文本框,文本框表单控件的名称为login,其值的获取: $login /全局变量 _GETlogin _POSTlogin,获取提交的数据 单选按钮, 教师 学生 单选按钮表单控件radio的名称为domain,其值的获取: _GETdomain _POSTdomain,获取提交的数据 复选框,跳舞 旅游 唱歌 打球,获取提交的数据 复选框,echo $_GETdance; echo $_GETtour; echo
4、 $_GETsing; echo $_GETball;,获取提交的数据 复选框,安全获取复选框提交的数据 if (!empty($_GETdance)echo $_GETdance . “; if (!empty($_GETtour)echo $_GETtour. “; if (!empty($_GETsing)echo $_GETsing . “; if (!empty($_GETball)echo $_GETball . “;,获取提交的数据 复选框,快速获取复选框提交的数据 将所有的复选框名称统一,其值加载到相应的数组中: 跳舞 旅游 获取: if (!empty($_GEThobby)
5、 foreach ($_GEThobby as $hobby)echo($hobby . “);,获取提交的数据 列表框,123 ,获取提交的数据 列表框,123获取: if (!empty($_POSTbmonth) foreach ($_POSTbmonth as $Mon)echo($Mon . “月“);,获取提交的数据 隐藏字段,帐号 “,表单处理的综合应用,first.htmlshowdetail.php,常用表单数据验证姓名,$name=“123“; if(empty($name) /判断是否为空 die(“姓名不能为空“); /判断长度 elseif ( (strlen($na
6、me) 50) die(“姓名长度必须在5和15之间“); else /如果合法,则输出姓名 echo $name; ,常用表单数据验证电子邮件验证,$email=“hello “; if(empty($email) die(“邮件地址不可以为空!“); elseif ( (strlen($email) 50)die(“邮件地址长度必须在5和50之间“); elseif(!ereg(“,$email) /必须包含字符die(“电子邮件不合法,请重输!“); else /输出电子邮件echo $email; ,常用表单数据验证密码验证,if(empty($password) | empty($c
7、password) die(“密码不可空!“); elseif ( (strlen($password)15)die(“密码长度在5和15之间“); /- 值比较 elseif ( !(strlen($password) = strlen($cpassword) )die(“两次输入密码不匹配! “); elseif( !($password = $cpassword) /值和数据类型比较 die(“两次密码不匹配! “); else /循环输出密码,因为是密码所以输出*号 for ($i=0;$istrlen($password);$i+) echo “*“; ,常用表单数据验证生日字段,b
8、irth.php,URL编码解码函数,urlencode - 编码URL字符串 string urlencode ( string str ) 返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与表单POST数据的编码方式是一样的,同时与application/x-www-form-urlencoded的媒体类型编码方式一样。此编码在将空格编码为加号(+)与RFC1738编码不同。此函数便于将字符串编码并将其用于URL的请求部分,同时它还便于将变量传递给下一页。,URL编码解码函数,echo 张三;注意:小心与
9、HTML实体相匹配的变量。像&、©和£都将被浏览器解析,并使用实际实体替代所期待的变量名。,URL编码解码函数,urldecode - 解码已编码的URL字符串 string urldecode ( string str ) 解码给出的已编码字符串中的任何 %#。返回解码后的字符串。,urldecode - 解码,/要配合提交页面一起使用 $a = explode( ,本章小结,get.htm, 用户调查表请输入帐号和密码:帐号: 密码: ,get.php,get提交我是通过GET方法提交而来的哦!,post.htm, 用户调查表请输入帐号和密码:帐号: 密码: ,post.php,post提交我是通过POST方法提交而来的哦!,