[英]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.