簡體   English   中英

為什么我的輸入值總是在php中設置?

[英]Why is my input value always set in php?

我正在我的本地wampserver上工作,我在那里用PHP測試表單驗證; 我無法理解為什么我的輸入值總是被設置 - if(isset($_POST['variable'])) - ,即使我什么也沒輸入?

這對選擇標簽來說是最煩人的:如果我什么都不做(然后我明白沒有“選擇”屬性),第一個選項值將被設置為我的選擇......

有人能幫我一下嗎 ? 謝謝 ;-)

說明

這種行為是正確的,這是HTML的工作方式。 要解決這個問題,您還需要檢查您返回的值是否正確,而不僅僅是設置了。

您可以在選擇空中設置第一個值:

<select name="test">
    <option value="">Please select an option...</option>
    <option value="option1">Option 1</option>
</select>

然后在你的PHP中:

if(isset($_POST['test'] && !empty($_POST['test'])) {
    // there is something in the field
} else {
    // trigger error
}

我應該在這里指出empty()會將 0視為空,所以如果你要發回整數,那么你應該按以下方式檢查:

if(isset($_POST['test'] && '' !== $_POST['test']) {
    // there is something in the field
} else {
    // trigger error
}

如果它作為參數發送,它將被設置,即使該值是空字符串。

isset()告訴您是否已定義變量,而不是是否已填充變量。

你需要檢查你的帖子變量上的isset() ,但你也可以檢查他們是否有一個值:

if(isset($_POST['variable']) && $_POST['variable']!=='') { .... }

希望有所幫助。

你應該測試它是否有值:

if (isset($_POST['variable']) && $_POST['variable'])

這就是HTML的工作方式,你無法幫助它。
唯一沒有發送到服務器的輸入類型是一個空的復選框(它反過來令人惱火的人)

只需在select標簽的頂部添加一個空選項即可。

由於這種行為,您不必使用isset檢查每個字段。

如果要取消設置空輸入,請嘗試使用array_filter($_POST)

而不是使用isset(),我建議使用empty():

if(!empty($_POST['variable'])) {
    // do something
}

它相當於:

if (isset($_POST['variable']) && $_POST['variable']) {
    // do something
}

但更容易閱讀,而且稍微輕一點。

對於選擇標記,您可以在頂部添加禁用選項,然后除非明確選擇某些內容,否則不會提交select變量。

<select name="variable>
    <option disabled=disabled>Select one...</option>
    //other options here
</select>

你的表格是什么樣的? 根據位於此處的isset文檔: http ://php.net/manual/en/function.isset.php,isset僅在設置值時返回true或不為null。

因此,如果您的表單設置了值,則可能就是您看到此行為的原因。 在正常情況下,未設置的值應在isset檢查中返回false。

暫無
暫無

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

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