姓名
<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中的内容吗?谢谢
16 个解决方案
#1
当然不可以,一定要在<form> </form>之间的才可以提交。
#2
你可以改成这样:
<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
<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
#3
谢谢两位的帮助,刚开始写cgi,有些是比较弱智的问题,可还找不出来,呵呵
我用的cgic的库,挺方便的。
csp2bin我试过,可解压make后,启动csp2bin提示权限不够,我是root登录的,怎么还不够???
稍后揭帖。
我用的cgic的库,挺方便的。
csp2bin我试过,可解压make后,启动csp2bin提示权限不够,我是root登录的,怎么还不够???
稍后揭帖。
#4
这个问题我也遇到过, 后来发现 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 下的使用方法差不多
祝你好运!
这个压缩包在 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 下的使用方法差不多
祝你好运!
#5
非常感谢yangyouyi(yangyouyi)和haolee(haohao)的帮助。
不过我用的是cgic库,很方便的,没有用csp。
http://www.boutell.com/cgic/
我照haolee(haohao)的方法做了,但运行./demo.unix时却提示没有/bin/donemap.unix这个文件及文件夹,可bin中有这个文件啊,权限也改了,可以运行的。为什么会有这样的问题呢?
不过我用的是cgic库,很方便的,没有用csp。
http://www.boutell.com/cgic/
我照haolee(haohao)的方法做了,但运行./demo.unix时却提示没有/bin/donemap.unix这个文件及文件夹,可bin中有这个文件啊,权限也改了,可以运行的。为什么会有这样的问题呢?
#6
linux下apache的权限是nobody,不是root,建议需要用到system之类的命令就别在cgi里面写,自己写个守护进程来做。如果非要把apache改成root,可以找找以前的资料,记得以前我好像写过,不过找不到,建议还是别改,很危险。
#7
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>
======================================================
非常报歉, 昨天的输入错了一个字符(应该是大写的"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>
======================================================
#8
关于 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的朋友也是一个很不错的参考.
关于 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的朋友也是一个很不错的参考.
#9
我从新做了,但运行./demo.unix时却还是提示:没有/bin/donemap.unix这个文件或文件夹
郁闷……
不过我用cgic的库,很好用的
希望能把这个问题解决了。
郁闷……
不过我用cgic的库,很好用的
希望能把这个问题解决了。
#10
能把你你命令行输入和错误信息帖出来吗?
上面帖的那段 bash 脚本也不行吗? 如果不行,请把显示的结果帖出吧.
上面帖的那段 bash 脚本也不行吗? 如果不行,请把显示的结果帖出吧.
#11
好的
我在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还是这个有错误,我自己手加上去的
我再看看这个是怎么回事。
我在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还是这个有错误,我自己手加上去的
我再看看这个是怎么回事。
#12
是的, 从结果上看是因为 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!
环境变量你可以这样试着加入:
打开当前用户的 .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!
#13
haolee(haohao) 喜欢你这样的感受。cgi(c)给我最大的感觉就是从头到尾都尽在掌握之中。如果你不怕麻烦想怎么弄都行:)
#14
好的,十分感谢haolee的耐心解答,我会解决的。
再次感谢yangyouyi(yangyouyi) ,haolee(haohao) ,limlzm(凡叶)的帮助
再次感谢yangyouyi(yangyouyi) ,haolee(haohao) ,limlzm(凡叶)的帮助
#15
我现在用的是cgic库
但再学习csp过程中或许还有很多问题,麻烦大家了,希望不鄙赐教。
呵呵
但再学习csp过程中或许还有很多问题,麻烦大家了,希望不鄙赐教。
呵呵
#16
我明明已经揭帖给过分了,在管理中能看到给的分数,可浏览就看不到了,怎么回事啊
#1
当然不可以,一定要在<form> </form>之间的才可以提交。
#2
你可以改成这样:
<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
<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
#3
谢谢两位的帮助,刚开始写cgi,有些是比较弱智的问题,可还找不出来,呵呵
我用的cgic的库,挺方便的。
csp2bin我试过,可解压make后,启动csp2bin提示权限不够,我是root登录的,怎么还不够???
稍后揭帖。
我用的cgic的库,挺方便的。
csp2bin我试过,可解压make后,启动csp2bin提示权限不够,我是root登录的,怎么还不够???
稍后揭帖。
#4
这个问题我也遇到过, 后来发现 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 下的使用方法差不多
祝你好运!
这个压缩包在 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 下的使用方法差不多
祝你好运!
#5
非常感谢yangyouyi(yangyouyi)和haolee(haohao)的帮助。
不过我用的是cgic库,很方便的,没有用csp。
http://www.boutell.com/cgic/
我照haolee(haohao)的方法做了,但运行./demo.unix时却提示没有/bin/donemap.unix这个文件及文件夹,可bin中有这个文件啊,权限也改了,可以运行的。为什么会有这样的问题呢?
不过我用的是cgic库,很方便的,没有用csp。
http://www.boutell.com/cgic/
我照haolee(haohao)的方法做了,但运行./demo.unix时却提示没有/bin/donemap.unix这个文件及文件夹,可bin中有这个文件啊,权限也改了,可以运行的。为什么会有这样的问题呢?
#6
linux下apache的权限是nobody,不是root,建议需要用到system之类的命令就别在cgi里面写,自己写个守护进程来做。如果非要把apache改成root,可以找找以前的资料,记得以前我好像写过,不过找不到,建议还是别改,很危险。
#7
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>
======================================================
非常报歉, 昨天的输入错了一个字符(应该是大写的"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>
======================================================
#8
关于 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的朋友也是一个很不错的参考.
关于 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的朋友也是一个很不错的参考.
#9
我从新做了,但运行./demo.unix时却还是提示:没有/bin/donemap.unix这个文件或文件夹
郁闷……
不过我用cgic的库,很好用的
希望能把这个问题解决了。
郁闷……
不过我用cgic的库,很好用的
希望能把这个问题解决了。
#10
能把你你命令行输入和错误信息帖出来吗?
上面帖的那段 bash 脚本也不行吗? 如果不行,请把显示的结果帖出吧.
上面帖的那段 bash 脚本也不行吗? 如果不行,请把显示的结果帖出吧.
#11
好的
我在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还是这个有错误,我自己手加上去的
我再看看这个是怎么回事。
我在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还是这个有错误,我自己手加上去的
我再看看这个是怎么回事。
#12
是的, 从结果上看是因为 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!
环境变量你可以这样试着加入:
打开当前用户的 .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!
#13
haolee(haohao) 喜欢你这样的感受。cgi(c)给我最大的感觉就是从头到尾都尽在掌握之中。如果你不怕麻烦想怎么弄都行:)
#14
好的,十分感谢haolee的耐心解答,我会解决的。
再次感谢yangyouyi(yangyouyi) ,haolee(haohao) ,limlzm(凡叶)的帮助
再次感谢yangyouyi(yangyouyi) ,haolee(haohao) ,limlzm(凡叶)的帮助
#15
我现在用的是cgic库
但再学习csp过程中或许还有很多问题,麻烦大家了,希望不鄙赐教。
呵呵
但再学习csp过程中或许还有很多问题,麻烦大家了,希望不鄙赐教。
呵呵
#16
我明明已经揭帖给过分了,在管理中能看到给的分数,可浏览就看不到了,怎么回事啊