记住:php代码嵌入到html文件中,文件只有保存为php格式才能在服务端正常运行。如果在客户端运行,浏览器只能识别html代码,不能识别php代码。再简单一点来说,服务器端能执行php文件中的html代码,不能执行html文件中的php代码。客户端只会执行html代码,无论文件保存为什么格式。
一
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
action将数据提交到一个php文件处理。
$_SERVER["PHP_SELF"] 返回当前正在执行脚本的文件名。
htmlspecialchars()方法? 把一些预定义的字符转换成实体。
避免$_SERVER["PHP_SELF"] 被黑客利用。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>表单验证</title>
</head>
<body>
<?php
$name=$email=$address="";
$nameErr=$emailErr=$addressErr="";
if ($_SERVER["REQUEST_METHOD"]=="POST") {
if (empty($_POST["name"])) {//注意empty()函数的运用。
$nameErr="名字是必须的";
}else{
$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {//这里使用preg_match();
$nameErr = "只允许字母和空格";
}
}
if (empty($_POST["email"])) {
$emailErr="邮箱是必须的";
} else {
$email = test_input($_POST["email"]);
if (!preg_match("/([w-]+@[w-]+.[w-]+)/",$email))
{
$emailErr = "非法邮箱格式";
}
}
if (empty($_POST["address"])) {
$addressErr = "";
}else{
$address = test_input($_POST["address"]);
if (!preg_match("/(?:(?:https?|ftp)://|www.)[-a-z0-9+&@#/%?=~_|!:,.;]*[-a-z0-9+&@#/%=~_|]/i",$address)) {
$addressErr = "网址格式不匹配";
}
}
}
function test_input($data)//该函数主要用来检测数据,避免黑客攻击。
{
$data = trim($data);//trim()函数用于去除用户输入 数据不必要的字符如空格、tab、换行。
$data = stripslashes($data);//去除用户数据中的反斜杠。
$data = htmlspecialchars($data);
return $data;
}
?>
<form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]) ?>">
<h2>表单验证实例</h2>
<p style="color: red">*必须字段。</p>
名字:<input type="text" name="name" value="<?php echo $name;?>">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
Email:<input type="text" name="email" value="<?php echo $email?>">
<span>*<?php echo $emailErr?></span>
<br><br>
网址:<input type="text" name="address">
<span><?php echo $addressErr; ?></span><br><br>
备注:<input type="textarea" style=" 300px;height: 50px" name="textarea"><br><br>
性别:<input type="radio" name="gender">女
<input type="radio" name="gender">男
<br><br>
<input type="submit" name="submit">
</form>
<?php
echo "<h2>您输入的内容是:</h2>";
echo $name;
echo "<br>.<br>";
echo $email;
echo "<br>.<br>";
echo $addressErr;
?>
</body>
</html>
二、GET与 _POST
在 HTML 表单中使用 method=”get” 时,所有的变量名和值都会显示在 URL 中。所以在发送密码或其他敏感信息时,不应该使用这个方法!
预定义的 $_POST 变量用于收集来自 method=”post” 的表单中的值。
从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。
注释:然而,默认情况下,POST 方法的发送信息的量最大值为 8 MB(可通过设置 php.ini 文件中的 post_max_size 进行更改)
三、PHP $_REQUEST 变量
欢迎 <?php echo $_REQUEST["fname"]; ?>!<br>//直接获取信息,无论是通过 $_GET还是$_POST传递的讯息。
你的年龄是 <?php echo $_REQUEST["age"]; ?> 岁。