php与html 表单的结合
2024-08-30 06:51:16
PHP $_POST
<!DOCTYPE html>
<html>
<body> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>
">
Name: <input type="text" name="fname">
<input type="submit">
</form><?php
</body>
$name = $_REQUEST['fname'];
echo $name;
?>
</html>
PHP $_GET
<html>
<body> <a href="test_get.php?subject=PHP&web=W3school.com.cn">测试 $GET</a> </body>
</html>
<html>
<body> <?php
echo "Study " . $_GET['subject'] . " at " . $_GET['web'];
?> </body>
</html>
什么是 $_SERVER["PHP_SELF"] 变量?
$_SERVER["PHP_SELF"] 是一种超全局变量,它返回当前执行脚本的文件名。
因此,$_SERVER["PHP_SELF"] 将表单数据发送到页面本身,而不是跳转到另一张页面。这样,用户就能够在表单页面获得错误提示信息。
什么是 htmlspecialchars() 函数?
htmlspecialchars() 函数把特殊字符转换为 HTML 实体。这意味着 < 和 > 之类的 HTML 字符会被替换为 < 和 > 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。
PHP 表单的相关验证,带*提醒
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> Name: <input type="text" name="name">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
E-mail:
<input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
Website:
<input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
<label>Comment: <textarea name="comment" rows="5" cols="40"></textarea>
<br><br>
Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit"> </form>
<!DOCTYPE HTML>
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body><?php
<h2>PHP 验证实例</h2>
// 定义变量并设置为空值
$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 格式";
}
} if (empty($_POST["website"])) {
$website = "";
} else {
$website = test_input($_POST["website"]);
// 检查 URL 地址语法是否有效(正则表达式也允许 URL 中的斜杠)
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
$websiteErr = "无效的 URL";
}
} if (empty($_POST["comment"])) {
$comment = "";
} else {
$comment = test_input($_POST["comment"]);
} if (empty($_POST["gender"])) {
$genderErr = "性别是必选的";
} else {
$gender = test_input($_POST["gender"]);
}
} function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
<p><span class="error">* 必需的字段</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="text" name="website">
<span class="error"><?php echo $websiteErr;?>
</span>
<br><br>
评论:<textarea name="comment" rows="5" cols="40"></textarea>
<br><br>
性别:
<input type="radio" name="gender" value="female">女性
<input type="radio" name="gender" value="male">男性
<span class="error">*<?php echo $genderErr;?>
</span>
<br><br>
<input type="submit" name="submit" value="提交">
</form><?php
</body>
echo "<h2>您的输入:</h2>";
echo $name;
echo "<br>";
echo $email;
echo "<br>";
echo $website;
echo "<br>";
echo $comment;
echo "<br>";
echo $gender;
?>
</html>
最新文章
- 二进制包安装MySQL数据库
- 排序陷阱 List.Sort Linq.OrderBy
- HDU3930 (原根)
- BZOJ 4198 荷马史诗
- 怎么找到MyEclipse->;add struts capabilities
- javascript学习(9)——[设计模式]单例
- python之数据库操作(sqlite)
- OC—Setter、Getter
- SHELL命令集锦
- (译)ABP之依赖注入
- Vibrator控制手机震动
- android -------- RecyclerView的可(多个Item水平,垂直)滚动列表的实现
- [matlab] 4.M函数
- [转] Python Traceback详解
- typescript 与 js 开发 react 的区别
- EntityFramework.Extended 对EF进行扩展
- mycat 入门使用例子
- tomcat8.5配置redis实现session共享(tomcat-redis-session-manager-master)
- [转] MachingLearning中的距离相似性计算以及python实现
- pandoc 基本使用
热门文章
- 【dp】leetcode Best Time to Buy and Sell Stock IV
- Java面试题集(三)
- HDU 5009 Paint Pearls(西安网络赛C题) dp+离散化+优化
- POJ 2411 状压dp
- Laravel 数据库操作之Eloquent ORM模型
- Mysql Binlog日志文件介绍
- GRYZY #13. 拼不出的数
- Spring实战Day7面向切面编程术语介绍
- 将文件从已Root Android手机中copy出来的几个cmd窗口命令
- string 复制给char[] 即:c_str() 用法: