FORM的欄位為空時,PHP的處理
背後核心的觀念:
(1) FORM在HTTP背後運作的原理
(2) 有出現在Request裡面的欄位,PHP才會幫它配置記憶體
1.情況一:text欄位為空
<form action='test2.php' method='POST'>
<input type='text' name='str' />
<input type='submit' />
</form>
如果str欄位什麼都不輸入就按下submit的話,HTTP在傳送POST Request時會有:
(其他變數)&str=&(其他變數)
PHP接收到(其他變數)&str=&(其他變數)以後,因為看到裡面有str=,所以會配置空間給$_POST['str']這個變數(有在Request裡面的欄位,PHP才會幫它配置記憶體)
由於等號後面並沒有東西,這相當於是"空字串",所以PHP會把$_POST['str']的值設定為""
也就是說PHP最後的處理是:$_POST['str'] = "";
2. 情況二:checkbox欄位為空
<form action='test2.php' method='POST'>
<input type='checkbox' name='str[A]' value='A' />
<input type='checkbox' name='str[B]' value='B' />
<input type='submit' />
</form>
如果str[A]項目有被勾選,但str[B]項目沒被勾選,那麼POST Request時會有:
(其他變數)&str[A]=A&(其他變數)
也就是說,沒被勾選的項目不會出現在Request裡面,既然沒出現在Request裡,PHP也不會為沒被勾選的項目配置記憶體。
換句話說,PHP不會配置變數$_POST['B']的記憶體。
沒有留言:
張貼留言