Php 检查远程网页是否已更改

Php 检查远程网页是否已更改,php,curl,Php,Curl,我的PHP脚本执行以下操作 它使用CURL,使用登录名和密码登录到远程服务器,效果非常好echo$结果显示登录页面的内容 其次,它要做的是访问一个内部页面(需要有人登录),并检查该页面是否被远程更改(更新)或未使用CURL 我得到的错误是“拒绝访问”在下面代码的第2部分中,我认为cookie没有在整个会话中持续存在?这就是我应该在代码中做什么更改的问题 <? //Part 1 $username="username; $password="pwd"; $url="http://abc.

我的PHP脚本执行以下操作

  • 它使用
    CURL
    ,使用登录名和密码登录到远程服务器,效果非常好<代码>echo$结果显示登录页面的内容
  • 其次,它要做的是访问一个内部页面(需要有人登录),并检查该页面是否被远程更改(更新)或未使用
    CURL
  • 我得到的错误是
    “拒绝访问”
    在下面代码的
    第2部分
    中,我认为cookie没有在整个会话中持续存在?这就是我应该在代码中做什么更改的问题

    <?
    //Part 1
    $username="username; 
    $password="pwd"; 
    $url="http://abc.com/home?q=login&destination=filmmaker%2Fhome";
    $cookie="cookie.txt"; 
    
    $postdata = "name=".$username."&pass=".$password."&form_id=user_login&edit-name=".$username."&remember_me=1"; 
    
    
    
    $ch = curl_init(); 
    curl_setopt ($ch, CURLOPT_URL, $url); 
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
    curl_setopt ($ch, CURLOPT_TIMEOUT, 60); 
    curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie); 
    curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie); 
    curl_setopt ($ch, CURLOPT_REFERER, $url); 
    
    curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata); 
    curl_setopt ($ch, CURLOPT_POST, 1); 
    $result = curl_exec ($ch); 
    
    echo $result;  
    
    //Part 2
    
    $curl = curl_init("http://abc.com/filmmaker/home");
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_NOBODY, true);
    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_FILETIME, true);
    $result = curl_exec($curl);
    
    if ($result === false) {
        die (curl_error($curl)); 
    }
    
    $timestamp = curl_getinfo($curl, CURLINFO_FILETIME);
    if ($timestamp != -1) { //otherwise unknown
        echo date("Y-m-d H:i:s", $timestamp); //etc
    }
    curl_close($ch);
    
    
    ?>
    
    第2部分需要:

    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);
    

    这将发送由第1部分中的
    CURLOPT_COOKIEJAR
    选项保存的cookie。

    第2部分不使用cookie文件。@Barmar那么如何使用第2部分中的cookie文件呢?您是否检查了
    cookie.txt
    文件以查看它是否正在写入?可能是权限问题。是的,我检查了cookie.txt文件,上面写着#Netscape HTTP cookie文件##这个文件是由libcurl生成的!编辑风险自担。studio.smartshoot.com真/假0 SESSd51c64e1624b1aa94a4ceaf7f396bb1a n8dnuh0545jjc29qs7710paok6 studio.smartshoot.com假/假0服务器ID产品1