用php写一个网页程序,功能是判断服务器上QQ程序运行了多长时间
用计划任务,定时调用这个URL地址。
它是被服务器软件运行的,由服务器软件(例如Apeache,IIS等服务器软件)执行PHP代码(服务器软件调用PHP执行文件)
-----------------------------------------------
PHP的所有应用程序都是通过WEB服务器(如IIS或Apache)和PHP引擎程序解释执行完成的,工作过程:
(1)当用户在浏览器地址中输入要访问的PHP页面文件名,然后回车就会触发这个PHP请求,并将请求传送化支持PHP的WEB服务器。
(2)WEB服务器接受这个请求,并根据其后缀进行判断如果是一个PHP请求,WEB服务器从硬盘或内存中取出用户要访问的PHP应用程序,并将其发送给PHP引擎程序。
(3)PHP引擎程序将会对WEB服务器传送过来的文件从头到尾进行扫描并根据命令从后台读取,处理数据,并动态地生成相应的HTML页面。
(4)PHP引擎将生成HTML页面返回给WEB服务器。WEB服务器再将HTML页面返回给客户端浏览器。
-------------------------------------------------------------------------------------------------------
但是简单就是:
你服务器开了apache,并且配置好服务器
有人访问你的服务器->访问了php文件->apeche执行php文件->把结果反馈给用户
(前提是中间不出错,出错返回错误信息)
怎样写CGIC应用程序
怎样产生图片在CGIC中?
CGI调试特征: 利用捕获
cgic函数参考
cgic变量参考
cgic结果编码参考
cgic快速索引
一般的UNIX系统都支持ANSIC,增加相应的库函数(和相应的h文件)就可以实现CGI。在此我向大家推荐一个用于CGI编程的ANSIC库:cgic。
cgic是用来生成基于CGI的WWW应用程序的C语言函数库,它有以下功能:
*对数据进行语法分析
*接收以GET和PSOT两种方式发送的数据
*把FORM中的不同域连接成连续的串
*为检索FORM数据而提供字符串,整数,浮点以及单项和多项选择功能
*为数字字段提供边界检测
*把CGI环境变量加载到非空的C串中
*为调试而捕捉CGI状态
*提供相对安全的系统调用功能
用一般ANSI C或C++编译器就可以编译cgic程序,不过与通常C程序不同的是,用cgic写的源码其主函数是cgiMain(),而不是通常的main()。cgic的函数库会自动把cgiMain连接到相应的main()上去。
--------------------------------------------------------------------------------
写CGIC程序
Note: 所有的cgic应用程序必须连接cgic.c.
用cgimain()替代main() 必须包含: #include"cgic.h."
基本结构cgictest.c:
int cgiMain() {
#if DEBUG
/* Load a saved CGI scenario if we're debugging */
cgiReadEnvironment("/path/to/capcgi.dat");
#endif
/* Important: we must indicate the type of document */
cgiHeaderContentType("text/html");
/* Now invoke other functions to handle each part of the form */
fprintf(cgiOut, "<HTML><HEAD>\n");
fprintf(cgiOut, "<TITLE>cgic test</TITLE></HEAD>\n"):
fprintf(cgiOut, "<BODY><H1>cgic test</H1>\n");
Name();
Address();
Hungry();
Temperature();
Frogs();
Color();
Flavors();
NonExButtons();
RadioButtons();
fprintf(cgiOut, "</BODY></HTML>\n");
/* This value will be the exit code of the program; 0
generally indicates success among Unix and DOS programs */
return 0;
}
capture
输出标头
cgiHeaderContentType()在输出文挡之前简要说明MIME内型,如 "text/html"。
cgiHeaderStatus()代替输出错误代码 cgiHeaderLocation()代替重新引导至其他页面。在一个独立的应用程序中只能有一个cgiHeader函数。
重点:在cgiHeader函数组中, cgiHeaderContentType(), 在任何向浏览器输出之前被调用. 否则将出错或浏览器不能识别。 cgiOut
接着, cgiMain() 调用不同的函数.当函数结束后,将返回0
处理输入文本
void Name() {
char name[81];
cgiFormStringNoNewlines("name", name, 81);
fprintf(cgiOut, "Name: %s<BR>\n", name);
}
这个函数的功能就是取的并显示由用户输入的name .
处理输出
Important: cgiOut通常相当于stdout
cgiFormString 确保断航
处理单一Checkboxes输入
这个Hungry() function确定用户是否选择"hungry"这个 checkbox:
void Hungry() {
if (cgiFormCheckboxSingle("hungry") == cgiFormSuccess) {
fprintf(cgiOut, "I'm Hungry!<BR>\n");
} else {
fprintf(cgiOut, "I'm Not Hungry!<BR>\n");
}
}
这个函数依靠 cgiFormCheckboxSingle() 确定单一的checkbox 被选择。 cgiFormCheckboxSingle() 接受checkbox名字的属性值,如果存在就返回 cgiFormSuccess,否则返回cgiFormNotFound 如果是多项checkboxes,就用 cgiFormCheckboxMultiple()和cgiFormStringMultiple() 函数.
处理数字输入
Temperature() 返回浮点书的值确保在特定的返回内。
void Temperature() {
double temperature;
cgiFormDoubleBounded("temperature", &temperature, 80.0, 120.0, 98.6);
fprintf(cgiOut, "My temperature is %f.<BR>\n", temperature);
}
依靠cgiFormDoubleBounded()得到数据.第一个数据是返回数据中输入域的名字。最后一个值是用户没有提交时的默认值。
这个函数总是找回在特定返回内合适的值; cgiFormDoubleBounded返回的值被检查确信用户输入的资料在规定范围内, 而不是其他无效的数据。查看 cgiFormDoubleBounded() 更多的资料. 如果限度检查不理想,可以用 cgiFormDouble() 替代.
在整数输入,cgiFormInteger 和 cgiFormIntegerBounded 可以利用. 这些函数的功能类似.
处理单一选择输入
<SELECT> HTML标签被用于向用户提供几个选择. Radio buttons 和checkboxes 椰油这样的用途,大门、能够选择的数量很小时. Color()
char *colors[] = {
"Red",
"Green",
"Blue"
};
void Color() {
int colorChoice;
cgiFormSelectSingle("colors", colors, 3, &colorChoice, 0);
fprintf(cgiOut, "I am: %s<BR>\n", colors[colorChoice]);
}
这个函数确定用户选择了几个选项从<SELECT> 在表但的列表. cgiFormSelectSingle()
cgiFormSelectSingle() 总是显示合理的选项值.
radio button也可以用这个函数.另外还有 cgiFormRadio(), 也是一样的
处理多项选择的输入
NonExButtons()
char *votes[] = {
"A",
"B",
"C",
"D"
};
void NonExButtons() {
int voteChoices[4];
int i;
int result;
int invalid;
char **responses;
/* Method #1: check for valid votes. This is a good idea,
since votes for nonexistent candidates should probably
be discounted... */
fprintf(cgiOut, "Votes (method 1):<BR>\n");
result = cgiFormCheckboxMultiple("vote", votes, 4,
voteChoices, &invalid);
if (result == cgiFormNotFound) {
fprintf(cgiOut, "I hate them all!<p>\n");
} else {
fprintf(cgiOut, "My preferred candidates are:\n");
fprintf(cgiOut, "<ul>\n");
for (i=0; (i < 4); i++) {
if (voteChoices[i]) {
fprintf(cgiOut, "<li>%s\n", votes[i]);
}
}
fprintf(cgiOut, "</ul>\n");
}
参考cgiFormCheckboxMultiple(), cgiFormSelectMultiple().
cgiFormCheckboxMultiple() cgiFormCheckboxMultiple
NonExButtons() 函数在 cgictest.c:
/* Method #2: get all the names voted for and trust them.
This is good if the form will change more often
than the code and invented responses are not a danger
or can be checked in some other way. */
fprintf(cgiOut, "Votes (method 2):<BR>\n");
result = cgiFormStringMultiple("vote", &responses);
if (result == cgiFormNotFound) {
fprintf(cgiOut, "I hate them all!<p>\n");
} else {
int i = 0;
fprintf(cgiOut, "My preferred candidates are:\n");
fprintf(cgiOut, "<ul>\n");
while (responses[i]) {
fprintf(cgiOut, "<li>%s\n", responses[i]);
i++;
}
fprintf(cgiOut, "</ul>\n");
}
/* We must be sure to free the string array or a memory
leak will occur. Simply calling free() would free
the array but not the individual strings. The
function cgiStringArrayFree() does the job completely. */
cgiStringArrayFree(responses);
}
参考cgiFormStringMultiple()
cgiFormStringMultiple()
/* An array of strings; each C string is an array of characters */
char **responses;
cgiFormStringMultiple("vote", &responses);
检查CGI环境变量
将用到的变量 这里,
产生图象
#include "cgic.h"
#include "gd.h"
char *colors[] = {
"red", "green", "blue"
};
#define colorsTotal 3
int cgiMain() {
int colorChosen;
gdImagePtr im;
int r, g, b;
/* Use gd to create an image */
im = gdImageCreate(64, 64);
r = gdImageColorAllocate(im, 255, 0, 0);
g = gdImageColorAllocate(im, 0, 255, 0);
b = gdImageColorAllocate(im, 0, 0, 255);
/* Now use cgic to find out what color the user requested */
cgiFormSelectSingle("color", 3, &colorChosen, 0);
/* Now fill with the desired color */
switch(colorChosen) {
case 0:
gdImageFill(im, 32, 32, r);
break;
case 1:
gdImageFill(im, 32, 32, g);
break;
case 2:
gdImageFill(im, 32, 32, b);
break;
}
/* Now output the image. Note the content type! */
cgiHeaderContentType("image/gif");
/* Send the image to cgiOut */
gdImageGif(im, cgiOut);
/* Free the gd image */
gdImageDestroy(im);
return 0;
}
为调试而捕捉CGI状态
cgic函数参考
cgiFormResultType cgiFormString( char *name, char *result, int max)
用于从输入域中copy字符串。他将域名max-1字节中的字符copy到缓冲区result。若域不存在,则copy一个空串到result缓冲区。在此函数中所有的新行由换行符代表。
cgiFormResultType cgiFormStringNoNewlines( char *name, char *result, int max)
它与cgiFormString函数相似,只是所有的CR和LF都被去掉了。
cgiFormResultType cgiFormStringSpaceNeeded( char *name, int *length)
它返回指向name的字符串的长度,并将长度放入length中。
cgiFormResultType cgiFormStringMultiple( char *name, char ***ptrToStringArray)
若同一名字有多个输入域,或域中的字符串可以动态变化,那么你可以使用本函数。它把名为name的所有输入域的值放在prtToStringArray中。
void cgiStringArrayFree(char **stringArray)
它释放了分配给stringArray的内存。
cgiFormResultType cgiFormInteger( char *name, int *result, int defaultV)
从输入域中取出整数放入result中。
cgiFormResultType cgiFormIntegerBounded( char *name, int *result, int min, int max, int defaultV)
若输入域中的整数在界限内则取出并放入result中。
cgiFormResultType cgiFormDouble( char *name, double *result, double defaultV)
从输入域中取出浮点数放入result中。
cgiFormResultType cgiFormDoubleBounded( char *name, double *result, double min, double max, double defaultV)
若输入域中的浮点数在界限内则取出并放入result中。
cgiFormResultType cgiFormSelectSingle( char *name, char **choicesText, int choicesTotal, int *result, int defaultV)
取出复选框(跟在select语句之后的),把选择的名字copy到choicesText,把选择的个数copy到choicesTotal,把当前的选择copy到result。
cgiFormResultType cgiFormSelectMultiple( char *name, char **choicesText, int choicesTotal, int *result, int *invalid)
与cgiFormSelectSingle类似,只指向整型数组的result代表了选择的项。
cgiFormResultType cgiFormCheckboxSingle( char *name)
若复选框被选中,则函数返回cgiFormSuccess,否则返回cgiFormNotFound。
cgiFormResultType cgiFormCheckboxMultiple( char *name, char **valuesText, int valuesTotal, int *result, int *invalid)
与cgiFormCheckboxSingle类似,但它处理同一名字有多个复选框的情况。name指向复选框的名字;valuesText指向包含有每个复选框中参数的一个数组;valuesTotal指向复选框的总数;result是一个整型数组,每个复选框选中的用1代表,没选中的用0代表。
cgiFormResultType cgiFormRadio( char *name, char **valuesText, int valuesTotal, int *result, int defaultV)
与cgiFormCheckboxMultiple相似,只是这里是单选按钮而不是复选框。
void cgiHeaderLocation(char *redirectUrl)
重定向到redirectUrl指定的URL。
void cgiHeaderStatus(int status, char *statusMessage)
输出状态代码status和消息statusMessage。
void cgiHeaderContentType(char *mimeType)
用于告知浏览器返回的是什么类型的文档。
cgiEnvironmentResultType cgiWriteEnvironment(char *filename)
本函数把当前CGI环境写入filename文件中以便以后调试时使用
cgiEnvironmentResultType cgiReadEnvironment(char *filename)
本函数从filename文件中读取CGI环境以便用来调试。
int cgiMain()
一个程序必须要写这个函数, 这是主程序开始之处。
cgic变量参考
This section provides a reference guide to the various global variables provided by cgic for the programmer to utilize. These variables should always be used in preference to stdin, stdout, and calls to getenv() in order to ensure compatibility with the cgic CGI debugging features.
大多数的变量相当于各种CGI变量,重要的是VGIC的变量不能为空.
char *cgiServerSoftware
服务器软件名称,或者一个空的字符串 or to an empty string if unknown.
char *cgiServerName
返回服务器名称或空
char *cgiGatewayInterface
网关接口 (通常是 CGI/1.1),或空
char *cgiServerProtocol
网络协议(usually HTTP/1.0),或空
char *cgiServerPort
服务器端口(usually 80),或空
char *cgiRequestMethod
请求方式 (usually GET or POST),或空
char *cgiPathInfo
指出附加虚拟路径
char *cgiPathTranslated
指出附加虚拟路径并由服务器转为本地路径
char *cgiScriptName
调用程序的名字
char *cgiQueryString
包含 GET-method 请求或者 <ISINDEX> 标签. 这个信息不需要解吸,除非用<ISINDEX>标签通常由CGIC函数库自动解析。
char *cgiRemoteHost
从浏览器返回客户主机的名字
char *cgiRemoteAddr
从浏览器返回客户的IP地址
char *cgiAuthType
返回用户授权信息
char *cgiRemoteUser
鉴别用户 cgiAuthType.
char *cgiRemoteIdent
返回用户的名字(用户通过用户坚定协议)这个消息是不安全的,特别是Windows系统。
char *cgiContentType
返回MIME内型
char *cgiAccept
参考 cgiHeaderContentType() cgiUserAgent
char *cgiUserAgent
取的用户浏览器信息
char *cgiReferrer
指向用户访问的URL.
int cgiContentLength
表单或查询数据的字节被认为是标准的.
FILE *cgiOut
CGI输出. cgiHeader函数,象cgiHeaderContentType, 首先被用于输出mime头; 用于 fprintf() 和fwrite(). cgiOut通常相当于stdout。
FILE *cgiIn
CGI输入. 在决大部分时间你都不会需要这个函数。
cgic结果编码参考
在大量的按列中, cgic函数有计划的产生合理的结果,甚至浏览器和用户不合理时。无论如何, 有时候知道不合理的事情发生,尤其赋予一个值或定义一个范围是一个不充分的解决方案。下面的这些结果编码有助更好了解。
cgiFormSuccess
提交信息成功
cgiFormTruncated
删除部分字节.
cgiFormBadType
错误的输入信息(没有按要求)
cgiFormEmpty
提交信息为空.
cgiFormNotFound
提交信息没有找到.
cgiFormConstrained
数字属于某个特定的范围,被迫低于或高于适当范围。
cgiFormNoSuchChoice
单一选择提交的值是不被接受。通常说明表但和程序之间存在矛盾。
cgiEnvironmentIO
从CGI环境或获取的文件读或写的企图失败,报出I/O的错误。
cgiEnvironmentMemory
从CGI环境或获取的文件读或写的企图失败,报出out-of-memory的错误。
cgiEnvironmentSuccess
从CGI环境或获取的文件读或写的企图成功。
cgic快速索引
哈哈
我 也 不会!!!
我有啊,怎么联系啊?
用php写一个网页程序,功能是判断服务器上QQ程序运行了多长时间_百度知 ...
这个函数确定用户选择了几个选项从<SELECT> 在表但的列表. cgiFormSelectSingle() cgiFormSelectSingle() 总是显示合理的选项值. radio button也可以用这个函数.另外还有 cgiFormRadio(), 也是一样的 处理多项选择的输入 NonExButtons() char *votes[] = { "A", "B", "C", "D" }; void NonExButtons...
怎么用php做网站 如何在HTML中利用php
首先你要明确的是,html是前端,负责制作网站的前端页面,所谓的前端就是你现在看到的百度知道的页面,这就是前端html+css+js写出来的。而php是一个网站的后端,也就是实现我们能够在百度知道 里面发表问题,回答问题等一系列功能的后端语言。从你问的问题能看出你应该是个初学者,我给你举个实例的代码...
php写的一个网页计算机小程序,点计算结果网页无法显示。。代码下图...
尽量不要用$_REQUEST 改用 $_POST,网页打不开要检查result.php是不是放在mycal.php同一个目录里面。
PHP网络编程的代码怎么写?
\/\/echo gethostbyname("www.baidu.com");host = "111.13.100.92"; \/\/设置基本信息 port = 65530;set_time_limit(0); \/\/设置超时时间 \/\/创建一个socket socket = socket_create(AF_INET,SOCK_STREAM,0) or die("不能建立socket链接!n");\/\/绑定Socket到端口 result = socket_bind($socket...
php开发网站流程
从何做起就是看你要实现哪些功能了:比如网站要实现用户功能,就必须要有用户管理系统,你要实现比如:用户注册,权限分类,登录等一系列功能,新闻发布系统要实现添加,删除,修改等等等。。。等你把网站需要的功能都实现了,网站基本上也做好了。。。然后表现到前端页面网站也就完成了。。。当然还要测试...
用PHP编写一个网页计数程序,页面每刷新一次访问量加1⃣️
建一个数据表 create talbe count(total int not null default 0 comment '计数数量')engine=engine charset=utf8;链接数据库 取出total的值 每次刷新页面将数据加1 将total放回数据库
简单PHP网页编程
src="http:\/\/stock.quote.stockstar.com\/info\/comment_'+v+'.shtml">'; document.getElementById('show').innerHTML=s;}CODE:111
php动态网站开发是什么
服务器端编程:使用PHP编写服务器端的代码,实现与数据库的交互、数据处理和业务逻辑。数据库设计与管理:根据网站需求设计数据库结构,并使用SQL语言进行数据的存取和管理。测试和调试:对网站进行功能测试、性能测试和安全漏洞检测,修复bug和优化代码。部署和上线:将开发完成的网站部署到Web服务器上,并...
怎么用php做网站
php语言做网站就是用php代码做网站后台程序。网站框架就等于个网站模板,里面的程序都写好了,只需你修改一下,网站就变成你的了。你也可以利用它进行二次开发,这个你可以搜一搜php框架,网上挺多的。CSS是网页设计里的内容,要做出一个外观漂亮的网站,对于框架使用者来说,学CSS还是很必要的。
PHP在网站开发上还有前途吗?
◎可伸缩性:传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP就可以以这种方式安装,虽然很少有人愿意这样以CGI方式安装它。内嵌的PHP...
爱紫仁平: $arr=array($url1,$url2,$url3);$Num=count($arr); for($i=0;$i if(!fopen($arr[$i],'r')){ echo $arr[$i],'无效'; } } 用fopen('','r')为了提高速度
盘县15320852564: 用php制作一个网站 - ?
爱紫仁平: 独立完成^^ 我想一个网站就是普通的HTML就可以了吧,至于PHP可以用来检查用户啊,存储数据之类的. 这个,首先你得做得出一个普通HTML的网页.现在比较流行的是DIV CSS设计了.你能随便看到一个网页,就可以把这个网页的HTML...
盘县15320852564: 怎么利用PHP代码实现网页自动判断转向?
爱紫仁平: 用户可接受的语言信息,放在$_SERVER['HTTP_ACCEPT_LANGUAGE']里,变量信息是类似这样的 "zh-cn", 如果是多语言列,是类似 "zh-cn,en;q=0.8,ko;q=0.5,zh-tw;q=0.3" 下面的问题可以迎刃而解了. 代码: <?php error_reporting(E_...
盘县15320852564: 【PHP】laravel怎么判断用户是否访问某个页面 - ?
爱紫仁平: 用session就可以实现你想要的功能.当用户打开页面时,判断session,如果不存在则设置session.然后在判断用户是否访问过某个页面时只需要判断session值是否存在即可.代码片段如下:if(!isset($_SESSION['filename'])){ $_SESSION['filename']=$uid; }//这是添加用户访问记录的代码,filename为当前php文件名,$uid为用户id,也可以是其他值.根据自己需要定//以下是判断用户是否访问过哪个页面,假设判断用户是否访问 A 页面 if(isset($_SESSION['A'])){ //用户访问过A页面 }else{ //用户没有访问过A页面 }
盘县15320852564: 请教:php中如何插入一个按钮在该页执行条件判断并返回判断结果 - ?
爱紫仁平: 正如楼上所说的,php作为后台语言无法直接实现你的要求,除非你点击按钮提交到本页面进行判断,但是这样又不符合你的需要.ajax看起来复杂,其实也很简单,如果只是实现一个验证,可以采用jquery框架.你只需要调用jquery的...
盘县15320852564: php页面判断自动跳转一次代码的编写?
爱紫仁平: 楼上的有问题,如果我的web服务器是多台,做了负载均衡,你用session怎么实现.session说白了就是服务器端的文件.所以在这个例子中还是用客户端的cookie来实现比较好. 当用户访问zhuce.php时,判断一个cookie是否存在,如果存在就...
盘县15320852564: 怎样用php做一个网站的登录注册 - ?
爱紫仁平: 注册:用html做一个表单,提交给php,php收到提交过来的数据后判断用户名是否存在,不存在就执行插入. 登录:用html做一个表单,输入的用户名密码提交给php,php收到数据后判断数据库里有没有这个用户,有的话就保存成cookie和session. 需要登录才能访问的页面进行判断session,如果存在代表已经登录了.
盘县15320852564: 求:php判断普通访客于搜索引擎蜘蛛代码,并根据来访用户给出不同代码 - ?
爱紫仁平: // 下面是一些常见的蜘蛛名$flag = false;$tmp = $_SERVER['HTTP_USER_AGENT']; if(strpos($tmp, 'Googlebot') !== false){ $flag = true; } else if(strpos($tmp, 'Baiduspider') >0){ $flag = true; } else if(strpos($tmp, 'Yahoo! Slurp') !== false){ $flag = true; ...
盘县15320852564: 利用PHP语言编写一个动态网页程序,实现一个独立功能 请不要在百度其他地方粘贴过来 否则不会给分的 - ?
爱紫仁平: 代码52行,包括排序、计算平均数、求最大值,还有打印一个简单的三角形功能. <?php if($_POST) {$s=trim($_POST['nums']);$a=explode(',',$s);if($_POST['sub1']){sort($a);echo "排序后的序列是:".join(',',$a);}elseif($_POST['sub2']) ...
盘县15320852564: php ,例如打开一个百度网页,里面有个“知道”这个字眼,然后配对输出,判断存在这个字眼,怎么做? - ?
爱紫仁平: <?php$a=strstr("我的知道到有没有","知道");if($a){echo "有";}else{echo...