Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用CURL进行客户端重定向_Php_Url_Post_Curl_Redirect - Fatal编程技术网

Php 使用CURL进行客户端重定向

Php 使用CURL进行客户端重定向,php,url,post,curl,redirect,Php,Url,Post,Curl,Redirect,这就是我想做的: 使用POST变量=>good传递带有curl语句的表单 登录网站后,转到我想要的任何页面=>不好 以下是我目前的脚本: $postData = array( 'login' => 'john', 'pwd' => 'doe' ); $array_url = array('3109'); foreach ($array_url as $k => $i) { echo $i."<br>"; $c = curl_i

这就是我想做的:

  • 使用POST变量=>good传递带有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);
}
$postData=数组(
'登录'=>'约翰',
“pwd”=>“doe”
);
$array_url=array('3109');
foreach($k=>$i的数组\ url){
回声$i.“
”; $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); 如果($output==false){ 触发错误('Erreur curl:'.curl_error($c),E_USER_警告); } 否则{ 变量转储(输出); echo$输出; } 收尾费($c); }
我怎样才能做到这一点

编辑:如果我试图获取我想咨询的页面,我会重定向到登录表单,因为我无法从该页面设置两个登录/通行证,我需要获取一个checkingpassword


Thx

您需要确定远程页面如何验证会话。大多数网站都使用cookie来实现这一点。登录后,任何连续的页面请求都会传递cookie,远程站点会检查cookie,如果cookie有效且未过期,它会让您通过,否则,它会将您踢回登录页面(或给您一个错误,或其他)


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

尝试使用Zend_Http_客户端-它是Zend Framework的一部分。它可以存储cookie并在下一次请求时重新发送它们。以下是来自以下方面的示例:


CURLOPT_-COOKIEFILE
&
CURLOPT_-COOKIEJAR
选项来处理cookies.@Anthony好的,它会在每页cookie中检查phpsessid,所以最后我不需要麻烦传递登录表单,我只需要检索服务器端(这是我的网站)cookie值,并使用hakre给我的指令将其提供给curl?第一个curl请求传入凭据并传回cookie。下面的每个curl请求应该只需要cookie,使用hakre提到的选项。
// 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');