1

curlを使用してユーザーIDとパスワードをサイトwww.licindia.inに渡そうとしていますが、Cookieで問題が発生している可能性があります。セッションを続行できず、サイトの応答302エラーが発生し、ドキュメントが一時的に移動されました。今、私はこのコードで応答がありません:-

<?php
    $username="myusername";
    $password="password";
    $url="http://onlinelic.in/LICEPS/Login/webLogin.do";
    //echo "praveenpuglai";
    $postdata = "portlet_5_6{actionForm.userName}=".$username."&portlet_5_6{actionForm.password}=".$password;
    $cookie = "JSESSIONID";
    ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0");
    curl_setopt($ch,CURLOPT_COOKIESESSION,true);
    curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
    curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_REFERER, $url);
    //var_dump($ch);
    curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
    curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
    curl_setopt ($ch, CURLOPT_POST, 1);
  //  $result = curl_exec ($ch);
    //echo $result;
    /*if($result != null)
    {
    header('Location: http://onlinelic.in/LICEPS/appmanager/Customer/CustomerHome');
    } */
//    curl_close($ch);
    $response = curl_exec($ch);
    $info = curl_getinfo($ch);
    curl_close($ch);
    if($info['http_code'] == 301 || $info['http_code'] == 302) {
        preg_match_all('|Location: (.*)\n|U', $response, $results);
        $location = implode(';', $results[1]);
        header("Location: $location");
        exit;
    } else {
        $response = substr_replace($response, '', 0, strpos($response, '<', 0));
        echo $response;
    }
?>
4

2 に答える 2

0

次のステートメントを使用して、リダイレクトをたどる意思がないことを指定しました。

curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0);

値を高く設定するか、指定しないと、cURLはリダイレクトに従います。

于 2012-06-27T03:00:10.620 に答える
0
<?php
    $username="XXXXXX";
    $password="YYYYYY";
    $url="url"; 
    $capt="ZZZZZ"; 




    $postdata = "?{actionForm_userName}=".$username."&{actionForm_password}=".$password."&{actionForm_qreply}=".$capt;
    $cookie = "JSESSIONID";

    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL, $url);

    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0");
    curl_setopt($ch,CURLOPT_COOKIESESSION,true);
    curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
    curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0);

    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt ($ch, CURLOPT_HEADER, 0);   
    curl_setopt ($ch, CURLOPT_REFERER, $url);
    curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
    curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
    curl_setopt ($ch, CURLOPT_POST, 1); 

      //echo $cookie;
      //echo $postdata;
echo curl_error($ch);
    $result = curl_exec ($ch);
    print($result);


curl_close($ch);


    $response = curl_exec($ch);
    $info = curl_getinfo($ch);
    curl_close($ch);
    if($info['http_code'] == 301 || $info['http_code'] == 302) {
        preg_match_all('|Location: (.*)\n|U', $response, $results);
        $location = implode(';', $results[1]);
        header("Location: $location");
        exit;
    } else {
        $response = substr_replace($response, '', 0, strpos($response, '<', 0));
        echo $response;
    }  

?>
于 2015-11-04T11:36:11.043 に答える