使用CURL进行客户端重定向

时间:2011-07-19 13:42:42

标签: php url post curl redirect

这就是我想要做的事情:

  • 使用POST变量=>传递带有curl语句的表单好
  • 在我登录网站后,转到我想要的任何页面=>不好

这是我现在的脚本:

$postData = array(
    'login' => 'john',
    'pwd' => 'doe'
);

$array_url = array('3109');

foreach ($array_url as $k => $i) {
    echo $i."<br>";
    $c = curl_init();

    $url = "http://mywebsite/index.php?ok=1";

    curl_setopt($c, CURLOPT_URL, $url);
    curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($c, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($c, CURLOPT_POSTFIELDS, $postData);

    $output = curl_exec($c);
    if ($output === false) {
        trigger_error('Erreur curl : ' . curl_error($c), E_USER_WARNING);
    }
    else {

        var_dump($output);
        echo $output;
    }
    curl_close($c);
}

我怎样才能做到这一点?

编辑:如果我尝试获取页面我想咨询我重定向到登录表单因为我无法设置这个页面的夫妇登录/传递,我需要获取checkpassword一个... < / p>

THX

2 个答案:

答案 0 :(得分:1)

您需要确定远程页面如何验证会话。大多数网站使用cookie执行此操作。一旦你登录,任何连续的页面请求都会通过cookie,远程站点会检查cookie,如果它有效且没有过期,它会让你通过,否则,它会把你踢回登录页面(或者给你一个错误,或其他)。

因此,如果它是一个cookie,您需要存储返回的cookie,并在随后的任何curl请求中使用它。

答案 1 :(得分:0)

尝试使用Zend_Http_Client - 它是Zend Framework的一部分。它可以存储cookie并在每个下一个请求中重新发送它们。以下是documentation的示例:

// To turn cookie stickiness on, set a Cookie Jar
$client->setCookieJar();

// First request: log in and start a session
$client->setUri('http://example.com/login.php');
$client->setParameterPost('user', 'h4x0r');
$client->setParameterPost('password', '1337');
$client->request('POST');

// The Cookie Jar automatically stores the cookies set
// in the response, like a session ID cookie.

// Now we can send our next request - the stored cookies
// will be automatically sent.
$client->setUri('http://example.com/read_member_news.php');
$client->request('GET');