<?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[[CGI学习]C/C++编写CGI程序之form处理]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Mon, 20 Aug 2007 13:20:18 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	C/C++编写CGI程序之form处理<br/> <br/> <br/> <br/><br/>1. GET<br/>2. POST<br/>3. 结束<br/><br/><br/>我们有一张web<br/>test.html<br/><br/><br/><div class="code">&lt;html&gt;<br/>&lt;head&gt;<br/>&lt;title&gt;form test&lt;/title&gt;<br/>&lt;/head&gt;<br/>&lt;body&gt;<br/>&lt;form method=&quot;get&quot; name=&quot;test-get&quot; action=&quot;./cgi-bin/test-get.cgi&quot;&gt;<br/>&lt;input name=&quot;name&quot;&gt;&lt;input name=&quot;pswd&quot;&gt;&lt;input type=submit value=&quot;get&quot;&gt;<br/>&lt;/form&gt;<br/>&lt;br&gt;&lt;br&gt;<br/>&lt;form method=&quot;post&quot; name=&quot;test-post&quot; action=&quot;./cgi-bin/test-post.cgi&quot;&gt;<br/>&lt;input name=&quot;name&quot;&gt;&lt;input name=&quot;pswd&quot;&gt;&lt;input type=submit value=&quot;post&quot;&gt;<br/>&lt;/form&gt;<br/>&lt;/body&gt;<br/>&lt;/html&gt;</div><br/> <br/><br/><br/>1. GET<br/><br/>首先我们来获取GET方式的form<br/>在环境变量QUERY_STRING里面，存储着GET提交的字符串<br/>cgi-get.c<br/><br/><br/><div class="code">#include &lt;stdio.h&gt;<br/>#include &lt;stdlib.h&gt;<br/><br/>int main( void )<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf( stdout, &quot;Content-type:text/html&#92;n&#92;n&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf( stdout, &quot;&lt;html&gt;&lt;title&gt;get&lt;/title&gt;&#92;n&quot;); <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if( getenv(&quot;QUERY_STRING&quot; ) )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf( stdout, getenv(&quot;QUERY_STRING&quot; ) );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf( stdout, &quot;(NULL)&#92;n&quot; );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf( stdout, &quot;&lt;/html&gt;&#92;n&quot; );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br/>&#125;;</div><br/> <br/><br/><br/>编译后，复制到cgi-bin目录下，名为test-get.cgi，确保apache用户拥有执行权限<br/>然后登陆test.html，填写dorainm和linux测试get提交方式，获得<br/><br/>name=dorainm&amp;pswd=linux <br/><br/><br/><br/>2. POST<br/><br/>POST是通过标准输入来获取form提交的字符串的<br/>环境变量CONTENT_LENGTH里面，存储着POST提交的字符串的长度<br/>看 test-post.c 的源码<br/><br/><br/><div class="code">#include &lt;stdio.h&gt;<br/>#include &lt;stdlib.h&gt;<br/><br/>int main( void )<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int i, n;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf( stdout, &quot;Content-type:text/html&#92;n&#92;n&quot; );<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf( stdout, &quot;&lt;html&gt;&lt;title&gt;post&lt;/title&gt;&quot; );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if( getenv(&quot;CONTENT_LENGTH&quot;) )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n = atoi( getenv(&quot;CONTENT_LENGTH&quot;) );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf( stdout, &quot;(NULL)&quot; );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for( i=0; i&lt;n; i++ )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fputc( getc(stdin), stdout );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf( stdout, &quot;&#92;n&lt;/html&gt;&#92;n&quot; );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br/>&#125;</div><br/> <br/><br/>同样，编译后复制到cgi-bin目录下，名为test-post.cgi<br/>测试以POST方式提交guaicat和gnu，可以看到<br/><br/>name=guaicat&amp;pswd=gnu <br/><br/><br/><br/>3. 结束<br/><br/>今天头非常痛，文字描述比较少，大家看代码<br/>哪天有时间写个C++的CGI的类或者C语言CGI库吧<br/> <br/> <br/>
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [CGI学习]C/C++编写CGI程序之form处理]]></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>