<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>胡桥 &#187; 网络</title>
	<atom:link href="http://www.huqiao.net/category/web/feed" rel="self" type="application/rss+xml" />
	<link>http://www.huqiao.net</link>
	<description>网络之路漫漫其修远兮，吾将上下而求索！</description>
	<lastBuildDate>Sat, 04 Feb 2012 12:59:59 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>使用fscok实现异步调用PHP</title>
		<link>http://www.huqiao.net/988.html</link>
		<comments>http://www.huqiao.net/988.html#comments</comments>
		<pubDate>Sat, 26 Nov 2011 15:20:04 +0000</pubDate>
		<dc:creator>joeshow</dc:creator>
				<category><![CDATA[网络]]></category>
		<category><![CDATA[fscok PHP]]></category>

		<guid isPermaLink="false">http://www.huqiao.net/?p=988</guid>
		<description><![CDATA[Web 服务器执行一个脚本，可能几毫秒就完成，也可能几分钟都完不成。如果程序执行缓慢，用户可能没有耐心等下去，就关闭浏览器了。
而有的时候，我们更本不关心这些耗时的脚本的执行结果，但却还要等他执行完返回，才能继续下一步。
那么有没有什么办法，只是简单的触发调用这些耗时的脚本然后就继续下一步，让这些耗时的脚本在服务端慢慢执行？

接下来，我将使用fscokopen来实现这一功能。
PHP是支持socket编程的，就是fsockopen， 在以前做CMS的时候，我也曾经用过它做过smtp发信。
fscokopen返回一个到远程主机连接的句柄。你可以像使用fopen返回的句柄一样，对她进行写fwrite，读取fgets, fread等操作。
我们的异步PHP，主要想要的效果就是，触发一个PHP脚本，然后立即返回，留它在服务器端慢慢执行。前面我也写过一篇文章讨论过这个问题。
那么，我们就可以使用fsockopen连接到本地服务器，触发脚本执行，然后立即返回，不等待脚本执行完成。
function triggerRequest($url, $post_data = array(), $cookie = array())…{
$method = &#8220;GET&#8221;;  //可以通过POST或者GET传递一些参数给要触发的脚本
$url_array = parse_url($url); //获取URL信息，以便平凑HTTP HEADER
$port = isset($url_array['port'])? $url_array['port'] : 80;
$fp = fsockopen($url_array['host'], $port, $errno, $errstr, 30);
if (!$fp) …{
return FALSE;
}
$getPath = $url_array['path'] .&#8221;?&#8221;. $url_array['query'];
if(!empty($post_data))…{
$method = &#8220;POST&#8221;;
}
$header = $method . &#8221; &#8221; . $getPath;
$header .= &#8221; HTTP/1.1\r\n&#8221;;
$header .= &#8220;Host: &#8220;. $url_array['host'] . &#8220;\r\n &#8220;; ]]></description>
		<wfw:commentRss>http://www.huqiao.net/988.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决nginx access日志中400 bad request 错误</title>
		<link>http://www.huqiao.net/977.html</link>
		<comments>http://www.huqiao.net/977.html#comments</comments>
		<pubDate>Tue, 22 Nov 2011 03:38:41 +0000</pubDate>
		<dc:creator>joeshow</dc:creator>
				<category><![CDATA[网络]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://www.huqiao.net/?p=977</guid>
		<description><![CDATA[在access.log中有大量400错误,并以每天几百M的速度增加,占用大量空间.
tail -f /opt/nginx/logs/access.log

116.236.228.180 &#8211; - [15/Dec/2010:11:00:15 +0800] &#8220;-&#8221; 400 0 &#8220;-&#8221; &#8220;-&#8221;
116.236.228.180 &#8211; - [15/Dec/2010:11:00:15 +0800] &#8220;-&#8221; 400 0 &#8220;-&#8221; &#8220;-&#8221;
116.236.228.180 &#8211; - [15/Dec/2010:11:00:15 +0800] &#8220;-&#8221; 400 0 &#8220;-&#8221; &#8220;-&#8221;
116.236.228.180 &#8211; - [15/Dec/2010:11:00:15 +0800] &#8220;-&#8221; 400 0 &#8220;-&#8221; &#8220;-&#8221;
116.236.228.180 &#8211; - [15/Dec/2010:11:00:15 +0800] &#8220;-&#8221; 400 0 &#8220;-&#8221; &#8220;-&#8221;
119.97.196.7 &#8211; - [15/Dec/2010:11:00:16 +0800] &#8220;-&#8221; 400 0 ]]></description>
		<wfw:commentRss>http://www.huqiao.net/977.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysql 慢查询分析脚本 mysqlsla</title>
		<link>http://www.huqiao.net/974.html</link>
		<comments>http://www.huqiao.net/974.html#comments</comments>
		<pubDate>Mon, 14 Nov 2011 14:40:06 +0000</pubDate>
		<dc:creator>joeshow</dc:creator>
				<category><![CDATA[网络]]></category>

		<guid isPermaLink="false">http://www.huqiao.net/?p=974</guid>
		<description><![CDATA[wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz
tar -xvaf mysqlsla-2.03.tar.gz
cd mysqlsla-2.03

安装：
perl Makefile.PL
make
make install
使用：
mysqlsla -lt slow /var/log/mysql-slow-queries.log
作者建议配合mk-query-profiler 一起使用：
yum install perl-TermReadKey
wget http://maatkit.googlecode.com/files/maatkit-5427-1.noarch.rpm
rpm -ivh maatkit-5427-1.noarch.rpm
mysqlsla -lt slow /var/log/mysql-slow-queries.log -R print-unique -mf &#8220;db=jewelpuzzle&#8221; -sf &#8220;+SELECT&#8221; &#124; mk-query-profiler -separate -database jewelpuzzle
貌似mk-query-profiler的参数用得有点不对，以后再研究下。
]]></description>
		<wfw:commentRss>http://www.huqiao.net/974.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php调用shell脚本</title>
		<link>http://www.huqiao.net/971.html</link>
		<comments>http://www.huqiao.net/971.html#comments</comments>
		<pubDate>Sat, 12 Nov 2011 15:59:50 +0000</pubDate>
		<dc:creator>joeshow</dc:creator>
				<category><![CDATA[网络]]></category>
		<category><![CDATA[php shell]]></category>

		<guid isPermaLink="false">http://www.huqiao.net/?p=971</guid>
		<description><![CDATA[php调用shell脚本的svnup.php文件内容：
&#60;?
set_time_limit(0);
//$output = array();
$ret = 0;
exec(&#8220;/usr/bin/sudo /data0/shell/svnvp.sh&#8221;, $output, $ret);
echo &#8220;Result:{$ret}&#8221;;
print_r($output);
?&#62;

/data0/shell/svnvp.sh是更新的脚本，主要内容是svn up。
还需要修改sudo配置文件，直接键如visudo命令编辑配置文件：
1. 注释Defaults requiretty
Defaults requiretty修改为 #Defaults requiretty， 表示不需要控制终端。
否则会出现sudo: sorry, you must have a tty to run sudo
2. 增加行 Defaults visiblepw
否则会出现 sudo: no tty present and no askpass program specified
我发现sudo-1.6.9p17-5.el5是不支持这个参数的，sudo-1.7.2p1-10.el5支持。
3. 赋予www用户执行svn权限
如，增加行：www  ALL=(ALL) NOPASSWD: /data0/shell/svnvp.sh
注：NOPASSWD可以使在命令执行时不需要交互输入www 用户的密码
www用户为nginx或apache的运行用户
4.重启nginx或apache，让用户重新获得权限。
php调用shell脚本的svnup.php文件内容：
&#60;?set_time_limit(0);//$output = array();$ret = 0;exec(&#8220;/usr/bin/sudo /data0/shell/svnvp.sh&#8221;, $output, $ret);echo &#8220;Result:{$ret}&#8221;;print_r($output);?&#62;
/data0/shell/svnvp.sh是更新的脚本，主要内容是svn up。
还需要修改sudo配置文件，直接键如visudo命令编辑配置文件：
1. 注释Defaults requiretty Defaults requiretty修改为 #Defaults ]]></description>
		<wfw:commentRss>http://www.huqiao.net/971.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nginx伪静态问号的处理方法</title>
		<link>http://www.huqiao.net/961.html</link>
		<comments>http://www.huqiao.net/961.html#comments</comments>
		<pubDate>Thu, 10 Nov 2011 03:43:04 +0000</pubDate>
		<dc:creator>joeshow</dc:creator>
				<category><![CDATA[网络]]></category>
		<category><![CDATA[nginx伪静态]]></category>
		<category><![CDATA[伪静态问号]]></category>

		<guid isPermaLink="false">http://www.huqiao.net/?p=961</guid>
		<description><![CDATA[桌趣网上线将至，打算把Tag伪静态处理，再自动生成静态页面。上传配置文件，重启服务后，居然没有匹配到，第一次写的伪静态规则是这样的：
rewrite &#8220;^/tag/(.*)\.html\?page=([0-9]+)&#8221; /tag.php?tag=$1&#038;page=$2 last;

原来 ? 问号为系统默认保留字符，你怎么转义没用，换成这样就OK啦：
rewrite &#8220;^/tag/(.*)\.html\?page=([0-9]+)&#8221; /tag/tag.php?tag=$1&#038;page=$query_string last; 
$query_string打印出来是page=2，需要自行处理下字符。
]]></description>
		<wfw:commentRss>http://www.huqiao.net/961.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpcms v9数据表结构,数据字典下载</title>
		<link>http://www.huqiao.net/959.html</link>
		<comments>http://www.huqiao.net/959.html#comments</comments>
		<pubDate>Sun, 06 Nov 2011 05:10:26 +0000</pubDate>
		<dc:creator>joeshow</dc:creator>
				<category><![CDATA[网络]]></category>
		<category><![CDATA[phpcms v9]]></category>
		<category><![CDATA[phpcms v9数据结构]]></category>

		<guid isPermaLink="false">http://www.huqiao.net/?p=959</guid>
		<description><![CDATA[表 1 : v9_admin 管理员表







字段
类型
Null
默认
额外
注释


userid
mediumint(6) unsigned
PK

auto_increment
用户id


username
varchar(20)
YES


用户名


password
varchar(32)
YES


密码


roleid
smallint(5)
YES
0

角色


encrypt
varchar(6)
YES


加密因子


lastloginip
varchar(15)
YES


最后登录ip


lastlogintime
int(10) unsigned
YES
0

最后登录时间


email
varchar(40)
YES


Email


realname
varchar(50)
NO


真是姓名


card
varchar(255)
NO


密保卡










键名
类型
字段


PRIMARY
PRIMARY
userid


username
INDEX
username



表 2 : v9_admin_panel 快捷面板







字段
类型
Null
默认
额外
注释


menuid
mediumint(8) unsigned
PK


菜单id


userid
mediumint(8) unsigned
NO
0

管理员id


name
char(32)
YES


菜单名称


url
char(255)
YES


菜单url


datetime
int(10) unsigned
YES
0

添加时间











键名
类型
字段


userid
INDEX
menuid


userid
INDEX
userid



表 3 : v9_admin_role 角色表







字段
类型
Null
默认
额外
注释


roleid
tinyint(3) unsigned
PK

auto_increment
角色id


rolename
varchar(50)
NO


角色名称


description
text
NO


描述


listorder
smallint(5) unsigned
NO
0

排序


disabled
tinyint(1) unsigned
NO
0

状态：1，禁用










键名
类型
字段


PRIMARY
PRIMARY
roleid


listorder
INDEX
listorder


disabled
INDEX
disabled



表 4 : v9_admin_role_priv 管理员权限表







字段
类型
Null
默认
额外
注释


roleid
tinyint(3) unsigned
PK
0

角色id


m
char(20)
NO


m


c
char(20)
NO


c


a
char(20)
NO


a


data
char(30)
NO


附件属性


siteid
smallint(5) unsigned
NO
0

所属站点










键名
类型
字段


roleid
INDEX
roleid


roleid
INDEX
m


roleid
INDEX
c


roleid
INDEX
a


roleid
INDEX
siteid



表 5 : v9_announce 公告表







字段
类型
Null
默认
额外
注释


aid
smallint(4) unsigned
PK

auto_increment
公告ID


siteid
smallint(5) unsigned
NO
0

站点ID


title
char(80)
NO


公告标题


content
text
NO


公告内容


starttime
date
NO
0000-00-00

有效起始时间


endtime
date
NO
0000-00-00

有效结束时间


username
varchar(40)
NO


添加者


addtime
int(10) unsigned
NO
0

添加时间


hits
smallint(5) unsigned
NO
0

浏览次数


passed
tinyint(1) unsigned
NO
0

是否通过1：通过；0：为通过


style
char(15)
NO


样式


show_template
char(30)
NO


模板










键名
类型
字段


PRIMARY
PRIMARY
aid


siteid
INDEX
siteid


siteid
INDEX
passed


siteid
INDEX
endtime



表 6 : v9_attachment 附件表







字段
类型
Null
默认
额外
注释


aid
int(10) unsigned
PK

auto_increment
附件ID


module
char(15)
NO


模块名称


catid
smallint(5) unsigned
NO
0

栏目ID


filename
char(50)
NO


附件名称


filepath
char(200)
NO


附件路径


filesize
int(10) unsigned
NO
0

附件大小


fileext
char(10)
NO


附件扩展名


isimage
tinyint(1) unsigned
NO
0

是否为图片 1为图片


isthumb
tinyint(1) unsigned
NO
0

是否为缩略图 1为缩略图


downloads
mediumint(8) unsigned
NO
0




userid
mediumint(8) unsigned
NO
0

userid


uploadtime
int(10) unsigned
NO
0

上传时间


uploadip
char(15)
NO


上传ip


status
tinyint(1)
NO
0

附件使用状态


authcode
char(32)
NO


附件路径MD5值


siteid
smallint(5) unsigned
NO
0

站点id










键名
类型
字段


PRIMARY
PRIMARY
aid


authcode
INDEX
authcode



表 7 : v9_attachment_index 附件关系表







字段
类型
Null
默认
额外
注释


keyid
char(30)
PK


关联id


aid
char(10)
NO


附件ID










键名
类型
字段


keyid
INDEX
keyid


aid
INDEX
aid



表 8 : v9_badword 敏感词







字段
类型
Null
默认
额外
注释


badid
smallint(5) unsigned
PK

auto_increment
感敏词ID


badword
char(20)
NO


感敏词


level
tinyint(5)
NO
1

感敏级别


replaceword
char(20)
NO
0

换替文字


lastusetime
int(10) unsigned
NO
0

添加时间


listorder
tinyint(3) unsigned
NO
0

排序










键名
类型
字段


PRIMARY
PRIMARY
badid


badword
INDEX
badword


usetimes
INDEX
replaceword


usetimes
INDEX
listorder


hits
INDEX
listorder



表 9 ]]></description>
		<wfw:commentRss>http://www.huqiao.net/959.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php正则递归匹配</title>
		<link>http://www.huqiao.net/954.html</link>
		<comments>http://www.huqiao.net/954.html#comments</comments>
		<pubDate>Sat, 05 Nov 2011 13:53:20 +0000</pubDate>
		<dc:creator>joeshow</dc:creator>
				<category><![CDATA[网络]]></category>
		<category><![CDATA[php正则]]></category>
		<category><![CDATA[正则递归匹配]]></category>

		<guid isPermaLink="false">http://www.huqiao.net/?p=954</guid>
		<description><![CDATA[ 正则是否能处理括号配对的正则匹配？
 比如, 对于如下的待匹配的字符串:
   ((()))
就是一个括号配对的字符串. 而对于如下的待匹配字符串:
   ((()
则不是一个括号配对的字符串.

在以前, 这种情况, 正则无法处理, 最多只能处理固定层数的递归, 而无法处理无线递归的情况… 而在perl 5.6以后, 引入了一个新的特性: Recursive patterns, 使得这种需求可以被正确的处理.
Recursive pattern引入了一个新的符号(?R), 这个符号可以表示: 正则模式本身, 比如:
    #1(?R)*#
我们来仔细看一下, 这个正则, 首先它匹配数字”1″, 然后(?R)*表示, 正则式本身, 也就是说, 可以认为是:
    #1(正则本身(正则本身)&#8230;..)*#
于是, 对于文章开头说到的情况:”括号配对”, 可以写下如下的正则式:
     #\((?R)*\)#
就可以正确处理.
这里提醒一下, 用的时候, 要注意一定要给递归一个截至条件, 比如如果上面的例子写成:
   #1(?R)#
那么, 就不会正常工作, 因为这个展开以后表示要匹配无限多个”1″, 所以在上面的例子中, ]]></description>
		<wfw:commentRss>http://www.huqiao.net/954.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何屏蔽优酷广告,屏蔽优酷视频广告方法</title>
		<link>http://www.huqiao.net/948.html</link>
		<comments>http://www.huqiao.net/948.html#comments</comments>
		<pubDate>Sun, 28 Aug 2011 15:08:41 +0000</pubDate>
		<dc:creator>joeshow</dc:creator>
				<category><![CDATA[网络]]></category>
		<category><![CDATA[如何屏蔽优酷广告]]></category>
		<category><![CDATA[屏蔽优酷的广告]]></category>
		<category><![CDATA[屏蔽优酷视频广告]]></category>

		<guid isPermaLink="false">http://www.huqiao.net/?p=948</guid>
		<description><![CDATA[每天上优酷,我乐,土豆等视频网站看视屏，是否被他们播放器十秒的广告整得很郁闷呢?  是否一直在苦苦的寻找方法呢?
教你一个小办法，告诉你如何屏蔽优酷广告, 屏蔽优酷视频广告的最新绝招！
打开这个路径：C:\WINDOWS\system32\drivers\etc\hosts,  用记事本打开：

复制下面的粘贴到打开的文件下边空白区域保存即可：
#优酷
127.0.0.1 atm.youku.com
127.0.0.1 Fvid.atm.youku.com
127.0.0.1 html.atm.youku.com
127.0.0.1 valb.atm.youku.com
127.0.0.1 valf.atm.youku.com
127.0.0.1 valo.atm.youku.com
127.0.0.1 valp.atm.youku.com
127.0.0.1 lstat.youku.com
127.0.0.1 speed.lstat.youku.com
127.0.0.1 urchin.lstat.youku.com
127.0.0.1 stat.youku.com
127.0.0.1 static.lstat.youku.com
127.0.0.1 valc.atm.youku.com
127.0.0.1 vid.atm.youku.com
127.0.0.1 walp.atm.youku.com
#百度
127.0.0.1 a.baidu.com
127.0.0.1 baidutv.baidu.com
127.0.0.1 bar.baidu.com
127.0.0.1 c.baidu.com
127.0.0.1 cjhq.baidu.com
127.0.0.1 cpro.baidu.com
127.0.0.1 drmcmm.baidu.com
127.0.0.1 e.baidu.com
127.0.0.1 eiv.baidu.com
127.0.0.1 hc.baidu.com
127.0.0.1 hm.baidu.com
127.0.0.1 ma.baidu.com
127.0.0.1 nsclick.baidu.com
127.0.0.1 spcode.baidu.com
127.0.0.1 tk.baidu.com
127.0.0.1 union.baidu.com
127.0.0.1 ucstat.baidu.com
127.0.0.1 utility.baidu.com
127.0.0.1 utk.baidu.com
127.0.0.1 focu**aiduafp.allyes.com
#奇艺
127.0.0.1 afp.qiyi.com
127.0.0.1 focu**aiduafp.allyes.com
#CNTV
127.0.0.1 a.cctv.com
127.0.0.1 a.cntv.cn
127.0.0.1 ad.cctv.com
127.0.0.1 d.cntv.cn
127.0.0.1 adguanggao.eee114.com
127.0.0.1 cctv.adsunion.com
#新浪视频
127.0.0.1 dcads.sina.com.cn
#pptv
127.0.0.1 pp2.pptv.com
#乐视
127.0.0.1 pro.letv.com
#搜狐高清
127.0.0.1 images.sohu.com
#HostsX 国内站点广告/视频类网站
#CNTV
127.0.0.1 a.cctv.com
127.0.0.1 ]]></description>
		<wfw:commentRss>http://www.huqiao.net/948.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>dedecms图集上传图片提示FILEID和302解决办法</title>
		<link>http://www.huqiao.net/943.html</link>
		<comments>http://www.huqiao.net/943.html#comments</comments>
		<pubDate>Fri, 26 Aug 2011 06:59:23 +0000</pubDate>
		<dc:creator>joeshow</dc:creator>
				<category><![CDATA[网络]]></category>
		<category><![CDATA[dedecms图集FILEID]]></category>
		<category><![CDATA[dedecms图集上传302]]></category>

		<guid isPermaLink="false">http://www.huqiao.net/?p=943</guid>
		<description><![CDATA[提示302错误原因swfupload在linux环境下session机制问题,解决方法如下：
下面的php代码粘贴到博客的时候单引号和双引号变为中文字符的了，注意修改下哈~!
在include/userlogin.class.php文件中的第二行session_start();前加上

if (isset($_POST["PHPSESSID"])) {
session_id($_POST["PHPSESSID"]);
} else if (isset($_GET["PHPSESSID"])) {
session_id($_GET["PHPSESSID"]);
}
提示FILEID的是由于utf-8的bom的问题，解决方法如下：
&#60;?php
//remove the utf-8 boms
//by magicbug at gmail dot com
if (isset($_GET['dir'])){ //config the basedir
$basedir=$_GET['dir'];
}else{
$basedir = &#8216;.&#8217;;
}
$auto = 1;
checkdir($basedir);
function checkdir($basedir){
if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file != &#8216;.&#8217; &#38;&#38; $file != &#8216;..&#8217;){
if (!is_dir($basedir.&#8221;/&#8221;.$file)) {
echo &#8220;filename: $basedir/$file &#8220;;
echo checkBOM(&#8220;$basedir/$file&#8221;).&#8221;
&#8220;;
}else{
$dirname = $basedir.&#8221;/&#8221;.$file;
checkdir($dirname);
}
}
}
closedir($dh);
}
}
function checkBOM ($filename) {
global $auto;
$contents = file_get_contents($filename);
$charset[1] ]]></description>
		<wfw:commentRss>http://www.huqiao.net/943.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php 使用Curl、socket、file_get_contents三种方法模拟POST提交数据</title>
		<link>http://www.huqiao.net/936.html</link>
		<comments>http://www.huqiao.net/936.html#comments</comments>
		<pubDate>Mon, 15 Aug 2011 00:59:41 +0000</pubDate>
		<dc:creator>joeshow</dc:creator>
				<category><![CDATA[网络]]></category>
		<category><![CDATA[php curl]]></category>
		<category><![CDATA[php curl模拟post]]></category>
		<category><![CDATA[php file_get_contents模拟post]]></category>
		<category><![CDATA[php socket模拟post]]></category>

		<guid isPermaLink="false">http://www.huqiao.net/?p=936</guid>
		<description><![CDATA[
php 使用Curl、socket、file_get_contents三种方法模拟POST提交数据的函数, php模拟登陆论坛,不外乎如此, 函数代码如下:

# &#60;?php  
# /** 
# * Socket版本 
# * 使用方法： 
# * $post_string = &#8220;app=socket&#38;version=beta&#8221;; 
# * request_by_socket(&#8216;facebook.cn&#8217;,'/restServer.php&#8217;,$post_string); 
# */ 
# function request_by_socket($remote_server,$remote_path,$post_string,$port = 80,$timeout = 30){  
#     $socket = fsockopen($remote_server,$port,$errno,$errstr,$timeout);  
#     if (!$socket) die(&#8220;$errstr($errno)&#8221;);  
#      
#     fwrite($socket,&#8221;POST $remote_path HTTP/1.0&#8243;);  
#     fwrite($socket,&#8221;User-Agent: Socket Example&#8221;);  
#     fwrite($socket,&#8221;HOST: $remote_server&#8221;);  
#     fwrite($socket,&#8221;Content-type: application/x-www-form-urlencoded&#8221;);  
#     fwrite($socket,&#8221;Content-length: &#8220;.strlen($post_string)+8.&#8221;");  
#     fwrite($socket,&#8221;Accept:*/*&#8221;);  
#     fwrite($socket,&#8221;");  
#     fwrite($socket,&#8221;mypost=$post_string&#8221;);  
#     fwrite($socket,&#8221;");  
#      
#     $header = &#8220;&#8221;;  
#     while ($str = trim(fgets($socket,4096))) {  
#         $header.=$str;  
#     }  
#      
#     ]]></description>
		<wfw:commentRss>http://www.huqiao.net/936.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

