【问题标题】:how to maintaining session when using more than one curl script使用多个 curl 脚本时如何维护会话
【发布时间】:2013-04-14 13:16:06
【问题描述】:

我使用 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)。它不起作用。

我制作一个.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。它不起作用!!!! 谁能帮我? 不同的curl脚本不能共享会话吗???

【问题讨论】:

    标签: session curl


    【解决方案1】:

    在第一个代码中,您将一个 $cookie_file 用于两个请求。
    您应该在 a.php 和 b.php 中使用相同的 $cookie_file。
    但是你用

    创建了两个不同的 $cookie_file
    $cookie_file    =  tempnam('./temp','cookie');
    

    您在 a.php 中创建一个。
    然后在 b.php 中创建另一个不同的。

    【讨论】:

      猜你喜欢
      • 2019-08-16
      • 2014-10-13
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      • 2015-03-28
      相关资源
      最近更新 更多