簡體   English   中英

有沒有辦法將 **type** HTML 輸入屬性值傳遞給 HTML/PHP 表單中的 $_POST 數組?

[英]Is there a way to pass the **type** HTML input attribute value to the $_POST array in a HTML/PHP Form?

我們能否以某種方式將 HTML type的輸入屬性值傳遞給 $_POST 數組,或者使用 PHP 以其他方式獲取它?

我知道我可以創建一個隱藏字段並將實際輸入的類型基本上放入隱藏字段的值中,但這對我來說似乎有點像“重復”工作。

我想創建一個表單,其中輸入值提交到 $_POST並且我可以檢測該輸入的類型,而無需將單個輸入硬編碼/映射到每個類型。

通過這種方式,我可以檢測字段類型並采取行動,而無需創建將我的自定義輸入(按名稱或 ID)映射到某種類型的“映射”,無論如何我已經以 HTML 形式聲明了該類型。

在表單提交中無法檢測到輸入的類型似乎是一個真正的缺點 - 或者(希望)我錯過了什么?

我們能否以某種方式將 HTML 類型的輸入屬性值傳遞給 $_POST 數組,或者使用 PHP 以其他方式獲取它?

不是本身。

我知道我可以創建一個隱藏字段,基本上將真實輸入的類型放入隱藏字段的值中

這是一種方法。

在表單提交中無法檢測到輸入的類型似乎是一個真正的缺點

通常你知道給定字段的數據類型是什么,因為你不是一般地處理它們,所以它很少是一個有用的特性。

也許(希望)我錯過了什么?

不。

好吧,這是細分;

從Z2FEC392304A5C23AC138DA222847F9B7CZ訪問並通過$ _POST訪問Z2FEC392304A5C23AC1138DA2222847F9B7CZ僅在Z29230111111中,僅在Z2923011111上使用Z,因此僅在Z2923847 c中使用Z,因此僅在Z292301111上使用Z,因此僅在Z29238DAC11上使用,並且僅適用於客戶端,並在deledy中訪問了您,並且僅在deleds上使用,並且從Z2FEC392304A5C23AC138DA222847F9B7CZ進行訪問,並僅適用於cointer of tock youts,它只是在delets等。將其中的內容轉換為序列化的查詢字符串,或者至少將其讀取以進行序列化。

例如

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

它采用 name 屬性並轉換為此

?fname=ferret

看到它甚至沒有打擾 ID 屬性。 當我們點擊提交按鈕時,表單將只運行每個輸入的名稱屬性,並使 LHS 具有值並將用戶輸入作為 RHS 添加到值中。 它根本不會做任何其他事情。

在 PHP 方面,我們詢問 $_GET 隧道請求或 $_POST 隧道中是否有任何查詢字符串。 如果有任何查詢字符串,這些中的每一個 - 強調單詞字符串。 將字符串分解為數組並提供給您。 因此 $POST['fname']。 看起來像這樣

$_POST = [
fname => 'ferret',
someothingelse => 'someothervalue']

所以你想要做的是或者至少要求做的是……讓瀏覽器改變它的 BOM 行為——我們不能真正意義上的這樣做; 使表單添加這樣的東西。

?fname=ferret,text 

?fname=ferret-text

?fname=ferret/text 

默認情況下,表單不會執行此操作,除非您運行自定義 function 在提交之前更新每個查詢,這與我們所說的 escaping 一致,如果有機會,您會錯過 3/100 次

然后在 PHP 方面,您希望 PHP 自己弄清楚斜線之后的類型是這樣的

$_POST = [
fname => 'ferret/text']

PHP 不會自己做到這一點,除非你分叉它像 Facebook 所做的那樣定制,然后運行它,或者至少制作某種低級庫,但這也是事后的事。

如果您不知道,那就是 XSS 和注入的發生方式。

所以查詢字符串標准是嚴格的,以保持帶有軍國主義數據和序列化的字符串。

因此,是的,您打算對隱藏字段執行的操作是一種經過測試的實現您想要的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM