2011-02-25 48 views
2

根據我的PHP腳本,谷歌瀏覽器發送一個空的(例如沒有value="")輸入字段與表單帖子。這反映在PHP的$_POST超全局中。但是,其他瀏覽器並未表現出相同的行爲。Chrome是否處理與其他瀏覽器不同的空表單域?

此外,有問題的<input>是在<div style="display: none;"/>(即代碼中的逐字)內。好像其他瀏覽器不會發送這些信息一樣。

我如何找到文檔或證明Chrome處理這個問題的方式不同?

更新

事實證明,在div應用了CSS樣式它適用visibility: hidden; - 我不知道這是否改變了下面的答案是否。

在這裏看到實際的代碼:

從表單處理程序:

$check = stripslashes($form['E-mail']); 
    if (!empty($check)) { 
     $problem = false; 
     $errors[] = '0|wrong spamcheck code!'; 
     } 

從形式:

<td><div style="visibility:hidden; display:none"> <input type="text" name="E-mail" ></div></td> 
+0

它爲什麼重要?無論如何,您應該驗證PHP中的表單值。 –

+1

@jsumners如果你添加一個隱藏字段作爲腳本/機器人的蜜罐,它會提交一個值。再次這應該驗證,但它會導致問題 –

+0

你有任何鉻擴展?你能發佈HTML源代碼嗎? – glomad

回答

1

我找到了解決方案 - 事實證明,在Chrome中,它使用自動填寫的電子郵件地址填充此表單字段。已確認表格提交結果的var-dump

非常感謝那些研究這個問題的人 - 這讓我走上了尋求解決方案的道路。投票贊成所有!

1

我可以證實,火狐Safari也展示了這種行爲。

<?php 
    var_dump($_POST); 
?> 
<form method="post"> 
    <input type="hidden" name="hiddenField" /> 
    <input type="submit" /> 
</form> 

這樣做的結果是:

array(1) { 
    ["hiddenField"]=> 
    string(0) "" 
} 

隱藏DIV中還測試,並與value="",結果是一樣的。還應該指出,我不認爲用/>關閉div實際上是按照標準允許的,對我來說這似乎是不好的做法(因爲你聲明它是逐字的)。

編輯:出於我自己的好奇心,我現在也嘗試過沒有type="hidden"type屬性完全去除,簡單<div style="display:none"><input name="hiddenField" /></div>),並與display: none把它放在一個div內。 Firefox和Safari的結果保持一致。

+0

無論發生什麼情況,我只是調試一個現有的表單字段來解決諮詢問題。我同意,這是非最佳的。 – philwinkle

+0

@phil,我認爲您不會找到Chrome處理事情的文檔,與我剛纔測試的不同,其他瀏覽器的行爲似乎與您所描述的相同。 – Leigh

+1

@phil,FYI通過'visibility:hidden'獲得相同的結果; – Leigh

相關問題