整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          如何使用PHP驗證和過濾HTML表單提交的數(shù)據(jù)?示例代碼剖析

          用戶在 HTML 表單中填寫并提交數(shù)據(jù)時,可以使用 PHP 來接收并處理這些數(shù)據(jù)。要實現(xiàn)這一點,需要創(chuàng)建一個 PHP 腳本來處理提交的數(shù)據(jù),然后將 HTML 表單的 "action" 屬性設(shè)置為該腳本的文件路徑。表單提交的數(shù)據(jù)需要進(jìn)行驗證和過濾,以確保數(shù)據(jù)的完整性和安全性??梢允褂脳l件語句、正則表達(dá)式、過濾器函數(shù)等方法來驗證和過濾數(shù)據(jù),并使用 htmlspecialchars() 函數(shù)轉(zhuǎn)義 HTML 標(biāo)記,以防止 XSS 攻擊。

          以下是一個簡單的示例:

          HTML 表單代碼:

          <form action="submit.php" method="post">

          <label for="name">Name:</label>

          <input type="text" id="name" name="name">

          <label for="email">Email:</label>

          <input type="email" id="email" name="email">

          <button type="submit">Submit</button>

          </form>

          PHP 代碼(submit.php):

          <?php

          // 獲取表單提交的數(shù)據(jù)

          $name = $_POST['name'];

          $email = $_POST['email'];

          // 在這里進(jìn)行處理,例如將數(shù)據(jù)存儲到數(shù)據(jù)庫中

          // ...

          // 返回一個響應(yīng),告訴用戶數(shù)據(jù)已經(jīng)被成功提交

          echo "Thank you for submitting the form, $name!";

          ?>

          在上面的示例中,表單的 "action" 屬性設(shè)置為 "submit.php",這意味著提交表單時,數(shù)據(jù)將被發(fā)送到 submit.php 文件中的 PHP 代碼中進(jìn)行處理。PHP 代碼使用 $_POST 數(shù)組來獲取表單提交的數(shù)據(jù),然后進(jìn)行處理,例如將數(shù)據(jù)存儲到數(shù)據(jù)庫中。最后,PHP 代碼返回一個響應(yīng),告訴用戶數(shù)據(jù)已經(jīng)被成功提交。在處理表單數(shù)據(jù)時,一定要對用戶輸入進(jìn)行驗證和過濾,以防止安全漏洞。

          需要對表單提交的數(shù)據(jù)進(jìn)行驗證和過濾,以確保數(shù)據(jù)的完整性和安全性。以下是一些常見的方法:

          1、驗證表單字段:在 PHP 代碼中使用條件語句和正則表達(dá)式等方法來驗證表單字段的有效性,例如驗證電子郵件地址的格式是否正確。

          $email = $_POST['email'];

          if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {

          // 如果郵件地址格式不正確,則顯示錯誤消息

          echo "Invalid email address";

          }

          2、過濾輸入數(shù)據(jù):使用 PHP 中的過濾器函數(shù)來過濾表單輸入數(shù)據(jù),以防止 XSS 攻擊和 SQL 注入等安全漏洞。

          $name = $_POST['name'];

          $name = filter_var($name, FILTER_SANITIZE_STRING); // 過濾特殊字符和標(biāo)簽

          3、防止跨站腳本攻擊(XSS):在 PHP 代碼中使用 htmlspecialchars() 函數(shù)來轉(zhuǎn)義 HTML 標(biāo)記,防止惡意腳本注入到頁面中。

          $name = $_POST['name'];

          $name = htmlspecialchars($name, ENT_QUOTES, 'UTF-8'); // 轉(zhuǎn)義 HTML 標(biāo)記

          4、防止 SQL 注入攻擊:在 PHP 代碼中使用參數(shù)化查詢或準(zhǔn)備語句來執(zhí)行數(shù)據(jù)庫操作,以防止惡意 SQL 語句注入到數(shù)據(jù)庫中。

          $stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");

          $stmt->bindParam(':name', $name);

          $stmt->bindParam(':email', $email);

          $stmt->execute();

          通過這些方法,可以確保表單提交的數(shù)據(jù)是安全和有效的,并且能夠正常地處理和存儲到數(shù)據(jù)庫中。

          表中的對話表格主要用于過濾數(shù)據(jù)。通常,在設(shè)置值的幫助下將控件放置在窗體上。然后,這些值將用于進(jìn)一步過濾數(shù)據(jù)。但是大多數(shù)控件都允許您直接過濾數(shù)據(jù)。也就是說,可以使用DataColumn的屬性將它們鏈接到數(shù)據(jù)源??刂浦祵⒂糜谶^濾。此外,還有另一個功能可以設(shè)置比較控制數(shù)據(jù)值的條件——FilterOperation。此功能使您可以比較、更多、更少以及這些選項的組合。

          通常,我們想按日期過濾數(shù)據(jù)。此外,人們通常按日期范圍進(jìn)行過濾。

          讓我們看一個創(chuàng)建具有類似過濾條件的報表的示例(FastReport.Net最新安裝包下載:http://www.fastreportcn.com/download.html)。將對話框表單添加到報表中:

          一分鐘教你使用對話框在報表中按日期過濾數(shù)據(jù)

          在表單上,我們將放置兩個控件元素DateTimePicker。需要第一個設(shè)置日期范圍的開始,第二個設(shè)置結(jié)束。

          讓我們配置第一個對象DateTimePicker的屬性:

          一分鐘教你使用對話框在報表中按日期過濾數(shù)據(jù)

          在這里,我們設(shè)置Value屬性以默認(rèn)設(shè)置范圍的開始。DateColumn屬性在Orders表的OrderDate字段上設(shè)置。篩選條件為GreaterThanOrEqual。這意味著日期范圍將從控件指示的日期開始。

          對于第二個DateTimePicker字段,我們設(shè)置以下屬性:

          一分鐘教你使用對話框在報表中按日期過濾數(shù)據(jù)

          默認(rèn)值保持不變——當(dāng)前日期。DataColumn屬性與第一個DateTimePicker中的屬性相同。篩選條件——LessThanOrEqual,小于或等于指定的日期。

          報表模板可能包含用于過濾字段的上述內(nèi)容,也許不是,不過沒關(guān)系。

          一分鐘教你使用對話框在報表中按日期過濾數(shù)據(jù)

          甚至在構(gòu)建報表數(shù)據(jù)之前,都將根據(jù)指定的日期范圍過濾數(shù)據(jù):

          一分鐘教你使用對話框在報表中按日期過濾數(shù)據(jù)

          結(jié)果,我們將獲得僅包含所需信息的報表:

          一分鐘教你使用對話框在報表中按日期過濾數(shù)據(jù)

          如您所見,在對話框表單中創(chuàng)建過濾器——這是一分鐘的任務(wù)。選擇數(shù)據(jù)源中的字段和過濾條件就足夠了。僅需設(shè)置兩個屬性——您就可以實現(xiàn)自己的目標(biāo)。


          更多精彩內(nèi)容請關(guān)注fastreport中文網(wǎng)www.fastreportcn.com或加入783996712,點擊“了解更多”獲取《FastReport.Net教程2019》

          多數(shù)PHP程序都使用HTML表單從用戶那里獲取數(shù)據(jù)并計算結(jié)果。

          HTML表單的一些基本原則

          • 選擇適合于收集的數(shù)據(jù)類型和提供交互方式的控件。
          • 清楚標(biāo)記每一個控件,這樣用戶就可以理解其功能。
          • 盡可能將標(biāo)簽對齊。將控件的左邊緣對齊。
          • 將相關(guān)的標(biāo)簽分組,并且通過設(shè)計中使用空白將每一個分組分開。
          • 表單上的控件順序應(yīng)該類似于用戶操作他們的順序。

          創(chuàng)建基本HTML表單

          首先創(chuàng)造一個基本的HTML大綱,包含表單控件;然后將控件進(jìn)行合并(HTML表單必須包括一個提交按鈕,用戶單擊它可以將表單數(shù)據(jù)發(fā)送到服務(wù)器。)一個單獨的HTML頁面可以包含多個表單。

          • 創(chuàng)建HTML結(jié)構(gòu)

          包含表單的HTML結(jié)構(gòu)和和普通的HTML結(jié)構(gòu)一樣。

          <HTML>
            <HEAD>
            <TITLE>標(biāo)題放在這</TITLE>
            </HEAD>
          <BODY>
            表單頁面放在這
            </BODY>
            </HTML>

          在包含表單的HTML頁面中可以使用任何HTML標(biāo)簽。基本的表單使用FROM標(biāo)簽來說明。該標(biāo)簽中METHOD屬性接收GET或POST兩個值中的一個。ACTION屬性子明PHP腳本的url,該腳本可以收集通過表單收集的數(shù)據(jù),可以是絕對路徑或者相對路徑。

          <FORM METHOD="method" ACTION="url"> 
            中間可以放置表單控件
            </FORM>
          • 合并控件

          兩個常用的基本控件:文本框和提交按鈕。

          文本框:允許用戶鍵入信息以發(fā)送給PHP腳本。NAME屬性為文本提供名稱,PHP腳本可以通過名稱準(zhǔn)確訪問其內(nèi)容,因此它應(yīng)該是唯一的且符合PHP變量命名規(guī)則(但不需要$符號),單標(biāo)簽。VALUE屬性指明出現(xiàn)在提交按鈕上面的標(biāo)題。創(chuàng)建方式如下:

          <INPUT TYPE = "TEXT" NAME="text">

          提交按鈕:允許用戶將一個表單的內(nèi)容發(fā)送到服務(wù)器,一個HTML表單對應(yīng)應(yīng)該有一個提交按鈕。

          示例:一個完整的HTML表單。

          <HTML>
            <HEAD>
            <TITLE>標(biāo)題</TITLE>
            </HEAD>
          <BODY>
          <FORM METHOD="POST" ACTION="phpinfo.php">
          <INPUT TYPE="TEXT" NAME="user_name">
          <BR/>
          <BR/>
          <INPUT TYPE="TEXT" NAME="user_email">
          <BR/>
          <BR/>
          <INPUT TYPE="SUBMIT" VALUE="Send the Data">
          </FORM>
            </BODY>
            </HTML>


          • 使用多個表單

          可以在一個HTML頁面中包含多個表單,注意下一個表單的FORM開始之前需要結(jié)束前一個FORM表單。

          <HTML>
            <HEAD>
            <TITLE>標(biāo)題</TITLE>
            </HEAD>
          <BODY>
            
          <FORM METHOD="POST" ACTION="phpinfo.php">
          <INPUT TYPE="TEXT" NAME="user_name">
          <BR/>
          <BR/>
          <INPUT TYPE="TEXT" NAME="user_email">
          <BR/>
          <BR/>
          <INPUT TYPE="SUBMIT" VALUE="Send the Data">
          <BR/>
          <BR/>
          </FORM>
          
          <FORM METHOD="POST" NAME="phpinfo.php">
          <INPUT TYPE="TEXT" NAME="user_name1">
          <BR/>
          <BR/>
          <INPUT TYPE="TEXT" NAME="user_email1">
          <BR/>
          <BR/>
          <INPUT TYPE="SUBMIT" VALUE="Send the Data1">
          </FORM>
          
            </BODY>
            </HTML>


          創(chuàng)建表單控件

          • 創(chuàng)建自定義的文本框

          文本框的屬性中,TYPE和NAME是必須的,其余是可選屬性。SIZE屬性用于設(shè)置文本框的可視大??;MAXLENGTH指明用戶鍵入字符的最大長度;VALUE給出了一個最初顯示在文本框中的值。

          <input type="text" name="" size="" maxlength="" value="">
          • 創(chuàng)建文本區(qū)域

          文本區(qū)域可以輸入多行文本。NAME和ROWS屬性是必須的。ROWS屬性表明了文本區(qū)域內(nèi)可以看到的文本行數(shù),充滿時會滾動。COLS屬性指明可見文本列數(shù)與行數(shù)類似。WRAP屬性指明文本區(qū)域內(nèi)單詞換行的方式,可以指定如下值。該標(biāo)簽為雙標(biāo)簽。

          說明

          off

          禁止單詞換行但用戶可以輸入換行符強制換行

          virtual/soft

          各行顯示為換行,但是換行并沒有被發(fā)送到服務(wù)器

          physica/hard

          啟用了單詞換行

          <inputarea name="" rows="" cols="" wrap="">
          • 創(chuàng)建密碼框

          創(chuàng)建密碼框的語法與文本框相同,但要將TYPE屬性指定為PASSWORD而不是TYPE。

          <input type="password" name="" size="" maxlength="" value="">
          • 創(chuàng)建復(fù)選框

          取兩個值中的一個,即二選一。TYPE屬性是必須的,checked屬性出現(xiàn),該復(fù)選框默認(rèn)情況會被選定。value屬性指定復(fù)選框被選定情況下被發(fā)送到服務(wù)器的值,默認(rèn)發(fā)送on值。法如下:

          <input type="checkbox" name="" checked value="">
          • 創(chuàng)建單選按鈕

          語法與復(fù)選框?qū)傩院x相同,但是TYPE屬性的值必須是RADIO,NAME屬性是必須的。

          <input type="radio" name="" checked value="">
          • 創(chuàng)建列表框

          用戶可以選擇一個或者多個選項,它是一個滾動菜單。

          <select name="" multipile size="">options go here</select>

          name屬性是必須的,multipile屬性指明用戶可以通過按下crtl鍵并單擊多個選項來選擇它們

          列表框的單選行為可作為單選按鈕。

          <option selected value="text"></options>
          • 創(chuàng)建隱藏域
          <input type="hidden" name="text"value="">
          • 實現(xiàn)上傳文件的HTML表單
          <input type="FILE" name="name" accept="time" value="text">

          其中type屬性是必須的。格式通過使用MIME碼指定。常用的格式如下:


          超文本標(biāo)記語言文本 .html,.html text/html

            普通文本 :txt text/plain

            word文檔:application/msword

            RTF文本 :rtf application/rtf

            GIF圖形 :gif image/gif

            JPEG圖形 :jpeg,

            jpg: image/jpeg

            au聲音文件:au audio/basic

            MIDI音樂文件 :mid,.midi audio/midi,audio/x-midi

            RealAudio音樂文件 .ra, .ram audio/x-pn-realaudio

            MPEG文件 .mpg,.mpeg video/mpeg

            AVI文件 .avi video/x-msvideo

            GZIP文件 .gz application/x-gzip

            壓縮文件.rar application/octet-stream

            壓縮文件.zip application/x-zip-compressed

            TAR文件 .tar application/x-tar


          更多提交表單的信息

          • 使用圖像提交數(shù)據(jù)
          <input type="image" src="url" name="text" align="align">
          • 創(chuàng)建重置按鈕
          <input type="reset" value="text">

          主站蜘蛛池模板: 无码精品久久一区二区三区| 精品无码一区二区三区水蜜桃| 91精品一区二区三区在线观看| 亚洲国产精品一区二区九九| 精品免费久久久久国产一区| 日韩一区二区久久久久久| 国产一区三区二区中文在线| 无码国产精品一区二区免费16| 麻豆国产一区二区在线观看| 国产综合无码一区二区色蜜蜜| 视频一区二区在线播放| 插我一区二区在线观看| 日产精品久久久一区二区| 韩国理伦片一区二区三区在线播放 | 日韩亚洲AV无码一区二区不卡| 国产一区二区电影在线观看| 人妖在线精品一区二区三区| 亚洲视频一区二区在线观看| 春暖花开亚洲性无区一区二区| 国产精品乱码一区二区三区| 精品无码AV一区二区三区不卡 | 一区三区三区不卡| 一区二区视频在线观看| 久久国产精品免费一区| 国产精品美女一区二区| 亚洲日韩一区二区三区| 成人国产一区二区三区| 亚洲av永久无码一区二区三区| 午夜无码一区二区三区在线观看| 日韩在线不卡免费视频一区| 国产一区二区电影| 亚洲国产精品一区| 麻豆一区二区免费播放网站| 国产午夜精品一区理论片飘花| 人妻内射一区二区在线视频| 国产亚洲福利精品一区二区| 日本无卡码免费一区二区三区| 成人国产精品一区二区网站公司| 无码播放一区二区三区| 亚洲AV日韩综合一区尤物| 亲子乱av一区区三区40岁|