1.PHP表单处理
PHP的超全局变量
GET和 _POST用于收集表单数据
一个简单的HTML表单如下
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form action="welcome.php" method="post">
Name:<input type="text" name="name"><br>
E-mail:<input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
当用户填写该表单并点击提交按钮后,表单会发送到名为”welcome.php”的PHP文件供处理,表单数据是通过HTTP POST方法发送的
如需显示出被提交的数据,可以简单的输出echo所有变量。
welcome.php如下
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php
echo $_GET["name"];
echo "<br>";
echo $_GET["email"];
echo "<br>";
?>
</body>
</html>
上述.php实例中我们的method方法使用了get方法,其实我们也可以使用post方法,那么他俩有什么区别呢?
.GET和POST都会创建关联数组,此数组包含键/值对,其中的键是表单控件的名称,值是来自用户输入数据。
.GET和POST被视作GET和 _POST。他们都是超全局变量,这意味着对他们的访问无需考虑作用域,无需任何特殊代码,您能够从任何函数,类或文件访问他们
.GET是通过URL参数传递到当前脚本的变量数组. _POST是通过HTTP POST传递到当前脚本的变量数组
何时该使用GET?
通过GET方法从表单发送信息对任何人都是可见的。GET对所发的信息数量也有限制,大约在2000个字符左右,GET可以用来发送非敏感数据
何时用POST
通过POST方法从表单发送的信息对其他人是不可见的,并且对所发数据的数量也无限制
2.表单验证
对于HTML验证不仅可以防范垃圾邮件也可以防范黑客
具体实例如下
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
.error {color: red;}
</style>
</head>
<body>
<?php
//定义变量并设置空值
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if(empty($_POST['name'])){
$nameErr = '姓名是必填的';
}
else{
$name = test_input($_POST['name']);
//检查姓名是否包含字母和空白符
if(!preg_match('/^[a-zA-Z]*$/',$name)){
$nameErr = '只允许字母和空格';
}
}
if(empty($_POST['email'])){
$emailErr = '电邮是必填的';
}
else{
$email = test_input($_POST['email']);
//检查电子邮件地址语法是否有效
if(!preg_match('/([\w\-]+\@[\w\-]+\.[\w\-]+)/',$email)){
$emailErr = '无效的email格式';
}
}
}
function test_input($data){
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data
}
?>
<h2>PHP 验证实例</h2>
<p><span>* 必须的字段</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
姓名:<input type="text" name="name">
<span class="error"> * <?php echo $nameErr; ?></span>
<br><br>
电邮:<input type="text" name="email">
<span class="error"> * <?php echo $emailErr; ?></span>
<br><br>
<input type="submit" name="submit" value="提交">
</form>
<?php
echo "<h2>您的输入<h2>";
echo $name;
echo "<br>";
echo $email;
echo "<br>";
?>
</body>
</html>