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));
}