2012-10-13 95 views
4

我在網上,在學校使用我的網站編寫代碼(並在我的編程項目中取得進展),並將代碼發送到我的電子郵件地址,以繼續在家中使用它。爲什麼我不能提交包含函數fgets()的文本?

該文本可以位於<textarea><input>字段(使用name="Code" id="Code")。
無論哪種方式,我無法提交包含C/C文字++函數fgets()

TODO: Include a more stable function to get user input, 
     such as fgets(input, 20, stdin); 

我不知道爲什麼提交的案文:fgets(input, 20, stdin)將是一個問題,爲什麼任何<textarea><input>中的文字會成爲一個問題,因爲它們都只是純文本,而不是實際的代碼。

當我點擊提交,而在我的<textarea>文本包含fgets(),什麼都不會發生(而不是給我Invalid input消息或Email Sent消息),我的文字沒有被髮送。

+3

*發生了什麼?您的瀏覽器窗口是否關閉,您是否收到錯誤消息。請具體說明「無法提交」。 – mario

+1

[提交簡單的PHP表單時出現Forbidden錯誤]的可能重複(http://stackoverflow.com/questions/8824511/forbidden-error-when-submitting-simple-php-form) – mario

回答

7

這可能是您的服務器上的某些東西將此視爲試圖破解網站。

快速谷歌搜索表明mod_security(即試圖防止東西像SQL注入和其他攻擊一個相當普遍的Apache模塊)可以被阻斷POST參數,包括fgets()呼叫。 http://forums.modx.com/thread?thread=9677

+0

有什麼我可以做的嗎?可能發送包含PHP函數的文本? – amiregelz

+0

當然,禁用mod_security(或者讓你的虛擬主機這樣做)。 – ceejayoz

+1

好吧,我想我會保持啓用(爲了安全)並通過JavaScript中的文本修改其中的PHP函數,例如:'fgets(input,20,stdin); ==> fg-ets(input,20,stdin);' – amiregelz

0

您不應該將參數自行轉換爲一個字符串(或者如果是這樣,請使用javascript alternative to phps urlencode())。

jQuery的支持[1][2]dataanonymous object

數據要被髮送到服務器。如果 不是字符串,它將被轉換爲查詢字符串。它附加到GET請求的url。請參閱 processData選項以防止此自動處理。對象必須是 是鍵/值對。如果value是一個數組,則jQuery將基於傳統設置 (如下所述)的值使用相同密鑰對多個 值進行序列化。

所以你可以使用:

data: { 
    'Name': name, 
    'Code': code, 
    ... 
} 

,它應該工作,什麼是更重要的,大約需要正確的編碼(逃逸)照顧。如果這沒有幫助(問題不在於格式錯誤的「原始數據」),請嘗試ceejayoz's solution

相關問題