Php curl POST(CURLOPT_POSTFIELDS)
我正在尝试登录论坛并向用户发送消息,但没有效果Php curl POST(CURLOPT_POSTFIELDS),php,post,curl,Php,Post,Curl,我正在尝试登录论坛并向用户发送消息,但没有效果 <?php ini_set('display_errors',1); error_reporting(E_ALL); $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, 'http://exemple.com/login.php'); curl_setopt ($ch, CURLOPT_POST, 1); curl_setopt ($ch, CURLOPT_POSTFIELDS, '
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, 'http://exemple.com/login.php');
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'username=USER&password=1234567');
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
$login = curl_exec ($ch);
curl_setopt ($ch, CURLOPT_URL, 'http://exemple.com/privatemessage.php?receiver=7067');
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'msg=Test');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$post = curl_exec ($ch);
curl_close ($ch);
print_r($login) . "\n";
?>
怎么了?这是第一次使用cURL
谢谢你的时间
这里是HTML部分
<br/></br><br/></br>
<div class="rowElem">
<label>Username</label>
<input type="text" name="username" id="username" class="input" value="" size="20" tabindex="10" />
</div>
<div class="rowElem">
<label>Password</label>
<input type="password" name="password" id="password" class="input" value="" size="20" tabindex="20" />
</div>
<div class="rowElem">
<label></label>
<input type="submit" value="Login" class="button-primary"/>
</div>
用户名
暗语
试试:
第二次卷曲也是如此。您永远不应该假设对外部服务的调用成功。die()在开发过程中有助于消除错误。对于产品,您可以使用更全面的错误处理程序来替换它。运行时会发生什么?你收到错误信息了吗?你怎么知道它不起作用了?可能有很多事情。我猜你没有正确登录。也许站点正在检查referer,或者要设置的其他表单字段(如submit按钮值eg)是否可由apache(或运行此命令的人)编写?我可能也错了,但我认为您需要在第二个请求中指定cookie文件。您应该检查表单id或其他CSRF令牌。您很可能需要点击一次登录页面才能获得它,然后您可以在后续POST请求中使用它来登录。@Adam,我查看了来自另一个帐户的在线用户:)
$login = curl_exec ($ch);
if ($login === FALSE) {
die(curl_error($ch));
}