zoukankan      html  css  js  c++  java
  • php表单处理

    一、表单处理 $_GET 和 $_POST

    PHP中的$_GET 和 $_POST 变量用于检索表单的信息,比如用户的输入。

    <form action = "welcome.php" method = "post">
            名字:<input type = "text" name = "usename">
            年龄:<input type = "text" name = "age">
            <input type = "submit" value = "提交">
    
        </form>

    当用户提交完数据之后,表单的数据会被发送到命名为welcome.php的PHP文件

    欢迎<?php echo $_POST["usename"];?>!<br>
    你的年龄是<?php echo $_POST["age"];?> 岁

    二、PHP获取下拉菜单的数据

    下拉菜单单选

     1 <?php
     2             $q = isset($_GET['q'])? htmlspecialchars($_GET['q']) : '';
     3             if($q) {
     4                     if($q =='RUNOOB') {
     5                             echo '菜鸟教程<br>http://www.runoob.com';
     6                     } else if($q =='GOOGLE') {
     7                             echo 'Google 搜索<br>http://www.google.com';
     8                     } else if($q =='TAOBAO') {
     9                             echo '淘宝<br>http://www.taobao.com';
    10                     }
    11             } else {
    12         ?>
    13             <form action="" method="get"> 
    14                 <select name="q">
    15                 <option value="">选择一个站点:</option>
    16                 <option value="RUNOOB">Runoob</option>
    17                 <option value="GOOGLE">Google</option>
    18                 <option value="TAOBAO">Taobao</option>
    19                 </select>
    20                 <input type="submit" value="提交">
    21                 </form>
    22             <?php
    23             }
    24             ?>
    View Code

    下拉菜单多选

    如果下拉菜单是多选的( multiple="multiple"),我们可以通过将设置 select name="q[]" 以数组的方式获取,

     1 <?php
     2             $q = isset($_POST['q'])? $_POST['q'] : '';
     3             if(is_array($q)) {
     4                 $sites = array(
     5                         'RUNOOB' => '菜鸟教程: http://www.runoob.com',
     6                         'GOOGLE' => 'Google 搜索: http://www.google.com',
     7                         'TAOBAO' => '淘宝: http://www.taobao.com',
     8                 );
     9                 foreach($q as $val) {
    10                     // PHP_EOL 为常量,用于换行
    11                     echo $sites[$val] . PHP_EOL;
    12                 }
    13                   
    14             } else {
    15             ?>
    16             <form action="" method="post"> 
    17                 <select multiple="multiple" name="q[]">
    18                 <option value="">选择一个站点:</option>
    19                 <option value="RUNOOB">Runoob</option>
    20                 <option value="GOOGLE">Google</option>
    21                 <option value="TAOBAO">Taobao</option>
    22                 </select>
    23                 <input type="submit" value="提交">
    24                 </form>
    25             <?php
    26             }
    27         ?>
    View Code

    三、单选按钮表单

     PHP 单选按钮表单中 name 属性的值是一致的,value 值是不同的

     1 <?php
     2             $q = isset($_GET['q'])? htmlspecialchars($_GET['q']) : '';
     3             if($q) {
     4                     if($q =='RUNOOB') {
     5                             echo '菜鸟教程<br>http://www.runoob.com';
     6                     } else if($q =='GOOGLE') {
     7                             echo 'Google 搜索<br>http://www.google.com';
     8                     } else if($q =='TAOBAO') {
     9                             echo '淘宝<br>http://www.taobao.com';
    10                     }
    11             } else {
    12             ?><form action="" method="get"> 
    13                 <input type="radio" name="q" value="RUNOOB" />Runoob
    14                 <input type="radio" name="q" value="GOOGLE" />Google
    15                 <input type="radio" name="q" value="TAOBAO" />Taobao
    16                 <input type="submit" value="提交">
    17             </form>
    18             <?php
    19             }
    20         ?>
    View Code

    四、checkbox复选框

     1 <?php
     2             $q = isset($_POST['q'])? $_POST['q'] : '';
     3             if(is_array($q)) {
     4                 $sites = array(
     5                         'RUNOOB' => '菜鸟教程: http://www.runoob.com',
     6                         'GOOGLE' => 'Google 搜索: http://www.google.com',
     7                         'TAOBAO' => '淘宝: http://www.taobao.com',
     8                 );
     9                 foreach($q as $val) {
    10                     // PHP_EOL 为常量,用于换行
    11                     echo $sites[$val] . PHP_EOL;
    12                 }
    13                   
    14             } else {
    15             ?><form action="" method="post"> 
    16                 <input type="checkbox" name="q[]" value="RUNOOB"> Runoob<br> 
    17                 <input type="checkbox" name="q[]" value="GOOGLE"> Google<br> 
    18                 <input type="checkbox" name="q[]" value="TAOBAO"> Taobao<br>
    19                 <input type="submit" value="提交">
    20             </form>
    21             <?php
    22             }
    23         ?>
    View Code
     1 <?php
     2             $q = isset($_POST['q'])? $_POST['q'] : '';
     3             if(is_array($q)) {
     4                 $sites = array(
     5                         'RUNOOB' => '菜鸟教程: http://www.runoob.com',
     6                         'GOOGLE' => 'Google 搜索: http://www.google.com',
     7                         'TAOBAO' => '淘宝: http://www.taobao.com',
     8                 );
     9                 foreach($q as $val) {
    10                     // PHP_EOL 为常量,用于换行
    11                     echo $sites[$val] . PHP_EOL;
    12                 }
    13                   
    14             } else {
    15             ?><form action="" method="post"> 
    16                 <input type="checkbox" name="q[]" value="RUNOOB"> Runoob<br> 
    17                 <input type="checkbox" name="q[]" value="GOOGLE"> Google<br> 
    18                 <input type="checkbox" name="q[]" value="TAOBAO"> Taobao<br>
    19                 <input type="submit" value="提交">
    20             </form>
    21             <?php
    22             }
    23         ?>
    View Code

    五、使用PHP验证表单数据

    当用户提交表单时,完成两件事
    1、使用PHP trim()函数去除用户输入数据中不必要的字符(如:空格, tab, 换行)

    2、使用PHP stripslashes()函数去除用户输入数据中的反斜杠()

    将这些过滤的函数写在一个自定义的函数里,方便调用

     1 <!DOCTYPE HTML> 
     2         <html>
     3             <head>
     4             <meta charset="utf-8">
     5                 <title>菜鸟教程(runoob.com)</title>
     6             </head>
     7         <body> 
     8 
     9         <?php
    10         // 定义变量并默认设置为空值
    11         $name = $email = $gender = $comment = $website = "";
    12 
    13         if ($_SERVER["REQUEST_METHOD"] == "POST")
    14             {   
    15                 //调用test_input()函数对用户输入的值进行处理 (\,空格,tab,换行)
    16                $name = test_input($_POST["name"]);
    17                
    18                $email = test_input($_POST["email"]);
    19                
    20                $website = test_input($_POST["website"]);
    21                
    22                $comment = test_input($_POST["comment"]);
    23                
    24                $gender = test_input($_POST["gender"]);
    25             }
    26         
    27         //自定义函数test_input()去空格、tab、反斜杠、换行
    28         /*
    29             这里也可以对提交的数据作其他的验证,比如邮箱的格式等等
    30         */
    31         function test_input($data)
    32             {
    33                $data = trim($data);
    34                $data = stripslashes($data);
    35                $data = htmlspecialchars($data);
    36                return $data;
    37             }
    38         ?>
    39 
    40         <h2>PHP 表单验证实例</h2>
    41             <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> //action 提交到当前php页面
    42                名字: <input type="text" name="name">
    43                <br><br>
    44                E-mail: <input type="text" name="email">
    45                <br><br>
    46                网址: <input type="text" name="website">
    47                <br><br>
    48                备注: <textarea name="comment" rows="5" cols="40"></textarea>
    49                <br><br>
    50                性别:
    51                <input type="radio" name="gender" value="female">52                <input type="radio" name="gender" value="male">53                <br><br>
    54                <input type="submit" name="submit" value="Submit"> 
    55             </form>
    56 
    57         </body>
    View Code

    六、表单必填字段

    对于一些必填的字段,初始定义一些错误变量,这些错误变量将显示在必须字段上。此外还将检查$_POST

    变量是否为空(使用PHP的empty函数)。如果为空,则显示对应的错误信息,如果不为空,数据将传递给test_input()函数:

     1 <?php 
     2         //定义变量默认设置为空值
     3         $nameErr = $emailErr = $genderErr = $websiteErr = "";
     4         $name = $email = $gender = $comment = $website = "";
     5         
     6         if($_SERVER["REQUEST_METHOD"] == "POST){
     7             
     8             //验证名字
     9             if(empty($_POST["name"])){
    10                 $nameErr = "名字是必填项";
    11                 
    12             }else {
    13                 $name = test_input(_POST["name"]);
    14                 
    15             }
    16             
    17             //验证邮箱
    18             if(empty($_POST["email"])){
    19                 $emailErr = "邮箱是必填项";
    20                 
    21             }else {
    22                 $email = test_input($_POST["email"]);
    23             
    24             }
    25             
    26             //验证性别
    27             if(empty($_POST["gender"])){
    28                 $gender = "性别是必填项";
    29             
    30             }else {
    31                 $gender = test_input($_POST["gender"]);
    32             
    33             }
    34             
    35             //验证站点
    36             if(empty($_POST["website"])){
    37                 $website = "";
    38             }else{
    39                 $website = test_input($_POST["website"]);
    40             }
    41         
    42         }
    43     function test_input($data) {
    44            $data = trim($data);
    45            $data = stripslashes($data);
    46            $data = htmlspecialchars($data);
    47            return $data;
    48         }
    49     
    50     ?>
    View Code

    以下是一个完整的表单输入并验证,输入错误并给出提示

     1 <!DOCTYPE HTML> 
     2         <html>
     3         <head>
     4         <meta charset="utf-8">
     5         <title>菜鸟教程(runoob.com)</title>
     6         <style>
     7         .error {color: #FF0000;}
     8         </style>
     9         </head>
    10         <body> 
    11 
    12         <?php
    13         // 定义变量并默认设为空值
    14         $nameErr = $emailErr = $genderErr = $websiteErr = "";
    15         $name = $email = $gender = $comment = $website = "";
    16 
    17         if ($_SERVER["REQUEST_METHOD"] == "POST") {
    18            if (empty($_POST["name"])) {
    19               $nameErr = "名字是必须的。";
    20            } else {
    21               $name = test_input($_POST["name"]);
    22            }
    23 
    24            if (empty($_POST["email"])) {
    25               $emailErr = "邮箱是必须的。";
    26            } else {
    27               $email = test_input($_POST["email"]);
    28            }
    29 
    30            if (empty($_POST["website"])) {
    31               $website = "";
    32            } else {
    33               $website = test_input($_POST["website"]);
    34            }
    35 
    36            if (empty($_POST["comment"])) {
    37               $comment = "";
    38            } else {
    39               $comment = test_input($_POST["comment"]);
    40            }
    41 
    42            if (empty($_POST["gender"])) {
    43               $genderErr = "性别是必须的。";
    44            } else {
    45               $gender = test_input($_POST["gender"]);
    46            }
    47         }
    48         
    49         function test_input($data) {
    50            $data = trim($data);
    51            $data = stripslashes($data);
    52            $data = htmlspecialchars($data);
    53            return $data;
    54         }
    55         ?>
    56 
    57         <h2>PHP 表单验证实例</h2>
    58         <p><span class="error">* 必填字段。</span></p>
    59         //action 不做跳转,把当前表单信息传给当前执行的文件
    60         <form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>"> 
    61         
    62            名字: <input type="text" name="name">
    63            <span class="error">* <?php echo $nameErr;?></span>  //用于显示错误信息
    64            <br><br>
    65            
    66            E-mail: <input type="text" name="email">
    67            <span class="error">* <?php echo $emailErr;?></span>
    68            <br><br>
    69            
    70            网址: <input type="text" name="website">
    71            <span class="error"><?php echo $websiteErr;?></span>
    72            <br><br>
    73            
    74            备注: <textarea name="comment" rows="5" cols="40"></textarea>
    75            <br><br>
    76            
    77            性别:
    78            <input type="radio" name="gender" value="female">79            <input type="radio" name="gender" value="male">80            <span class="error">* <?php echo $genderErr;?></span>
    81            <br><br>
    82            
    83            <input type="submit" name="submit" value="Submit"> 
    84         </form>
    85 
    86         </body>
    87         </html>
    View Code

    关于action后面的代码

    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

    //action后面是PHP代码,代码最终返回当前正在执行脚本的文件名

    什么是$_SERVER["PHP_SELF]

    $_SERVER["PHP_SELF] 是超级全局变量,返回当前正在执行脚本的文件名,
    所以$_SERVER["PHP_SELF] 会发送表单数据到当前页面,而不是跳转到不同的页面

    什么是htmlspecialchars()方法?

    htmlspecialchars()函数把一些预定义的字符转换为HTML实体。总而言之,为了安全起见。

  • 相关阅读:
    PHP防跨站之open_basedir目录设置
    在线Jupyter平台,验证手机号可免费使用
    wget命令之用户密码cookies断点续传指定类型整站下载
    linux控制台输出到文件
    结构体取变量
    常用编码解码识别
    #define和const
    做一个自己的清理临时文件的小程序(附成品&升级版)
    C盘清理/瘦身
    修复Word启动失败 报错WPS32
  • 原文地址:https://www.cnblogs.com/liaopeng123/p/11542651.html
Copyright © 2011-2022 走看看