通过CURL(php)设置cookie

时间:2015-07-27 07:28:14

标签: php wordpress curl

是否可以通过cURL创建cookie /会话?我通过cURL将登录数据发送到wordpress文件,如果数据正确,我想登录用户。有没有办法做到这一点?我的curl文件如下所示:

    $url = 'http://www.domain.de/blog/wordpress-dosomething.php?username=[username]&password=[password]&rememberMe=[rememberMe]'; 
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    $rsp = curl_exec($ch);
    curl_close($ch);

我的wordpress文件看起来像这样:

$username = $_GET['username'];
$password = $_GET['password'];
//login the user
$user = wp_signon( array('user_login' => $username, 'user_password' => $password, 'remember' => $remember), false );
if ( is_wp_error($user) )
  //error...

如果我通过手动调用wordpress文件进行测试,这样就行了,我已登录到wordpress。但即使没有错误,通过curl它也不起作用,那么我怎样才能使这个工作?我可以以某种方式...我不知道...抓住我的脚本设置的会话/ cookie并在我的curl脚本文件中手动设置它?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以通过PHP中的curl的CURLOPT_COOKIEJAR和CURLOPT_COOKIEFILE选项设置cookie。例如:

$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFilePath);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFilePath);
$rsp = curl_exec($ch);
curl_close($ch);

然后cookie内容将自动保存在$ cookieFilePath中,这是一个本地文件路径。

答案 1 :(得分:1)

在申请目录中添加COOKIEFILECOOKIEJAR以及名为cookie.txt的文本文件

$cookie_file=realpath('cookie.txt');
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
$rsp = curl_exec($ch);
curl_close($ch);

希望这会有所帮助