4

我在学校期间使用我的网站在线编码(并在我的编程项目中取得进展),并将代码发送到我的电子邮件地址以继续在家中工作。

文本可以在一个<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);

我不知道为什么提交 text:fgets(input, 20, stdin)会是一个问题,以及为什么a or中的任何文本都会是一个问题,因为它只是纯文本,而不是实际代码。<textarea><input>

当我单击提交时,我的<textarea>contains 中的文本fgets()没有任何反应(而不是给我Invalid input消息或Email Sent消息),并且我的文本没有被发送。

4

2 回答 2

6

可能是您服务器上的某些东西将此视为企图入侵该网站。

快速谷歌搜索显示mod_security(一个相当常见的 Apache 模块,它试图阻止 SQL 注入和其他漏洞利用)可能会阻止POST包含fgets()调用的参数。http://forums.modx.com/thread?thread=9677

于 2012-10-13T20:36:41.437 回答
0

您不应该自己将参数转换为一个字符串(或者如果是这样,请使用一些javascript 替代 phpsurlencode())。

jQuery 支持[1] , [2] data作为匿名对象

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

所以你可以使用:

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

它应该可以工作,更重要的是它需要注意正确的编码(转义)。如果这没有帮助(问题不在于格式错误的“原始数据”),请尝试 ceejayoz 的解决方案

于 2012-10-13T20:39:54.730 回答