使用Curl Proxy发布数据不返回任何内容

时间:2014-05-06 10:31:33

标签: php mysql curl proxy

当我使用curl发布数据时,out代理工作正常,但当我使用代理时,我的输出为空

这是我在test.php中的表单

<form name="result" id="result" action="testdb.php" method="post" target="frame">
<input name="htno" type="text" id="htno"/>
<input type="submit" value="submit"/>
</form>
<iframe name="frame" id="frame" sandbox="allow-same-origin allow-forms allow-scripts" width="700px" height="500px" frameborder="no"/>

并且testdb.php中的代码是

$id= $_POST["htno"];
$ch = curl_init();
$curlConfig = array(

CURLOPT_PROXYTYPE       => 'HTTP',
CURLOPT_PROXY           => '218.108.170.163:82',
CURLOPT_HTTPPROXYTUNNEL => '1',
CURLOPT_FOLLOWLOCATION  => '1',
CURLOPT_MAXREDIRS      => '2',
CURLOPT_RETURNTRANSFER => '1',
CURLOPT_CONNECTTIMEOUT => '10',
CURLOPT_USERAGENT      => 'Mozilla/5.0 (X11; U; Linux i686; en-US) 
        AppleWebKit/532.4 (KHTML, like Gecko) 
        Chrome/4.0.233.0 Safari/532.4',
CURLOPT_HTTPHEADER     => array('Referer: engineershub.in/sparcpanel1/b-tech1/btech11.php'),
CURLOPT_URL            => 'http://engineershub.in/sparcpanel1/b-tech1/btech11db.php',
CURLOPT_POST           => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS     => array(
    'id' => "$id"

),
);
curl_setopt_array($ch, $curlConfig);
$result = curl_exec($ch);
echo $result;
curl_close($ch);

上面的代码返回null结果,如果我删除这部分

CURLOPT_PROXYTYPE       => 'HTTP',
CURLOPT_PROXY           => '218.108.170.163:82',
CURLOPT_HTTPPROXYTUNNEL => '1',
CURLOPT_FOLLOWLOCATION  => '1',
CURLOPT_MAXREDIRS      => '2',
CURLOPT_RETURNTRANSFER => '1',
CURLOPT_CONNECTTIMEOUT => '10',
CURLOPT_USERAGENT      => 'Mozilla/5.0 (X11; U; Linux i686; en-US) 
        AppleWebKit/532.4 (KHTML, like Gecko) 
        Chrome/4.0.233.0 Safari/532.4',

从上面的代码然后我得到输出

我想使用代理输出,请帮帮我

3 个答案:

答案 0 :(得分:0)

我在这里假设你需要提供一个用户名/密码来通过你的代理服务器(如果你在Windows上可以是你的Windows登录凭据,当然这取决于你的网络设置)。值得尝试通过这些来看看是否有帮助。

尝试填写$ username&amp; $密码在这里包含您的详细信息,并在您执行curl_exec之前将其放置。

$username = 'your_username';
$password = 'your_password';

$headers = array(
    'Proxy-Authorization: BASIC ' . base64_encode("{$username}:{$password}")
); 

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 

如果这不起作用,那么如果您可以通过使用以下内容(在运行curl_exec之后)告诉我们您要回复的具体错误。

if ($result === false)
{
    print "Error number: " . curl_errno() . "<br>\n";
    print "Error message: " . curl_error() . "<br>\n";
}

答案 1 :(得分:0)

如果您必须提供usernamepassword

,请与您的代理服务器联系

同时检查您是否在NTLM代理后面并相应地设置该参数。我认为你应该强烈考虑这一点。我不知道如何在PHP中设置此参数,但在BaSH中,它是--proxy-ntlm。如果您绝对无法使用shell并且无法弄清楚如何在PHP中设置NTLM选项,请考虑下载CNTLM。它是位于您的应用程序和代理之间的服务器。

要了解CURL操作的进展情况,请设置详细参数CURLOPT_VERBOSE

答案 2 :(得分:0)

正如他们所说,你应该使用 CURLOPT_HTTPAUTH 选项和所需的身份验证方法(CURLAUTH_BASIC,CURLAUTH_DIGEST,CURLAUTH_GSSNEGOTIATE,CURLAUTH_NTLM,CURLAUTH_ANY,y CURLAUTH_ANYSAFE。) 更多信息:http://docs.php.net/manual/es/function.curl-setopt.php

我想你也可以尝试从控制台进行常规卷曲调用并检查它是否有效。