<span style="color: #000000; font-weight: bold;"><?php</span>
<span style="color: #009933; font-style: italic;">/**
* 解析cookie
*
* @access public
* @return array
*/</span>
<span style="color: #000000; font-weight: bold;">function</span> parse_cookie<span style="color: #009900;">(</span><span style="color: #009900;">)</span>
<span style="color: #009900;">{</span>
<span style="color: #666666; font-style: italic;">// Netscape HTTP Cookie File</span>
<span style="color: #000088;">$cookies</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file</span><span style="color: #009900;">(</span>temp_dir<span style="color: #339933;">.</span><span style="color: #0000ff;">"cookie"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">(</span><span style="color: #000088;">$cookies</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$v</span><span style="color: #009900;">)</span>
<span style="color: #009900;">{</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"/(.*\.qq\.com)<span style="color: #000099; font-weight: bold;">\t</span>(.*)<span style="color: #000099; font-weight: bold;">\t</span>(.*)<span style="color: #000099; font-weight: bold;">\t</span>(.*)<span style="color: #000099; font-weight: bold;">\t</span>(.*)<span style="color: #000099; font-weight: bold;">\t</span>(.*)<span style="color: #000099; font-weight: bold;">\t</span>(.*)<span style="color: #000099; font-weight: bold;">\n</span>/U"</span><span style="color: #339933;">,</span> <span style="color: #000088;">$v</span><span style="color: #339933;">,</span> <span style="color: #000088;">$p</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span>
<span style="color: #009900;">{</span>
<span style="color: #000088;">$data</span><span style="color: #009900;">[</span><span style="color: #009900;">]</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array_slice</span><span style="color: #009900;">(</span><span style="color: #000088;">$p</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span>
<span style="color: #009900;">}</span>
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$data</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span>
<span style="color: #009933; font-style: italic;">/**
* 获取cookie
*
* public
* @param array $cookie
* @return array
*/</span>
<span style="color: #000000; font-weight: bold;">function</span> get_cookie<span style="color: #009900;">(</span><span style="color: #000088;">$cookie</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">NULL</span><span style="color: #009900;">)</span>
<span style="color: #009900;">{</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span><span style="color: #000088;">$cookie</span> <span style="color: #339933;">===</span> <span style="color: #009900; font-weight: bold;">NULL</span><span style="color: #009900;">)</span>
<span style="color: #009900;">{</span>
<span style="color: #000088;">$cookie</span> <span style="color: #339933;">=</span> parse_cookie<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span><span style="color: #990000;">is_array</span><span style="color: #009900;">(</span><span style="color: #000088;">$cookie</span><span style="color: #009900;">)</span> <span style="color: #339933;">&&</span> <span style="color: #990000;">count</span><span style="color: #009900;">(</span><span style="color: #000088;">$cookie</span><span style="color: #009900;">)</span><span style="color: #339933;"><=</span><span style="color: #cc66cc;">6</span><span style="color: #009900;">)</span>
<span style="color: #009900;">{</span>
<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">(</span><span style="color: #000088;">$cookie</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$v</span><span style="color: #009900;">)</span>
<span style="color: #009900;">{</span>
<span style="color: #000088;">$data</span><span style="color: #009900;">[</span><span style="color: #000088;">$v</span><span style="color: #009900;">[</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">]</span><span style="color: #009900;">]</span> <span style="color: #339933;">=</span><span style="color: #000088;">$v</span><span style="color: #009900;">[</span><span style="color: #cc66cc;">6</span><span style="color: #009900;">]</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span>
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$data</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span>
<span style="color: #009933; font-style: italic;">/**
* 真正的登录(上线)
*
* @access public
* @param string $ptwebqq
* @return string
*/</span>
<span style="color: #000000; font-weight: bold;">function</span> login2<span style="color: #009900;">(</span><span style="color: #000088;">$ptwebqq</span><span style="color: #339933;">,</span><span style="color: #000088;">$clientid</span><span style="color: #009900;">)</span>
<span style="color: #009900;">{</span>
<span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">"http://d.web2.qq.com/channel/login2"</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$ch</span> <span style="color: #339933;">=</span> <span style="color: #990000;">curl_init</span><span style="color: #009900;">(</span><span style="color: #000088;">$url</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">(</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_POSTFIELDS<span style="color: #339933;">,</span> <span style="color: #0000ff;">"r=%7B<span style="color: #009933; font-weight: bold;">%22s</span>tatus%22%3A<span style="color: #009933; font-weight: bold;">%22o</span>nline%22%2C%22ptwebqq%22%3A%22<span style="color: #006699; font-weight: bold;">{$ptwebqq}</span>%22%2C%22passwd_sig%22%3A%22%22%2C<span style="color: #009933; font-weight: bold;">%22c</span>lientid%22%3A%22<span style="color: #006699; font-weight: bold;">{$clientid}</span>%22%2C%22psessionid%22%3Anull%7D&clientid=<span style="color: #006699; font-weight: bold;">{$clientid}</span>&psessionid=null"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// 必须要来路域名</span>
<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">(</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_REFERER<span style="color: #339933;">,</span> <span style="color: #0000ff;">"http://d.web2.qq.com/proxy.html?v=20110331002&callback=1&id=2"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// curl_setopt($ch, CURLOPT_HEADER, TRUE);</span>
<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">(</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_COOKIEFILE<span style="color: #339933;">,</span> temp_dir<span style="color: #339933;">.</span><span style="color: #0000ff;">"cookie"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">(</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_COOKIEJAR<span style="color: #339933;">,</span> temp_dir<span style="color: #339933;">.</span><span style="color: #0000ff;">"cookie"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">(</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_RETURNTRANSFER<span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">return</span> <span style="color: #990000;">curl_exec</span><span style="color: #009900;">(</span><span style="color: #000088;">$ch</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span>
<span style="color: #666666; font-style: italic;">/* WebQQ3.0 core part end of */</span>