php - 如何重用 php curl 响应 cookie 并绕过脚本后续执行的登录步骤?

标签 php session cookies curl

我有以下 php 代码登录到受密码保护的页面并获取 protected 页面。脚本工作正常但我只想使用登录功能一次,如果我想获取同一域内的另一个 protected 页面.

我想使用 cookie 文件打开下一个 protected 页面,而不是再次使用登录功能!换句话说,我只是想绕过登录步骤来获取其他 protected 页面。

谁能告诉我如何做到这一点?

注意:我的登录函数没有创建任何 cookie,我没有在脚本所在的文件夹中看到它!有人能告诉我为什么吗?

<?

        $ch=login();
    $html=downloadUrl('http://www.example.com/page1.asp', $ch);

    ////echo $html;


    function downloadUrl($Url, $ch){
        curl_setopt($ch, CURLOPT_URL, $Url);
        curl_setopt($ch, CURLOPT_POST, 0);
        curl_setopt($ch, CURLOPT_REFERER, "http://www.google.com/");
        curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        $output = curl_exec($ch);
        return $output;
    }



   function login()
   {
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/login.asp'); //login URL
      curl_setopt ($ch, CURLOPT_POST, 1);
      $post_array = array(  
       'txtUserName'=>'brad',  
       'txtPassword'=>'bradpassword',  
        );
        curl_setopt ($ch, CURLOPT_POSTFIELDS, $post_array);
        curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
        $store = curl_exec ($ch);
        return $ch;
  } 
?>
<html>


<br>
<textarea rows="30" cols="150"><?PHP  print_r($html); ?></textarea>
</html>

最佳答案

使用

curl_setopt($ch,CURLOPT_COOKIEJAR, $cookieFileLocation);
curl_setopt($ch,CURLOPT_COOKIEFILE, $cookieFileLocation);

在第二个请求中,$cookieFileLocation 是您的 cookie 文件的位置。

您必须有 2 个请求。首先是填充 cookie 文件的登录请求。

您必须检查您的 cookie 文件是否存在 is_file($cookieFileLocation),如果存在,您可以绕过登录过程执行第二次下载 protected 内容的请求。

需要注意的是大部分系统都有session过期时间,所以一定要过一段时间再登录。我会检查返回页面的 html 是否有登录错误,作为我必须再次登录的标记。

关于php - 如何重用 php curl 响应 cookie 并绕过脚本后续执行的登录步骤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16875213/

相关文章:

php - Laravel 5.3 尝试为真但 Auth::User 返回 null?

php - 读取动态创建的字段

php - 维护数据库连接或在需要时连接?

javascript - 如何避免 javascript 从不存在的元素中检索值

javascript - sessionStorage 与 cookie 中的 JWT token ?

javascript - 即使在浏览器关闭/重新启动后使用 Angular.js 使 cookie 持久化

javascript - 通过谷歌表单将内联图像插入自动电子邮件回复

PHP:找不到语法错误

php - 我对我的 SESSIONS 安全 react 过度了吗?

c# - session 在 Controller 方法中变为空