2013-04-14 29 views
0

我使用curl登錄網站。代碼:如何在使用多個捲髮腳本時保持會話

<?php 

$cookie_file = tempnam('./temp','cookie'); 
$login_url  = 'http://bbs.xxxx.com/login.php'; 
$post_fields = 'cktime=31536000&step=2&pwuser=xx&pwpwd=111111'; 

$ch = curl_init($login_url); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); 
curl_exec($ch); 
curl_close($ch); 


$url='http://bbs.xxx.com/userpay.php'; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); 
$contents = curl_exec($ch); 
preg_match("/<li> (.*)<\/li>/",$contents,$arr); 
echo $arr[1]; 
curl_close($ch); 
?> 

它工作正常,但問題是,當我使之成爲兩個文件(a.php只會,b.php)。它不能正常工作。

我做a.php只會像:

<?php 

    $cookie_file = tempnam('./temp','cookie'); 
    $login_url  = 'http://bbs.xxxx.com/login.php'; 
    $post_fields = 'cktime=31536000&step=2&pwuser=xx&pwpwd=111111'; 

    $ch = curl_init($login_url); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); 
    curl_exec($ch); 
    curl_close($ch); 
?> 

和b.php,如:

<?php 

    $cookie_file = tempnam('./temp','cookie'); 

    $url='http://bbs.xxx.com/userpay.php'; 
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); 
    $contents = curl_exec($ch); 
    preg_match("/<li> (.*)<\/li>/",$contents,$arr); 
    echo $arr[1]; 
    curl_close($ch); 
?> 

我第一次訪問a.php只會,然後訪問b.php。它不工作! 任何人都可以幫助我嗎? 不同的捲髮腳本不能共享會話?

回答

0

在第一個代碼中,您爲兩個請求使用一個$ cookie_file。
您應該在a.php和b.php中使用相同的$ cookie_file。
但你創建

$cookie_file = tempnam('./temp','cookie'); 

兩個不同的$ cookie_file創建一個在a.php只會。
然後你在b.php中創建另一個不同的。