同时使用reCAPTCHA和enctype =“multipart / form-data”

时间:2015-02-10 17:31:18

标签: php recaptcha enctype

我有一个文件上传表单,我也想使用Google reCAPTCHA。

如果我有以下

<form method="post">
    <input type="file" name="filename">
    <div class="g-recaptcha" data-sitekey="***"></div>
    <input id="submit" name="submit" type="submit" value="Submit">
</form>

我可以使用reCAPTCHA,但无法上传文件。

但是,如果我使用:

<form method="post" enctype="multipart/form-data">
    <input type="file" name="filename">
    <div class="g-recaptcha" data-sitekey="***"></div>
    <input id="submit" name="submit" type="submit" value="Submit">
</form>

我可以成功上传文件,并使用reCAPTCHA ,前提是该文件是文本文件。如果我尝试上传pdf文件,我无法使其工作。

上传文本文件时,$ _POST包含&#39; g-recaptcha-response&#39;,但在上传pdf时,$ _POST不包含&#39; g-recaptcha-response&# 39;

有人可以解释这里出了什么问题吗?

修改 看起来它实际上是一个文件大小的问题。 无论格式如何,都无法发送大于~200kb的文件。

我的php.ini文件中有upload_max_filesize = 2M,所以我不确定为什么200kb太大了......

有什么想法吗?

编辑2:更多信息

看起来$ _FILE包含错误代码3:UPLOAD_ERR_PARTIAL。

我不明白为什么文件无法完全上传。

编辑3:到达某个地方

我现在可以上传文件了。看来我需要在文件输入之前放置reCAPTCHA

<form method="post" enctype="multipart/form-data">
    <div class="g-recaptcha" data-sitekey="***"></div>
    <input type="file" name="filename">
    <input id="submit" name="submit" type="submit" value="Submit">
</form>

有人可以详细说明为什么会这样吗?

编辑4:过早发言

切换订单会使g-recaptcha-response&#39;出现在$ _POST中,但我仍然收到错误代码3:UPLOAD_ERR_PARTIAL。

编辑5

看起来文件正在正确上传,因为我可以在头参数(firefox调试器)中看到它。好像php只是没有正确地填充$ _FILE数组......

1 个答案:

答案 0 :(得分:0)

我在不同的服务器上尝试了相同的代码并且工作正常。

看起来问题是我设置的服务器存在某种配置问题。 它实际上与reCAPTCHA和文件输入+ enctype的交互无关。

如果我弄清楚配置问题是什么,我会更新。