日度归档:2008年8月27日

PHP程序模拟用户登录yahoo空间

 

PHP代码
  1. <?php   
  2. /*  
  3. 用PHP程序如何模拟用户登录yahoo空间(http://i.cn.yahoo.com/)。所谓的“模拟用户登录”是指用写支PHP程序模拟用户登录  
  4. 的过程。  
  5. */  
  6.   
  7. //登陆成功则会提示succeed  失败则自动转向yahoo出错页   
  8. loginYahoo(‘cnphpd@yahoo.com’,‘******’);   
  9.   
  10. function loginYahoo($user,$pass){   
  11.     $ch = curl_init();   
  12.     curl_setopt($ch, CURLOPT_URL, "https://edit.bjs.yahoo.com/config/login");   
  13.     curl_setopt($ch, CURLOPT_POST, 1);   
  14.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);   
  15.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);   
  16.     curl_setopt($ch, CURLOPT_POSTFIELDS,‘login=’.$user.‘&passwd=’.$pass.‘&.persistent=y’);   
  17.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   
  18.     $result = curl_exec($chor die (curl_error($ch));   
  19.     echo $result;   
  20.     echo curl_error($ch);   
  21.     curl_close($ch);   
  22.     //判断是否登陆成功!   
  23.     $ch2 = curl_init();   
  24.     curl_setopt($ch2, CURLOPT_URL, "http://i.cn.yahoo.com/my.html?.login=1");   
  25.     curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, FALSE);   
  26.     curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, 2);   
  27.     $result2 =curl_exec($ch2);   
  28.     curl_close($ch2);   
  29.     if($result2==1){   
  30.         echo ‘succeed’;   
  31.     }else{   
  32.         echo ‘error’;   
  33.     }   
  34. }   
  35. ?>  

采集器的基本实现代码

 

如果采集下面链接的内容。http://my.mmosite.com/umge/Blog/Item/525f4dc178610c4f07321cc0925cda19.html这是一篇文章,
假设我们只要采集它的文章标题和文章内容。请写出实现代码。

PHP代码
  1. <?php   
  2. /*  
  3. 如果采集下面链接的内容。http://my.mmosite.com/umge/Blog/Item/525f4dc178610c4f07321cc0925cda19.html这是一篇文章,  
  4. 假设我们只要采集它的文章标题和文章内容。请写出实现代码。  
  5. */  
  6.   
  7.   
  8. //$startStr1,$endStr1 标题采集开始处与结束外标记   
  9. $startStr1=‘<td width="93%" class="blogtitle">  ‘;   
  10. $endStr1=‘</td>  
  11.                 </tr>  
  12.                 <tr>  
  13.                   <td class="subtitle" style="background-position:0px 32px">’;   
  14.   
  15. //$startStr2,$endStr2 文章内容采集开始处与结束外标记   
  16. $startStr2=‘<div class="textMain">’;   
  17. $endStr2=‘</div>  
  18.                           <br></td>  
  19.                       </tr>  
  20.                       <tr>  
  21.                         <td colspan="2" class="padding text4" style="word-break : normal; overflow:hidden; padding:25px 15px 10px 15px" id="textMain"><div align="center"><a href="#comment">’;   
  22.   
  23. $filename="http://my.mmosite.com/umge/Blog/Item/525f4dc178610c4f07321cc0925cda19.html";   
  24.   
  25. $mmosite=new mmosite($filename);   
  26. echo $mmosite->show($startStr1,$endStr1);   
  27. echo $mmosite->show($startStr2,$endStr2);   
  28.   
  29.   
  30.   
  31.   
  32.   
  33. //采集处理类   
  34.   
  35.   
  36. class mmosite{   
  37.   
  38.     public function __construct($filename)   
  39.     {   
  40.         $this->filename=$filename;   
  41.     }   
  42.   
  43.     function go($contents,$startStr,$endStr)   
  44.     {   
  45.         $startStr=str_replace("\r\n","",$startStr);   
  46.         $endStr=str_replace("\r\n","",$endStr);   
  47.         $contents=str_replace("\r\n","",$contents);   
  48.   
  49.         preg_match_all( "@" . preg_quote($startStr) . "(.*?)". preg_quote($endStr) ."@is"$contents$tpl );        
  50.         $content = $tpl[1];       
  51.         $content = implode(""$content );   
  52.         return $content;   
  53.     }   
  54.   
  55.     function open()   
  56.     {   
  57.         $handle=fopen($this->filename, "r");   
  58.         $this->contents=stream_get_contents($handle);   
  59.         fclose($handle);   
  60.     }   
  61.   
  62.     function show($startStr,$endStr)   
  63.     {   
  64.         $this->open();   
  65.         return $this->go($this->contents,$startStr,$endStr);   
  66.     }   
  67. }   
  68.   
  69. ?>