2013-08-02 38 views
2

我有這個非常奇怪的問題。PHP POST請求在http://變量中不起作用

當我提交我的表單時,如果其中一個變量是http://www.youtube.com,則該頁面會給出NO DATA RECEIVED錯誤並失敗。

不確定它是否是服務器設置,或者我可以在PHP腳本中修復的東西。

後處理腳本測試很簡單:

<?php 
foreach($_POST as $a=>$b) echo "{$a}={$b}<br />"; 
?> 

這是罰款某些服務器上,而不是其他人,這讓我覺得這是一個服務器設置。

任何有識之士都會受到歡迎

+0

PHP的版本,你呢? –

+2

您可以發佈您的表格 – JohnnyFaldo

+1

詢問您的託管服務提供商。他們最喜歡有mod_security或suhosin。 –

回答

3

檢查事項在php.ini

  • post_max_size#應該是不同的,從0
  • variables_order#應= 「EGPCS」
  • max_input_vars#應該高於您通過的變量數量

檢查事項在HTML表單:

  • 字段和提交按鈕的形式爲內
  • 形式有method="POST"
  • 如果窗體上有文件,請選中加密類型,它應該是multipart/form-data ,如果不是,應該是application/x-www-form-urlencoded
  • 尋找<input type="hidden" name="MAX_FILE_SIZE" value="..." /> - 它夠大嗎?

如果一切都很好,檢查是否啓用mod_security,同時檢查的.htaccess的東西像RewriteCond %{REQUEST_METHOD} POST,和之後的規則。

檢查您的瀏覽器是否發送數據。在Chrome網絡選項卡中我看到這樣的事情:

enter image description here


您也可以嘗試以下方法:

var_dump(get_defined_vars()); 

$vars = get_defined_vars(); 
foreach ($vars as $var) { 
    echo "<br><b>{$var}</b>"; 
    var_dump($$var); 
} 

,並檢查申報清單變量。

PS:

我假設你使用Apache,因爲你不包括此信息。另外,嘗試不同的瀏覽器,看看它是否改變了任何東西。

PS2: 我喜歡用命令行來檢查配置設置:

~$ php -i | grep -i variables_order 
variables_order => GPCS => GPCS 
+0

原來這是mod_security - 感謝您的幫助 – barners