CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  CGI

在网页中如何加入调用c写的cgi程序?

楼主hall919(elc_hall)2006-03-07 16:15:51 在 Web 开发 / CGI 提问

<label>  
    姓名  
    <input   name="name"   type="text"   id="name">  
  </label>  
  <p   align="center"> </p>  
  <form   name="saveenvironment"   method="post"   action="/cgi-bin/newcgitest.cgi">  
      <label>  
      <input   type="submit"   name="saveenvironment"   value="保存环境变量">  
      </label>  
  </form>  
  </body>  
     
   
      这样可以提交text中的内容吗?谢谢 问题点数:20、回复次数:16Top

1 楼yangyouyi(yangyouyi)回复于 2006-03-07 16:42:39 得分 5

当然不可以,一定要在<form>     </form>之间的才可以提交。Top

2 楼haolee(haohao)回复于 2006-03-07 22:08:00 得分 10

你可以改成这样:  
  <form   method="post"   action="/cgi-bin/newcgitest.cgi">  
      姓名  
      <input   name="name"   type="text"   id="name">  
      <input   type="submit"   name="saveenvironment"   value="保存环境变量">  
  </form>  
   
  CGI   程序("/cgi-bin/newcgitest.cgi")可以类似下面的   CSP   代码:    
   
  <html>  
  <body>  
  你输入的是:   <%   getParameter("text")   %>  
  <body>  
  </html>  
   
  用工具   csp2bin   可以将上面的代码轻松转化成   C   代码.  
  用   C   写   CGI   就要到   http://www.eybuild.com   看看.  
  中文手册:   http://www.eybuild.com/develop/doc/manual/eyBuild_manual_ch.pdf  
   
  Top

3 楼hall919(elc_hall)回复于 2006-03-08 11:41:22 得分 0

谢谢两位的帮助,刚开始写cgi,有些是比较弱智的问题,可还找不出来,呵呵  
  我用的cgic的库,挺方便的。  
    csp2bin我试过,可解压make后,启动csp2bin提示权限不够,我是root登录的,怎么还不够???  
      稍后揭帖。Top

4 楼haolee(haohao)回复于 2006-03-08 15:22:36 得分 0

这个问题我也遇到过,   后来发现   bin目录中的csp2bin的执行权限没有设置,   除此以外还有bin/web2bin,   bin/donempa.unix,   demo/demo.unix  
   
  这个压缩包在   windows上也能用,   我猜可能的原因是这样的:    
  作者可能是在   Windows   上打的压缩包,   因为这个包是   For   Linux   和   Windows两个平台的,   所以在   Linux   上解开后必须手动改下它们的执行权限.    
   
  你可以按下面的步骤试试:  
  1. 解压到目录,   如   eyBuild  
  2.   eyBuild改变权限    
  chmod   +x   bin/web2bin  
  chmod   +x   bin/csp2bin  
  chmod   +x   bin/donemap.unix  
  chmod   +x   demo/demo.unix  
   
  3. 设置环境变量(Linux可以加到   ~/.bash_profile中,   重新登录后进行下步)  
  EYBUILD_BASE=$HOME/eybuild  
  export   EYBUILD_BASE  
   
  4. 编译   demo   试例  
  cd   demo  
  ./demo.unix  
  make  
   
  demo.unix   脚本里会调用   csp2bin   这个工具  
  在   eybuild   的中文手册里对它有描述,    
  你可看看这个地址   http://www.eybuild.com/develop/doc/manual/eyBuild_manual_ch.pdf  
   
  运行完后你会发现:  
  有个   cspsrc   目录生成,   这里面就是生成的中间   C   文件  
  在一个新的文件   demo.cgi   生成了,   它就是最终执行CGI文件  
   
  Linux   平台下使用方法跟在   Windows   下的使用方法差不多    
   
  祝你好运!Top

5 楼hall919(elc_hall)回复于 2006-03-08 16:32:27 得分 0

非常感谢yangyouyi(yangyouyi)和haolee(haohao)的帮助。    
      不过我用的是cgic库,很方便的,没有用csp。  
      http://www.boutell.com/cgic/  
  我照haolee(haohao)的方法做了,但运行./demo.unix时却提示没有/bin/donemap.unix这个文件及文件夹,可bin中有这个文件啊,权限也改了,可以运行的。为什么会有这样的问题呢?Top

6 楼limlzm(凡叶)回复于 2006-03-08 17:04:32 得分 5

linux下apache的权限是nobody,不是root,建议需要用到system之类的命令就别在cgi里面写,自己写个守护进程来做。如果非要把apache改成root,可以找找以前的资料,记得以前我好像写过,不过找不到,建议还是别改,很危险。Top

7 楼haolee(haohao)回复于 2006-03-09 11:06:33 得分 0

to   elc_hall:  
  非常报歉,   昨天的输入错了一个字符(应该是大写的"B",   因为包解压开时生成的是eyBuild目录)  
        EYBUILD_BASE=$HOME/eybuild   中的   eybuild   改为   eyBuild  
   
  你必须将环境变量   EYBUILD_BASE   正确地设置到你的目录,   当然也可以使用绝对路径,   否则就会引用不到.   或者就直接用下面的脚本,   在   eyBuild-00-07-00.tar.gz   同一目录运行它:  
  #   /bin/bash  
  tar   -xzf   eyBuild-00-07-00.tar.gz  
   
  cd   eyBuild  
  chmod   +x   bin/web2bin  
  chmod   +x   bin/csp2bin  
  chmod   +x   bin/donemap.unix  
  chmod   +x   demo/demo.unix  
   
  EYBUILD_BASE=$PWD  
   
   
  echo   ********   CSP2BIN   AND   COMPILE   *********  
  cd   demo  
  ./demo.unix  
  make  
   
  echo   ********   RUN   DEMO   *********  
  ./demo.cgi  
   
   
  ======================================================  
  你可以在   eyBuild/demo/csp   中发现有两个   .csp   文件,    
  这个例子正是你要的例子:  
   
  *********   main.csp   **********  
  <html>  
  <body>  
  Hello   world.   <img   src="<%   =romPrefix(NULL)   %>/img/face.gif">  
  <BR>  
  <form   action="<%   =cgiPrefix(NULL)   %>/demo/test.csp"   method="post">  
          请在输入:   <input   type="text"   name="inputbox1"><br>  
          <input   type="submit"   name="testit"   value="testit"><br>  
  </form>  
  </body>  
  </html>  
   
  *********   test.csp   **********  
  <html>  
  <body>  
  This   is   in   test.csp<BR>  
  你在文本框输入的内容为:<%   =getParameter("inputbox1")   %><BR>  
  [   <A   href="<%   =cgiPrefix(NULL)   %>/demo/main.csp">返回</A>   ]   <BR>  
  </body>  
  </html>  
   
  ======================================================  
   
   
  Top

8 楼haolee(haohao)回复于 2006-03-09 12:04:53 得分 0

关于   CGI   个人的一点感悟,   如有不妥请高手指点  
   
  关于   cgic,   老早以前我也是用   cgilib   和   cgic   等开发的.   最初的时候还自已写过   cgilib,   改过   w3c   还有debian等的   cgilib.    
   
  它们有共同的缺点就是:   结构复杂,   维护困难.   这一点也就是为什么现在流行的   ASP/JSP/PHP等能取代直接写CGI   程序的原因   (ASP/JSP/PHP   等都是   CGI   的变种).  
   
  我所在领域是嵌入式设备上的开发,   在上面开发WEB管理程序只能用C写CGI,   前面几个项目直接用   cgilib进行开发的,   花了相当大的人力和时间,   结果是换个开发人员几乎无法来维护以前编写的CGI代码.   因为无法在很短的时间内弄清里面的结构,   就是一个子页面里内部也有相当多的数据处理.  
   
  而在这方面   ASP/JSP/PHP   等的处理就相当好,   可以先编写最终要输出的HTML模板,   然后再在其中必要的地方插入相应的   脚本语言,   结构控制非常简单,   无论移植还是.  
   
  CSP   跟   ASP/JSP/PHP   很相似,   就是直接将   C   程序的程序片断插入到   HTML   的模板文件中.   CSP   文件通过   CSP2BIN   的工具翻译成   C   程序文件,   其实最终就是   C   文件啦.   用   CSP   确实是用   C开发   CGI   程序的最好的选择.    
   
  所以最新的一个项目(光纤接入的解决方案的局端和用户端   GEPON-VDSL)   我们选择了用   CSP   开发了.   它的管理页面有上百个,   另外还有图片文件,   JS   文件,   CSS   文件.    
   
  做过嵌入式开发的都知道,   很多设备上文件系统的处理能力都是很有限的,   我们用   CSP   的好搭档   WEB2BIN   工具以及   eybuild提供的其它工具,   就把问题变得异常简单.   最后上百个页面以及相关的图片,   JS文件,   CSS文件全部生成到一个   CGI   文件中了.   管理变得异常简单.  
   
  而我们的开发工作量大大减轻了,   因为我们可以非常容易地将   HTML   代码和   C   代码进行有效地分离了,   而开发人员也有了明显的分工(原来开发   CGI的必须对   HTML/CSS/JS等非常精通).    
   
  另外,   因为   CSP   翻译出来的   C   代码结构还是比较清析地,   个人认为它对想一步步编写   CGI的朋友也是一个很不错的参考.    
  Top

9 楼hall919(elc_hall)回复于 2006-03-09 15:15:22 得分 0

我从新做了,但运行./demo.unix时却还是提示:没有/bin/donemap.unix这个文件或文件夹  
      郁闷……  
    不过我用cgic的库,很好用的  
      希望能把这个问题解决了。Top

10 楼haolee(haohao)回复于 2006-03-09 16:51:41 得分 0

能把你你命令行输入和错误信息帖出来吗?  
  上面帖的那段   bash   脚本也不行吗?   如果不行,请把显示的结果帖出吧.  
  Top

11 楼hall919(elc_hall)回复于 2006-03-09 18:56:11 得分 0

好的  
  我在root/project下解压  
  我把我的命令写成sh,内容:  
  tar   xvzf   eyBuild-00-07-00.tar.gz  
  cd   eyBuild  
  chmod   +x   bin/web2bin  
  chmod   +x   bin/csp2bin  
  chmod   +x   bin/donemap.unix  
  chmod   +x   demo/demo.unix  
   
  EYBUILD_BASE=$PWD  
  export   EYBUILD_BASE  
   
  cd   demo  
  ./demo.unix  
   
  运行到此就提示:/bin/donemap.unix   没有那个文件或文件夹  
    看样子EYBUILD_BASE没有得到环境变量。  
      我把demo.unix中的EYBUILD_BASE直接改为/root/project/eyBuild  
      同时也把bin/donmap.unix中也加上       EYBUILD_BASE=/root/project/eyBuild/bin  
        运行./demo.unix终于成功了。  
    EYBUILD_BASE还是这个有错误,我自己手加上去的    
        我再看看这个是怎么回事。Top

12 楼haolee(haohao)回复于 2006-03-09 20:44:20 得分 0

是的,   从结果上看是因为   EYBUILD_BASE   没有正确设置所致.  
  环境变量你可以这样试着加入:  
   
  打开当前用户的   .base_profile   文件,   如   vi   ~/.base_profile  
  添加上如下两行:  
      EYBUILD_BASE=/root/project/eyBuild/bin  
      export   EYBUILD_BASE  
  保存,   并退出  
  退出   shell   并重新登录一次以确保   ~/.base_profile   中的内容被加载  
  用命令下面这个命令看看EYBUILD_BASE是否被正确设置:    
  set   |   grep   EYBUILD_BASE  
  如果查找到的话,   会显示出结果,   否则不会有结果  
   
  good   luck!  
  Top

13 楼limlzm(凡叶)回复于 2006-03-10 09:30:49 得分 0

haolee(haohao)   喜欢你这样的感受。cgi(c)给我最大的感觉就是从头到尾都尽在掌握之中。如果你不怕麻烦想怎么弄都行:)Top

14 楼hall919(elc_hall)回复于 2006-03-10 09:33:28 得分 0

好的,十分感谢haolee的耐心解答,我会解决的。  
  再次感谢yangyouyi(yangyouyi)   ,haolee(haohao)   ,limlzm(凡叶)的帮助Top

15 楼hall919(elc_hall)回复于 2006-03-10 09:36:19 得分 0

我现在用的是cgic库  
  但再学习csp过程中或许还有很多问题,麻烦大家了,希望不鄙赐教。  
  呵呵Top

16 楼hall919(elc_hall)回复于 2006-03-10 09:44:23 得分 0

我明明已经揭帖给过分了,在管理中能看到给的分数,可浏览就看不到了,怎么回事啊Top

相关问题

  • C调用C#?
  • 急啊~~~~~~~~~~~~网页调用dll是否需要cgi编程?
  • c++调用perl
  • C#调用C++类
  • 用JAVA开发WEB网页中能不能调用c/c++程序(Linux操作系统下)
  • c#资源调用
  • c#资源调用?????????
  • 关于php调用c中的cgi部分
  • 如何在C#编aspx网页中调用选择文件/文件夹对话框?
  • C#调用是否可以调用lib

关键词

  • b2b

得分解答快速导航

  • 帖主:hall919
  • yangyouyi
  • haolee
  • limlzm

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo