为什么我不能提交包含函数fgets()的文本?

时间:2012-10-13 20:31:30

标签: php html 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消息),我的文字不是不被发送。

2 个答案:

答案 0 :(得分:7)

可能是您服务器上的某些内容将此视为企图破解该网站。

快速Google搜索显示mod_security(一种尝试阻止SQL注入和其他攻击等相当常见的Apache模块)可能阻止包含POST调用的fgets()参数。 http://forums.modx.com/thread?thread=9677

答案 1 :(得分:0)

您不应该自己将参数转换为一个字符串(如果是这样,请使用一些javascript alternative to phps urlencode())。

jQuery支持[1][2] dataanonymous object

  

要发送到服务器的数据。它被转换为查询字符串if   还不是一个字符串。它附加到GET请求的URL。看到   processData选项可防止此自动处理。对象必须   是键/值对。如果value是一个数组,jQuery序列化多个   具有相同键的值基于传统设置的值   (如下所述)。

所以你可以使用:

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

它应该工作,更重要的是它需要关心正确的编码(转义)。如果这没有帮助(问题不在于格式错误的“原始数据”),请尝试ceejayoz's solution