<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[GET与POST示例]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Sun, 17 Jan 2010 02:52:16 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	GI编程入门---GET与POST示例<br/><br/>关于CGI的编程，我也还是新手！但只要懂C，则基于C的CGI编程就不会很难！<br/>下面就GET和POST方法的应用，做一个小小的demo，给刚学习CGI编程的新手提供一点感性认识！<br/><br/>GET方法：做一个加法运算，需要接收两个参数。<br/>文件get.c如下：<br/>-------------------------------<br/>#include &lt;stdio.h&gt;<br/>#include &lt;stdlib.h&gt;<br/>int main(void)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *data;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char a[10],b[10];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Content-Type:text/html&#92;n&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;HTML&gt;&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;HEAD&gt;&#92;n&lt;TITLE &gt;Get Method&lt;/TITLE&gt;&#92;n&lt;/HEAD&gt;&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;BODY&gt;&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;div style=&#92;&quot;font-size:12px&#92;&quot;&gt;&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data = getenv(&quot;QUERY_STRING&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(sscanf(data,&quot;a=%[^&amp;]&amp;b=%s&quot;,a,b)!=2)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;DIV STYLE=&#92;&quot;COLOR:RED&#92;&quot;&gt;Error:Parameters should be entered!&lt;/DIV&gt;&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;DIV STYLE=&#92;&quot;COLOR:GREEN; font-size:15px; font-weight:bold&#92;&quot;&gt;a + b = %d&lt;/DIV&gt;&#92;n&quot;,atoi(a)+atoi(b));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;HR COLOR=&#92;&quot;blue&#92;&quot; align=&#92;&quot;left&#92;&quot; width=&#92;&quot;100&#92;&quot;&gt;&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;input type=&#92;&quot;button&#92;&quot; value=&#92;&quot;Back CGI&#92;&quot; onclick=&#92;&quot;javascript:window.location=&#039;../cgi.html&#039;&#92;&quot;&gt;&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;/div&gt;&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;/BODY&gt;&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;/HTML&gt;&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br/>&#125;<br/><br/>POST方法：做一个乘法运算，需要接收两个参数。<br/>文件post.c如下：<br/>--------------------------------<br/>#include &lt;stdio.h&gt;<br/>#include &lt;stdlib.h&gt;<br/>int main(void)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int len;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *lenstr,poststr[20];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char m[10],n[10];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Content-Type:text/html&#92;n&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;HTML&gt;&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;HEAD&gt;&#92;n&lt;TITLE &gt;Post Method&lt;/TITLE&gt;&#92;n&lt;/HEAD&gt;&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;BODY&gt;&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;div style=&#92;&quot;font-size:12px&#92;&quot;&gt;&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lenstr=getenv(&quot;CONTENT_LENGTH&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(lenstr == NULL)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;DIV STYLE=&#92;&quot;COLOR:RED&#92;&quot;&gt;Error:Parameters should be entered!&lt;/DIV&gt;&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len=atoi(lenstr);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fgets(poststr,len+1,stdin);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(sscanf(poststr,&quot;m=%[^&amp;]&amp;n=%s&quot;,m,n)!=2)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;DIV STYLE=&#92;&quot;COLOR:RED&#92;&quot;&gt;Error: Parameters are not right!&lt;/DIV&gt;&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;DIV STYLE=&#92;&quot;COLOR:GREEN; font-size:15px; font-weight:bold&#92;&quot;&gt;m * n = %d&lt;/DIV&gt;&#92;n&quot;,atoi(m)*atoi(n));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;HR COLOR=&#92;&quot;blue&#92;&quot; align=&#92;&quot;left&#92;&quot; width=&#92;&quot;100&#92;&quot;&gt;&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;input type=&#92;&quot;button&#92;&quot; value=&#92;&quot;Back CGI&#92;&quot; onclick=&#92;&quot;javascript:window.location=&#039;../cgi.html&#039;&#92;&quot;&gt;&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;/div&gt;&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;/BODY&gt;&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;&lt;/HTML&gt;&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fflush(stdout);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br/>&#125;<br/>再附上html测试文件cgi.html：<br/>--------------------------------<br/>&lt;html&gt;<br/>&lt;head&gt;<br/>&lt;title&gt;CGI Testing&lt;/title&gt;<br/>&lt;/head&gt;<br/>&lt;body&gt;<br/>&lt;table width=&quot;200&quot; height=&quot;180&quot; border=&quot;0&quot; style=&quot;font-size:12px&quot;&gt;<br/>&lt;tr&gt;&lt;td&gt;<br/>&lt;div style=&quot;font-weight:bold; font-size:15px&quot;&gt;Method: GET&lt;/div&gt;<br/>&lt;div&gt;Please input two number:&lt;div&gt;<br/>&lt;form method=&quot;get&quot; action=&quot;./cgi-bin/get&quot;&gt;<br/>&lt;input type=&quot;txt&quot; size=&quot;3&quot; name=&quot;a&quot;&gt;+<br/>&lt;input type=&quot;txt&quot; size=&quot;3&quot; name=&quot;b&quot;&gt;=<br/>&lt;input type=&quot;submit&quot; value=&quot;sum&quot;&gt;<br/>&lt;/form&gt;<br/>&lt;/td&gt;&lt;/tr&gt;<br/>&lt;tr&gt;&lt;td&gt;<br/>&lt;div style=&quot;font-weight:bold; font-size:15px&quot;&gt;Method: POST&lt;/div&gt;<br/>&lt;div&gt;Please input two number:&lt;div&gt;<br/>&lt;form method=&quot;post&quot; action=&quot;./cgi-bin/post&quot;&gt;<br/>&lt;input type=&quot;txt&quot; size=&quot;3&quot; name=&quot;m&quot;&gt;*<br/>&lt;input type=&quot;txt&quot; size=&quot;3&quot; name=&quot;n&quot;&gt;=<br/>&lt;input type=&quot;submit&quot; value=&quot;resu&quot;&gt;<br/>&lt;/form&gt;<br/>&lt;/td&gt;&lt;/tr&gt;<br/>&lt;tr&gt;&lt;td&gt;&lt;input type=&quot;button&quot; value=&quot;Back Home&quot; onclick=&#039;javascript:window.location=&quot;./index.html&quot;&#039;&gt;&lt;/td&gt;&lt;/tr&gt;<br/>&lt;/table&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;<br/>几点简要说明：<br/>(1)printf(&quot;Content-Type:text/html&#92;n&#92;n&quot;);<br/>此行通过标准输出将字符串″Contenttype:text/plain&#92;n&#92;n″传送给Web服务器。它是一个MIME头信息,它告诉Web服务器随后的输出是以纯ASCII文本的形式。请注意在这个头信息中有两个换行符,这是因为Web服务器需要在实际的文本信息开始之前先看见一个空行。<br/>(2)data = getenv(&quot;QUERY_STRING&quot;);<br/>CGI定义：当GET方法提交的表单被发送到服务器断后，表单中的数据被保存在服务器上一个叫做QUERY_STRING的环境变量中。这种表单的处理相对简单，只要读取环境变量就可以了。<br/>(3)sscanf(data,&quot;a=%[^&amp;]&amp;b=%s&quot;,a,b)!=2<br/>这个是关于sscanf函数的使用问题，自己可以上网搜索一下，这里不再详述！<br/>(4)atoi(a)+atoi(b)<br/>atoi函数的功能是将字符型成整型，只有转换之后才可以进行加法运算！<br/>(5)lenstr=getenv(&quot;CONTENT_LENGTH&quot;);<br/>Web服务器在调用使用POST方法的CGI程序时设置此环境变量,它的文本值表示Web服务器传送给CGI程序的输入中的字符数目,因此需要使用函数atoi() 将此环境变量的值转换成整数,并赋给变量len(下面有定义)。<br/>(6)fgets(poststr,len+1,stdin);<br/>这个是关于fgets函数的使用问题，自己可以上网搜索一下，这里不再详述！<br/><br/>&lt;form action=&quot;．/cgipost．cgi&quot; method=post&gt;<br/>用户名:&lt;input id=name type=text name=username size=20&gt;<br/>密码:&lt;input id=passwd type=password name=password size=20&gt;<br/>&lt;input type=submit value=&quot;提交&quot;&gt;<br/>&lt;/form&gt;<br/><br/>//cgipost．c --&gt;cgipost．cgi<br/>我的程序:<br/>#include &lt;stdio．h&gt;<br/>#include &lt;stdlib．h&gt;<br/><br/>void PrintHTMLHeader()&#123;<br/>printf(&quot;Content-type: text/html＼n＼n&quot;);<br/>printf(&quot;&lt;html&gt;＼n&quot;);<br/>printf(&quot;&lt;head&gt;&lt;title&gt;CGI GET/POST test&lt;/title&gt;&lt;/head&gt;＼n&quot;);<br/>printf(&quot;&lt;body&gt;＼n&quot;);<br/>&#125;<br/>void PrintHTMLFoot()&#123;<br/>printf(&quot;&lt;/body&gt;＼n&quot;);<br/>printf(&quot;&lt;/html&gt;＼n&quot;);<br/>&#125;<br/>int main()&#123;<br/>PrintHTMLHeader();<br/><br/>char ＊lenstr = getenv(&quot;CONTENT_LENGTH&quot;);<br/>if(lenstr == NULL)<br/>printf(&quot;nothing! &lt;br/&gt;&quot;);<br/>else<br/>printf(&quot;＊lenstr = %s &lt;br/&gt;&quot;,lenstr);<br/><br/>PrintHTMLFoot();<br/>return 0;<br/>&#125;<br/><br/> <br/><br/>本文来源：http://hi.baidu.com/jiaxi2000/blog/item/3b19ad86d2b1c93d66096e1f.html
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] GET与POST示例]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>