PHP表單使用實例

Web表單的功能就是讓瀏覽者和網站有一個互動的平臺。表單主要用來在網頁中發送數據到服務器。例如,你註冊信息是所使用的表單,當你填寫完信息時,你要提交(submit),提交就是將你表單中的內容從客戶端瀏覽器傳送到服務器端,經過PHP程序進行處理後,再將用戶所需要的信息傳遞迴客戶端瀏覽器上,通過獲取用戶的信息,使PHP與Web表單實現交互。

本文實現了一個表單驗證的列子:
1:通過用戶輸入的名字,郵件,網址,性別等信息,並對相關信息進行合法性驗證。
2:用戶輸入錯誤,提示紅色錯誤提示信息。
3:輸入信息全部合法之後,才顯示用戶的輸入信息。

表單驗證代碼如下:

<html>
<head>
   <meta charset="utf-8">
   <title>PHP學習</title>
</head>


<style>
   .error {color: #FF0000;}
</style>
<body>
<?php
   function test_input($data)
    {
       $data = trim($data);
       $data = stripslashes($data);
       $data = htmlspecialchars($data);
       return $data;
    }

   //  定義變量並默認設置爲空值
   $name = $email = $gender = $comment = $website = "";
   $nameErr = $emailErr = $genderErr = $commentErr = $websiteErr ="";
   $flag = true;
   if ($_SERVER["REQUEST_METHOD"] == "POST")
    {
       if (empty($_POST["name"])){
           $nameErr = "姓名是必須填的";
           $flag = false;
       } else {
           $name = test_input($_POST["name"]);
           //  檢查姓名是否包含字母和空白字符
           if (!preg_match("/^[a-zA-Z ]*$/", $name)){
                $nameErr = "只允許字母和空格";
                $flag = false;
           }
       }

       if (empty($_POST["email"])){
           $emailErr = "郵件是必填的";
           $flag = false;
       } else {
           $email = test_input($_POST["email"]);
           //  檢查郵件地址語法是否有效
           if(!preg_match("/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/",$email)){
                $emailErr = "無效的email格式";
                $flag = false;
           }
       }

       if (empty($_POST["website"])){
           $flag = false;
       } 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";
                $flag = false;
           }
       }

       if (empty($_POST["gender"])){
           $genderErr = "性別是必選的";
           $flag = false;
       } else {
           $gender = test_input($_POST["gender"]);
        }

       if (!empty($_POST["comment"])){
           $comment = test_input($_POST["comment"]);
       }
    }
?>

<h2>PHP 表單驗證實例</h2>
<form method="post" action="<?php echohtmlspecialchars($_SERVER["PHP_SELF"]);?>">
    名字:<inputtype="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>
    網址:<inputtype="text" name="website">
   <span class="error">* <?php echo$websiteErr;?></span>
   <br><br>
    備註:<textareaname="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
   if ($_SERVER["REQUEST_METHOD"] == "POST" and $flag)
    {
       echo "<h2>您輸入的內容是:</h2>";
       echo "名字:" .$name . "<br>";
       echo "E-mail:" . $email . "<br>";
       echo "網址:" . $website . "<br>";
       echo "備註:" . $_POST["comment"] . "<br>";
       echo "性別:" . $_POST["gender"] . "<br>";
    }
?>
</body>
</html>

初始狀態:
這裏寫圖片描述

運行結果:
這裏寫圖片描述

用到的知識:
1:$_SERVER[“PHP_SELF”]是一個超全局變量,返回房錢執行腳本的文件名。

2:htmlspecialchars()函數把特殊字符轉化爲HTML實體。這意味着 < 和 > 之類的 HTML 字符會被替換爲 < 和 > 。這樣可防止攻擊者通過在表單中注入 HTML 或 JavaScript 代碼(跨站點腳本攻擊)對代碼進行利用。

3:可以通過$_SERVER[“REQUEST_METHOD”]來檢測表單是否被提交。

4:在用戶提交表單時,應進行的處理:(通過 PHP trim() 函數)去除用戶輸入數據中不必要的字符(多餘的空格、製表符、換行);(通過 PHP stripslashes() 函數)刪除用戶輸入數據中的反斜槓(\)。

5:使用正則表達式驗證字符串是否符合條件:
正則表達式簡單介紹
preg_match ( string ,string 字符串 [, array &]) 正則變量,匹配 結果變量裏。如果沒有匹配到結果返回0。
^表示開始;$表示結束。
在正則表達式中字母使用\w、而數字使用\d(\D表示非數字)來表示
• + 表示一個或者多個
• * 表示0個或者多個
• ? 表示有或者沒有
• {n} 表示具體幾位
• {m,n} 表示大於m個,小於n個
使用或條件可以用來匹配字符串,如果僅僅是單個的字母或者字符,則可以使用範圍表示
使用[]可以表示一個字符的取值範圍
‘/[a0.]/’可以匹配包含了a或者0或者.的任意字符串
另外,正則表達式還可以使用-來表示一組範圍
• [a-z] 表示小寫的26個字母中的任意一個
• [A-Z] 表示一個大寫字母
• [0-9] 表示一位十進制數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章