2012-10-13 56 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

相关问题