zoukankan      html  css  js  c++  java
  • php与html 表单的结合

    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 
    $name = $_REQUEST['fname']; 
    echo $name; 
    ?>
    
    </body>
    </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 字符会被替换为 &lt; 和 &gt; 。这样可防止攻击者通过在表单中注入 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
    // 定义变量并设置为空值
    $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("/(?:(?: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;
    }
    ?>
    
    <h2>PHP 验证实例</h2>
    <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
    echo "<h2>您的输入:</h2>";
    echo $name;
    echo "<br>";
    echo $email;
    echo "<br>";
    echo $website;
    echo "<br>";
    echo $comment;
    echo "<br>";
    echo $gender;
    ?>
    
    </body>
    </html>
  • 相关阅读:
    centos 用户管理
    rsync 实验
    文件共享和传输
    PAT 1109 Group Photo
    PAT 1108 Finding Average
    PAT 1107 Social Clusters
    PAT 1106 Lowest Price in Supply Chain
    PAT 1105 Spiral Matrix
    PAT 1104 Sum of Number Segments
    PAT 1103 Integer Factorization
  • 原文地址:https://www.cnblogs.com/leyan/p/4815688.html
Copyright © 2011-2022 走看看