| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 303 人关注过本帖, 1 人收藏
标题:foxpro web 开发原理(二)
只看楼主 加入收藏
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:892
专家分:1376
注 册:2021-10-13
结帖率:97.33%
收藏(1)
已结贴  问题点数:20 回复次数:9 
foxpro web 开发原理(二)
上次发帖探讨了一下web开发的原理,很多人感兴趣,那么我们就继续探讨一下。

deepseek 提供的代码,编译后运行有问题,一直报错502.2,deepseek也一直解决不了,没办法,只好上网继续搜索相关内容。

最后,只好退而求其次,找到其他的语言,再设法翻译成foxpro,好在懂一点点visual basic,参考VB代码,改编了foxpro代码,编译运行后果然成功了。。。

现附上代码,以作抛砖引玉之功效:
程序代码:
* CGI处理示例
* 定义 Windows API 常量
#DEFINE STD_INPUT_HANDLE   -10
#DEFINE STD_OUTPUT_HANDLE  -11

* 声明 Windows API
DECLARE Sleep IN kernel32 INTEGER dwMilliseconds
DECLARE INTEGER GetStdHandle IN kernel32 INTEGER nStdHandle
DECLARE INTEGER ReadFile IN kernel32 ;
    INTEGER hFile, ;
    STRING @lpBuffer, ;
    INTEGER nNumberOfBytesToRead, ;
    INTEGER @lpNumberOfBytesRead, ;
    INTEGER lpOverlapped

DECLARE INTEGER WriteFile IN kernel32 ;
    INTEGER hFile, ;
    STRING lpBuffer, ;
    INTEGER nNumberOfBytesToWrite, ;
    INTEGER @lpNumberOfBytesWritten, ;
    INTEGER lpOverlapped

* CGI 环境变量常量
CGI_CONTENT_LENGTH = "CONTENT_LENGTH"

* 主程序
CLEAR
SET TALK OFF
SET CONSOLE OFF

* 获取标准输入输出句柄
hStdIn = GetStdHandle(STD_INPUT_HANDLE)
hStdOut = GetStdHandle(STD_OUTPUT_HANDLE)

* 调试用暂停(如果需要)
* [color=#808080]=Sleep(60000)  && 暂停60秒等待调试器附加[/color]

* 读取POST内容
lcContentLength = GETENV(CGI_CONTENT_LENGTH)
lnContentLength = VAL(lcContentLength)

IF lnContentLength > 0
    * 准备缓冲区
    lcReadBuffer = REPLICATE(CHR(0), lnContentLength)
    lnBytesRead = 0
    
    * 读取输入
    =ReadFile(hStdIn, @lcReadBuffer, lnContentLength, @lnBytesRead, 0)
    lcReadBuffer = LEFT(lcReadBuffer, lnBytesRead)
    
    * 解析参数
    lnPos = AT("=", lcReadBuffer)
    IF lnPos > 0
        lcValue = SUBSTR(lcReadBuffer, lnPos + 1)
    ELSE
        lcValue = lcReadBuffer
    ENDIF
ELSE
    lcValue = ""
ENDIF

* 构建响应
lcResponse = "HTTP/1.0 200 OK" + CHR(13) + CHR(10) + ;
            "Content-Type: text/html" + CHR(13) + CHR(10) + ;
            CHR(13) + CHR(10) + ;
            "Hello World!" + lcValue

* 发送响应
lnBytesWritten = 0
=WriteFile(hStdOut, lcResponse, LEN(lcResponse), @lnBytesWritten, 0)

* 清理
CLEAR DLLS
RETURN


运行后效果如下:
图片附件: 游客没有浏览图片的权限,请 登录注册
收到的鲜花
  • kangss前天 13:07 送鲜花  1朵  
3 天前 20:36
wcx_cc
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:425
专家分:1356
注 册:2015-10-2
收藏
得分:4 
支持!!赞
3 天前 21:21
凝聚双眼
Rank: 2
等 级:论坛游民
帖 子:51
专家分:47
注 册:2023-12-1
收藏
得分:4 
感谢分享,很给力!~
前天 14:28
schtg
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:Usa
等 级:贵宾
威 望:67
帖 子:2007
专家分:4047
注 册:2012-2-29
收藏
得分:4 
谢谢分享!继续支持!
前天 15:40
easyppt
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:358
专家分:866
注 册:2021-11-24
收藏
得分:4 
把代码保存为 sample.fpx 吗,然后IIS如何配置啊
希望分享一下 IIS如何配置

[此贴子已经被作者于2025-5-6 09:23编辑过]

昨天 09:21
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:892
专家分:1376
注 册:2021-10-13
收藏
得分:0 
回复 5楼 easyppt
回复 5楼 easyppt
这个问题问得好,说明你认真思考了

这个程序就是cgi程序,我编译后把它命名为control.exe,保存在服务器的cgi目录,最好把foxpro支持库也复制过去,避免运行错误。

IIS 配置如下:
1,
图片附件: 游客没有浏览图片的权限,请 登录注册

2,
图片附件: 游客没有浏览图片的权限,请 登录注册

3,
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2025-5-6 19:32编辑过]

昨天 10:48
yywx2023
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:11
专家分:4
注 册:2025-4-30
收藏
得分:4 
感谢分享

昨天 11:13
hsfisher
Rank: 1
等 级:新手上路
帖 子:2
专家分:4
注 册:2009-4-26
收藏
得分:4 
赞,感谢分享
昨天 11:51
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:892
专家分:1376
注 册:2021-10-13
收藏
得分:0 
4,
图片附件: 游客没有浏览图片的权限,请 登录注册


sample.fpx是我们自定义的脚本文件,本例子只是为了了解cgi的运行原理,实际上control.exe并没有对sample.fpx进行任何解释,以后我会举例如何对自定义脚本进行解析。。。

[此贴子已经被作者于2025-5-6 20:14编辑过]

昨晚 19:40
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:892
专家分:1376
注 册:2021-10-13
收藏
得分:0 
4,
图片附件: 游客没有浏览图片的权限,请 登录注册
昨晚 19:41
快速回复:foxpro web 开发原理(二)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040640 second(s), 10 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved