2011-11-14 71 views
1

我遇到了這個問題,只要我在這臺新服務器上提交表單,我得到一個406錯誤 - 不可接受。錯誤406 - 不可接受 - PHP Post with(%)

我只能訪問此服務器的FTP,所以我必須做出的任何更改都受限於此。

如果mod_security的是這樣做使我檢查:

<IfModule mod_security.c> 

... Perform some kind of redirect or re-writing in here ... 

</IfModule> 

它沒有重定向所以這意味着mod_security的沒有安裝?如果我在IfModule標記之外運行重定向,它將會重定向而不會有任何問題。

我創建了一個測試表單供大家測試,只需在任何字段中輸入%,然後單擊提交,然後顯示錯誤。任何字母表字符都可以,並且不會顯示錯誤。

(刪除鏈接)

而且我已經在我的htaccess文件中添加這和問題依然存在。

<IfModule mod_security.c> 
     SecFilterEngine Off 
     SecFilterScanPOST Off 
</IfModule> 

這裏似乎是什麼問題?

+0

出於好奇,如果您只關閉過濾器而沒有塊,會發生什麼情況? –

+0

好的,讓我試試 – officeboi101

+0

你有沒有安裝Suhosin? – 2011-11-14 19:01:58

回答

0

編輯:我原來的答案。

This is your problem

您應該考慮使用現有的PHP功能清理您的數據。他們可以發現here, at PHP.net.

這個SO問題也可以幫助你。

Sanitizing strings to make them URL and filename safe?

好運。

我在這裏很不方便。我很抱歉。

在你的位置上,我只需聯繫我的網絡主機 - 他們可能不會允許你的.htaccess覆蓋特定的指令。此外,由於您只能訪問FTP,因此無論如何,您似乎都會依賴它們。

再次祝你好運。由於它不是你的網絡服務器,你受到你的主機的擺佈。

+0

看起來像OP有一個Apache的問題,而不是PHP的問題。如果apache拒絕請求,那可能不是他可以在PHP中修復的東西。 –

+0

@FrankFarmer - 哎呀。我認爲它是一個GET字符串,而不是POST。據我所知,PHP無論如何都應該對URL進行URL編碼,但我認爲可能出現了問題。尋找解決方案。 –

+0

@FrankFarmer爲未來的讀者編輯我的答案。 –

1

我有同樣的問題,這是因爲編碼。當表單字段具有尖銳的重音時,失敗,顯示406錯誤。我將這些文件轉換爲UTF-8並添加了UTF-8元標記,現在它可以毫無問題地工作。

相關問題