如何在PHP中处理卷曲会话和cookie

时间:2012-07-31 05:28:09

标签: php curl

我想通过curl登录并维护cookie和会话信息以进一步调用。我已在同一目录中创建了cookie文本文件,并使用CURLOPT_COOKIEJAR,CURLOPT_COOKIEFILE来维护CUL中的cookie。每当我尝试调用login api时,它都会使用旧的cookie并显示以前的用户信息。我需要维护不同的用户cookie并维护会话,就像普通的浏览器句柄一样。怎么做。任何人都有想法去做。

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_HEADER,0); // TRUE to include the header in the output.    
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // it will follow with server redirects  
curl_setopt($ch,CURLOPT_AUTOREFERER,1);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//ssl certificate verifyer
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,  2);  //ssl certificate host

// Set the location of and send the cookies
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . "/cookies.txt");

    curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . "/cookies.txt");

curl_setopt( $ch, CURLOPT_COOKIESESSION, true );    

$result = curl_exec($ch); //execute curl and store data in result

1 个答案:

答案 0 :(得分:0)

您可以修改

dirname(__FILE__) . "/cookies.txt"

这样的东西
dirname(__FILE__) . '/user_cookies/' . $username . '.txt'

您需要清理该行的用户名,以使其不包含任何无效字符。

另外,将/ user_cookies / permissions设置为777。

这样您就不需要检查用户是否有cookie。如果不是,则将创建该文件。如果用户拥有它们,将使用现有文件内容。

您还可以将Cookie存储在数据库中,但这样会更复杂。