当我使用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',
从上面的代码然后我得到输出
我想使用代理输出,请帮帮我
答案 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)
如果您必须提供username
和password
同时检查您是否在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。
我想你也可以尝试从控制台进行常规卷曲调用并检查它是否有效。