PHP 中的 $_GET 和 $_POST 变量用于接收表单中的传递的信息,比如用户输入
有一点很重要的事情值得注意,当处理 HTML 表单时,PHP 能把来自 HTML 页面中的表单转成可供 PHP 脚本使用
表单
简单的表单页面
下面的实例包含了一个 HTML 表单,带有两个输入框和一个提交按钮
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form action="rear.php" method="post">
名字: <input type="text" name="fname">
年龄: <input type="text" name="age">
<input type="submit" value="提交">
</form>
</body>
</html>
当用户填写完上面的表单并点击提交按钮时,表单的数据会被送往名为 "rear.php" 的 PHP 文件:
<html>
<head>
<meta charset="utf-8">
</head>
欢迎<?php echo $_POST["fname"]; ?>!<br>
你的年龄是 <?php echo $_POST["age"]; ?>
</html>
以上的实例是一个典型的前后端分离的网站页面,采用简单的表单来处理用户的输入数据,将数据传递到后端的rear.php页面并跳转
PHP 获取下拉菜单数据
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<!--
请补充PHP代码
要求选择用户选择对应的站点以后回显网站的url
-->
<form action="" method="get">
<select name="q">
<option value="">选择一个站点:</option>
<option value="baidu">Baidu</option>
<option value="google">Google</option>
<option value="taobao">Taobao</option>
<option value="tianmao">Taobao</option>
</select>
<input type="submit" value="提交">
</form>
</form>
<!-- 完整代码如下:-->
<?php
$q=$_GET['q'];
if($q=="baidu"){
echo "<a href='https://baidu.com' target='_blank' title='新窗口进入百度'>百度</a>";
}elseif($q=="google"){
echo "<a href='https://www.google.com' target='_blank' title='新窗口进入谷歌'>谷歌</a>";
}elseif($q=="taobao"){
echo "<a href='https://www.taobao.com' target='_blank' title='新窗口进入淘宝'>淘宝</a>";
}elseif($q=="tianmao"){
echo "<a href='https://www.tmall.com/' target='_blank' title='新窗口进入天猫'>天猫</a>";
}
?>
</body>
</html>
以上案例是一个不分页处理的下拉表单页面,前端代码和后端代码同在一个php文件
PHP 下拉菜单多选
如果下拉菜单是多选的( multiple="multiple"),我们可以通过将设置 select name="q[]" 以数组的方式获取,以下使用 POST 方式提交,代码如下所示:
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<!-- 补充代码,要求用户选中对应的网站的时候可以传值完后同时输出内容 -->
<form action="" method="post">
<select multiple="multiple" name="q[]">
<option value="">选择一个站点:</option>
<option value="Baidu">Baidu</option>
<option value="Google">Google</option>
<option value="Taobao">Taobao</option>
<option value="Tianmao">Tianmao</option>
</select>
<input type="submit" value="提交">
</form>
</body>
<?php
$a = $_REQUEST['q'];
foreach($a as $aa){
if(strpos($aa,"Baidu") !==false){
echo "<a href='https://baidu.com' target='_blank' title='新窗口进入百度'>百度</a>"."<br>";
}elseif(strpos($aa,"Google") !==false){
echo "<a href='https://www.google.com' target='_blank' title='新窗口进入谷歌'>谷歌</a>"."<br>";
}elseif(strpos($aa,"Taobao") !==false){
echo "<a href='https://www.taobao.com' target='_blank' title='新窗口进入淘宝'>淘宝</a>"."<br>";
}elseif((strpos($aa,"Tianmao") !==false)){
echo "<a href='https://www.tmall.com/' target='_blank' title='新窗口进入天猫'>天猫</a>"."<br>";
}
}
?>
</html>
以上案例演示了php下拉菜单的不分页网站页面实现;不分页处理第一次进入页面会有一个报错但是并不影响程序运行。当然,我们最好还是采用分页处理的方式,分页处理只需要在<form action="" method="post">这行修改action="页面名称"就可,分页处理就交给大家自己实现了
PHP 单选按钮表单
PHP 单选按钮表单中 name 属性的值是一致的,value 值是不同的,代码如下所示:
<html>
<head>
<meta charset="utf-8">
</head>
<form action="" method="get">
<input type="radio" name="q" value="RUNOOB" />Runoob
<input type="radio" name="q" value="GOOGLE" />Google
<input type="radio" name="q" value="TAOBAO" />Taobao
<input type="submit" value="提交">
</form>
以上案例只是简单演示了单选框按钮的的实现,相信友友们经过了上面案例的熏陶已经掌握了具体页面的实现,我们后面就不多做演示了
PHP checkbox 复选框
<head>
<meta charset="utf-8">
</head>
<form action="" method="post">
<input type="checkbox" name="q" value="RUNOOB"> Runoob<br>
<input type="checkbox" name="q" value="GOOGLE"> Google<br>
<input type="checkbox" name="q" value="TAOBAO"> Taobao<br>
<input type="submit" value="提交">
</form>
表单验证
下面我们将介绍如何使用PHP验证客户端提交的表单数据
为了防止黑客及垃圾信息,我们在处理PHP表单时需要考虑安全性
需求如下:
1、需要一个注册页面的处理系统
字段 | 验证规则 |
---|---|
名字 | 可以输入字符串 |
可以输入字符串 | |
爱好 | 多选(足球、篮球、羽毛球、看书、写字;) |
备注 | 多行输入字段(文本域) |
性别 | 单选(男、女) |
首先,根据我们所学的知识,可以很轻松的写出前端基本框架
<html>
<head>
<meta charset="utf-8">
</head>
<form action="" method="post">
名字:
<input type="text" name="name" > <br>
邮件:
<input type="text" name="email" ><br>
爱好:
<input type="checkbox" name="aihao[]" value="足球" >足球
<input type="checkbox" name="aihao[]" value="篮球">篮球
<input type="checkbox" name="aihao[]" value="羽毛球">羽毛球
<input type="checkbox" name="aihao[]" value="看书">看书
<input type="checkbox" name="aihao[]" value="写字">写字
<input type="checkbox" name="aihao[]"><br>
备注:
<textarea name="beizhu" ></textarea><br>
性别:
<input type="radio" name="xingbie" value="男">男<input type="radio" name="xingbie" value="女">女<br>
<input type="submit" value="提交">
</form>
value="提交">
</form>
</html>
写出后端页面,要求能接收到用户输入的数据
<?php
$name=$_REQUEST['name'];
$email=$_REQUEST['email'];
$aihao=$_REQUEST['aihao'];
$beizhu=$_REQUEST['beizhu'];
$xingbie=$_REQUEST['xingbie'];
echo "名字为:".$name."</br>";
echo "邮箱为:".$email."</br>";
echo "爱好为:";
foreach($aihao as $ah){
echo $ah." ";
};
echo "</br>备注为:".$beizhu."</br>";
echo "性别为:".$xingbie."</br>";
?>
但是其实只是这样简单的写,就已经产生了安全漏洞,这就是安全漏洞的由来
一般的程序员只会考虑用户的需求,不会考虑安全问题