简单的php表单制作

form有两个属性
action:提交地址
method:提交方式

数据传输方法

用超全局变量$_POST$_GET来收集表单数据。
两种方法都是通过创建数组来收集数据。键名为表单控件的名称,值来自表单输入的数据。
这时表单中需要有php文件,传输方法,以及提交按钮。

POST

<form action ="test.php" method="post">
意思为点击提交按钮后,该表单数据将传输到test.php文件供处理,传输方式是http post。此时注意post要小写,用VScode编写时回车自动变成大写了,结果出错。在php文件中,可以直接输出变量,如
echo $_POST["..."];
POST请求不会被缓存,不会保留在浏览器历史记录中,不能收藏为标签,对数据长度没有限制。通过POST方法从表单发送的信息对其他人是不可见的,可用于发送敏感数据。

GET

与POST使用方法一致
<form action="test.php" method="get">
echo $_GET["..."];
GET发送的信息对所有人可见,所有变量名和值都显示在URL中,对所发信息的数量有限制,大约在2000个字符,可发送非敏感数据。
发送的内容被显示在URL地址中

REQUEST

看到别人说还有一种$_REQUEST方法,用于获取GET或POST传送的内容。用法一致。

GET还是POST

当提交表单时,服务器上不会有任何改变时,只应该用GET形式。因为搜索关键字在URL中,用户可以标记搜索结果页面,并且不需要再次输入搜索关键字就能返回该结果页面。但是如果在提交表单之后,删除了一个文件、更新了一个数据库,或者插入了一条记录,应该使用POST,因为如果用户标记了该页面(按下back按钮),将不会再次触发表单提交并且潜在地创建一条重复的记录。

表单验证

在表单数据提交后应对数据进行相应的验证,保证安全。如某些字段是必需填写,某些不必需,或者数据的正确性。
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
可以用这种方式来将数据传送到当前页面。
htmlspecialchars把特殊字符转换为 HTML 实体,< 和 > 之类的 HTML 字符会被替换为 &lt;&gt;。保证安全性。
$_SERVER["PHP_SELF"]是一种超全局变量,它返回当前执行脚本的文件名。
可以在被请求字段后面加一些脚本,如果需要,会生成恰当的错误消息(如果用户未填写必填字段就试图提交表单)。

 

<html>

<head>
    <title>registration page</title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <style>
        .error {
            color: #ff0000;
        }
    </style>
</head>

<body>
    <?php
    $nameErr = $paswErr = $mailErr = $genderErr = "";
    $hasError = false;
    if ($_SERVER["REQUEST_METHOD"] == "POST") { //是判断提交的数据是否是POST方式传来的
        if (empty($_POST["username"])) {
            $hasError = true;
            $nameErr = "请输入用户名";
        }
        else{
            if(!(preg_match("/\w+/",$_POST["username"])))
            {
                $hasError=true;
                $nameErr="格式错误,请重新输入";
            }
        }
        if (empty($_POST["password"])) {
            $hasError = true;
            $paswErr = "请输入密码";
        } else {
            if (!preg_match("/^[A-Z]\w{5,}$/", $_POST["password"])) {
                $hasError = true;
                $paswErr = "密码格式不规范,请重新输入";
            }
        }
        if (empty($_POST["mail"])) {
            $hasError = true;
            $mailErr = "请输入邮箱地址";
        } else {
            if (!preg_match("/^\w+\@\w+.com$/", $_POST["mail"])) {
                $hasError = true;
                $mailErr = "邮箱地址格式错误";
            }
        }
        if (empty($_POST["gender"])) {
            $genderErr = "请填写性别";
            $hasError = true;
        }
        if (!$hasError){
             echo "注册成功!";
             var_dump($_POST);
        }

    }
    ?>
    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
        <h1>用户注册</h1>
        <span class="error">*标记部分为必填选项</span><br>

        用户名:<input type="text" name="username" placeholder="请输入用户名" id="username" title="只允许数字字母下划线" />
        <span class="error">* <?php echo $nameErr; ?></span><br>
       
        密码:<input type="password" name="password" placeholder="请输入密码" title="大写字母开头,可包含数字字母下划线,至少6位" />
        <span class="error">* <?php echo $paswErr; ?></span><br>
        
        邮箱:<input type="text" name="mail" />
        <span class="error">* <?php echo $mailErr; ?></span><br>
        
        性别:<label for="male">男</label><!--label为input元素定义标注-->
        <input type="radio" value="male" name="gender" id="male" />
        <label for="female">女</label><!--"for" 属性把 label 绑定到另外一个元素,注意id-->
        <input type="radio" value="female" name="gender" id="female" />
        <span class="error">* <?php echo $genderErr; ?></span><br>
        
        爱好:阅读<input type="checkbox" value="read" name="interest[]" />
        运动<input type="checkbox" value="motion" name="interest[]" />
        音乐<input type="checkbox" value="music" name="interest[]" /><br>
        
        出生年月:<select id="year" name="year"></select>
        <select id="month" name="month"></select><br>
        
        自我介绍:<textarea name="intro" cols="80" rows="5">Hi!I'm zarm.
                </textarea><br>
        <input type="submit" value="提交" />
    </form>
    <script>
        function birth() {
            for (var i = 1960; i < 2020; i++) {
                var year = document.createElement("option");
                year.text = i + "年";
                year.value = i;
                document.getElementById("year").add(year);
            }
            for (var n = 1; n < 13; n++) {
                var month = document.createElement("option");
                month.text = n + "月";
                month.value = n;
                document.getElementById("month").add(month);
            }
        }
        birth();
    </script>

</body>

</html>

 

  • 7
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值