0

私のコードは、CURL を使用してリモート サイトにログインしています。しかし、そこでセッションを存続させているわけではありません。私の場合、次のコードを使用してサイトにログインしています。

        $username=$options['session[login]']; 
        $password=$decryptedPassword; 
        $cookie = tempnam("/tmp", "cookies");  

        $postdata = "session[login]=".$username."&session[password]=".$password; 

        $ch = curl_init(); 
        curl_setopt ($ch, CURLOPT_URL, $url); 
        curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
        curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
        curl_setopt ($ch, CURLOPT_TIMEOUT, 60); 
        curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); 
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
        curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie); 
        curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie); 
        curl_setopt ($ch, CURLOPT_REFERER, $url); 

        curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata); 
        curl_setopt ($ch, CURLOPT_POST, 1); 
        $result = curl_exec ($ch); 
        $result = str_replace("href=\"","href=\"$onappurl\\",$result);
        $result = str_replace("href=\"$onappurl\\","href=\"$onappurl",$result);
        echo $result;
        curl_close($ch);

結果がポップアップにエコーされ、ログインしたインターフェイスが表示されます。しかし、サイトのリンクをクリックすると、セッションが失われ、ログイン ページにリダイレクトされます。

4

1 に答える 1

1

これは、あなたのサーバーがリクエストを送信しており、リモート サイトがあなたのためではなく、あなたのサーバーのためにセッションを作成しているためだと思います。そのため、そのリモート サイトにリダイレクトするリンクをクリックしたときに、そこにアクティブなセッションがない場合は、ログインするように求められます。

于 2012-09-20T06:57:53.777 に答える