技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 371|回复: 3
收起左侧

从“WINDOWS开发”到“WEB开发”[1]:编写一个简单的PHP程序并在VBS脚本和C程序里调用

[复制链接]

34

主题

133

帖子

6948

积分

用户组: 管理员

UID
77
精华
11
威望
112 点
宅币
6407 个
贡献
129 次
宅之契约
0 份
在线时间
91 小时
注册时间
2014-2-22
发表于 2018-1-4 17:31:38 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有帐号?立即注册→加入我们

x

首先把以下代码保存到:C:\Apache24\htdocs\index.php。
它的功能很简单,先把三个数字相加并输出结果,然后把传入的三个数字保存到LOG文件。简单来说,就是个带历史纪录的网页加法计算器。
[PHP] 纯文本查看 复制代码
<?php
$result = $_POST["v1"] + $_POST["v2"] + $_POST["v3"];
echo "result = " . $result . "<br>\r\n";
$now = getdate();
if(is_dir("log") === false)
{
    mkdir("log");
}
$fp = fopen("log\\" . $now[0] . ".txt","w");
fprintf($fp, "%s\r\n", $_POST["v1"]);
fprintf($fp, "%s\r\n", $_POST["v2"]);
fprintf($fp, "%s\r\n", $_POST["v3"]);
fclose($fp);
?>
<form method = "post" action="index.php" name="asd">
<input type="text" name="v1" value="111"></input><br>
<input type="text" name="v2" value="222"></input><br>
<input type="text" name="v3" value="333"></input><br>
<input type="submit" value="Submit">
</form>

直接测试很简单,打开任意浏览器,输入localhost并回车,就能看到效果了。而我的目的并不是用手动调用,而是使用程序来调用。
下面直接给出VBS和C语言程序调用的源码(本质上就是组HTTP请求报文,然后得到HTTP响应报文)。源码没有注释,如果不懂请查阅MSDN,毕竟这篇文章针对的不是纯小白,而是WINDOWS开发的老司机。
  1. sUrl = "http://localhost/index.php"
  2. sRequest = "v1=111&v2=222&v3=333"
  3. msgbox HTTPPost(sUrl, sRequest)
  4. Function HTTPPost(sUrl, sRequest)
  5.         set oHTTP = CreateObject("Microsoft.XMLHTTP")
  6.         oHTTP.open "POST", sUrl, false
  7.         oHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  8.         oHTTP.setRequestHeader "Content-Length", Len(sRequest)
  9.         oHTTP.send sRequest
  10.         HTTPPost = oHTTP.responseText
  11. End Function
复制代码
游客,如果您要查看本帖隐藏内容请回复
这两段程序得到的内容略有不同。VBS程序得到的内容只有网页的HTML代码,而C程序得到的内容还包括HTTP响应头。

1008

主题

2235

帖子

5万

积分

用户组: 管理员

一只技术宅

UID
1
精华
200
威望
265 点
宅币
16762 个
贡献
33385 次
宅之契约
0 份
在线时间
1598 小时
注册时间
2014-1-26
发表于 2018-1-4 17:39:22 | 显示全部楼层
竟然写缩进拳!

我推荐在判断到错误的时候goto到一个固定的位置,然后统一处理错误。
缩进拳还是比较坑爹的。

另外我建议不用puts报错,因为它会把错误输出到stdout。建议用fputs把错误输出到stderr。

0

主题

6

帖子

23

积分

用户组: 初·技术宅

UID
3104
精华
0
威望
0 点
宅币
17 个
贡献
0 次
宅之契约
0 份
在线时间
8 小时
注册时间
2017-11-18
发表于 2018-1-6 08:03:49 | 显示全部楼层
个简单的PHP程序并在VBS脚本

评分

参与人数 1威望 -2 宅币 -2 收起 理由
0xAA55 -2 -2 水帖惩罚

查看全部评分

0

主题

2

帖子

21

积分

用户组: 初·技术宅

UID
3312
精华
0
威望
2 点
宅币
15 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2018-1-6
发表于 2018-1-6 17:06:56 | 显示全部楼层
看看 谢谢  

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号|网站地图

GMT+8, 2018-11-21 15:54 , Processed in 0.081810 second(s), 19 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表