C语言也能干大事之开发网站
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
练习
实现登陆表单,带“找回密码”链接。
Web开发原理及 编写原始CGI程序
登录过程分析
打开qq邮箱首页,填入用户名密码(输错),点击【登录】按钮,浏览器将 用户输入的用户名、密码发送给网站服务器,网站服务器让负责处理登录请 求的服务器程序来处理这个登录请求,处理程序判断用户名、密码是否正确 ,然后将判断结果返回给浏览器。 使用工具查看发送、返回报文理解:上网就是从服务器向浏览器传送 html 格 式描述的网页,每次请求都带回来新的页面;页面中的图片、js、css在单独的 请求中;
到别人电脑上访问试试(显摆专用,注意防火墙问题)
#include<windows.h>, Sleep(5000);在进程中可以看到这个cgi的执行
常见错误
如果出现指针造成的严重错误,则网页会卡一会(比如被 0 除)或者出现断言对话框(比如打印未赋值变量),然 后出现500错误。 如果出现“无法打开文件***.cgi”怎么办,比如程序里面 有死循环等长时间运行的代码,打开任务管理器,杀死之 前运行的进程,查找原因。
C语言也能干大事 之 开发网站
如鹏网
学前说明
尽量使用Chrome浏览器,和讲课保持统一,避免浏览器差异性问题。 开发工具讲课用Visual Studio2012,大家用VS2010以上都可以,但是不要再用 VC6了。Visual Studio2012下载地址:百度 or 看笔记。
需要大家有基本的C语言基础(变量、函数、if、for、while等),课程中会详 细讲指针,因此不需要精通指针。
type标签指定输入标签的类型,共有10个值:文本框text、密码框 password、单选框radio、复选框checkbox、隐藏字段hidden、提 交按钮submit、重置按钮reset、按钮button、文件上传file、图像 image.
<SELECT>标签:定义一个选择列表
<select name="city"> <option value="1">北京</option> <option value="2">深圳</option> </select> 注:<option>:定义下拉列表中的选项,属性 selected 没有属性值 加在其中一个子项上,该子项就变成默认被选中项。
超链接标签
<a href="http://www.163.com" target="_blank">网易</a> href:要打开资源的路径,可以是URL,也可以是本地文件。
target:指定在哪个窗口或者帧中打开。有四个值:
• _blank:在一个新开的空白窗口中打开链接 • _parent:在父级窗口中打开
编写第一个CGI程序
VS中新建,一定要选择Visual C++→Win32项目→选择“控制台应用程序”,勾选“空项目” 。在“源文件”上点右键“添加”→“新建项”→“C++”,文件名后缀用“.c”。 #include <stdio.h> int main() {//如果丢了或者少写\r\n\r\n,则会出现500错误 printf("Content-Type:text/html;charset=gbk\r\n\r\n");//结尾一定要是两对"\r\n"
请求(Request)、处理、响应(Response)
我要登录:用户名admin,密码123 网站服务器 登录成功 访问者电脑
判断用户名、密 码是否正确
开发一个网站需要什么
什么叫静态网站?什么叫动态网站? 需要一台Web服务器(网站服务器),Web服务器提供网 络请求处理等,开发者不需要处理底层问题。 需要开发者开发服务器端程序(CGI、Java、ASP.Net), 进行用户业务逻辑的处理。浏览器根据用户的操作向Web 服务器发送“请求”,Web服务器的程序对浏览器的“请 求”进行“处理”,然后把处理结果“响应”返回给浏览 器,浏览器对“响应”进行处理,然后显示成可视化的页 面效果。
本课程学习路线
HTML基础(不是C语言的一部分,但是开发网站需要用到HTML) C语言开发网站基础
难点点拨:指针(用gcc讲的,因为VC不支持C99,所以如果用VC运 行的话,源文件后缀需要换成.cpp)
CGIC基础
模板引擎
MYSQL数据库 C语言访问MYSQL数据库 CGIC深入 项目案例
HTML基础
HTML语法--表单
<TEXTAREA>标签:多行文本框
<textarea rows="3" rols="20"> </textarea>
<label>标签:
<label for="male">Male</label> <input type="radio" name="sex" id="male" /> <label for="female">Female</label> <input type="radio" name="sex" id="female" /> label 元素不会向用户呈现任何特殊效果。不过,它为鼠标用户改进 了可用性。如果您在 label 元素内点击文本,就会触发此控件。for的 属性值指向绑定表单元素的 id 值。
• _self:在自身页面中打开链接(默认)
• _top:在整个浏览器的最顶端(前端)开始打开链接
HTML语法--表单
表单 <form> 表单标签是最常用的标签,主要用于采集和提交用户输入 的信息,与服务器端进行交互。
HTML语法--表单
<INPUT>标签:接受用户输入信息
<input type="text" value="" />
< > < > " " 空格
&
&
列表标签
无序列表
<ul> <li>游戏</li> <li>部门</li> </ul>
有序列表
<ol> <li>游戏</li> <li>部门</li> </ol>
图像标签
图像标签 <img>
例:<img src="1.jpg" width="500px" height="200px"/>
表格标签
表格标签 <table>
用于格式化数据。 例:<table border width cellpadding cellspacing> <caption>标题</caption> <thead> <th>姓名</th> <!--对表格的第一行或者第一列进行 --> <th>年龄</th> <!--格式化,就是粗体居中显示 --> </thead> <tbody> <tr> <!--行标签 --> <td>张三</td><td>20</td> <!--单元格标签 --> </tr> <tr><td>李四</td><td>25</td></tr> </tbody> </table>
HTML常用标签--字体
字体标签 <font>
例: <font color="red">HTML 字体标签 </font>, 常见属性 size color,还有其它属性,比如:face
标题标签 <H1></H1>...<H6></H6> 特殊字符
如果要在网页上显示一些特殊符号,比如< > & 等。因为这些符号在 代码中会被浏览器识别并解释,所以用一些特殊的方式来表示。
本套课程不需要大家学过“C语言也能干大事”之前任何的旧课程。 大学教材里讲c语言很多后缀都是cpp,其实并不是正统的c语言,c++有些语 法c并不支持(比如变量随用随定义)。所以教科书上的一些cpp的语法在c中 不支持。 “有哪些公司用C语言开发网站?”:学习c/c++并不是目的,用学过的语言 做东西,然后更有利于学习项目中用的java/.Net才是主要目的。很多C/C++ 的语法规范、内存管理和Java/.Net不一样,这里不严格遵守,不用纠结太多 。可能会有内存泄露、缓冲区溢出漏洞、注入漏洞等潜在问题。 审核通过的作品如鹏将会提供服务器,用途:兼职、就业。
请求处理响应
cgi是运行在服务器上
改项目配置
每次修改代码都要生成、 exe改为 cgi、复制到网站根目录 ,如果有html还要把html拷过去,很麻烦。想完成如下几 步:直接生成cgi;项目根目录做为网站根目录(项目中的 html可以直接通过浏览器访问);cgi直接生成到网站根目 录。 直接生成 cgi :项目右键属性“目标文件扩展名”改为 “.cgi”。 项目根目录做为网站根目录:改 apache 的 httpd.conf 的 DocumentRoot(* 两个项目都想被访问怎么办?虚拟主机 vhost) cgi直接生成到网站根目录(也就是项目根目录):项目右 键属性,“输出目录”填“./”。
CGI介绍
什么是CGI?当浏览器的一个请求到来的时候,Web服务 器运行服务器端对应的可执行程序,把浏览器的请求放到 “标准化输入”中,可执行程序运行后,Web服务器把程 序的“标准化输出”内容(重定向)返回给浏览器。 CGI开发效率、运行效率低,但是开发原理和Java、 ASP.Net、PHP等是互通的,所以不用纠结“CGI是过时的 技术”,在嵌入式设备中 CGI还是应用很广的,腾讯公司 内部CGI还是主流技术。 开发CGI流程:开发一个exe程序,放到Web服务器对应目 录下,浏览器访问这个exe即可运行。 运行 CGI程序需要网站服务器(Web 服务器),有很多产 品: IIS 、 apache 、 ngix 、 BOA 等都可以支持 CGI 。这里使 用apache。
配置apache
为了免去配置的麻烦,使用我配置好的免安装版,如果对apache不了解就按照我的 结果完全走就可以,最少的麻烦。 把压缩包解压到硬盘(最好不要有中文、空格、特殊符号),选择一个文件夹作为 “网站根目录”,然后把apache的conf/httpd.conf中的DocumentRoot修改为“网 站根目录”(注意:路径分割一定要用正斜线/,不要用\;要用英文的引号,不要 用中文的引号;“网站根目录”最好不要有中文,否则httpd.conf要以Utf-8编码保 存)。 双击bin下的httpd.exe,启动服务器,如果屏幕一闪而过,则可能是出错了。启动 命令行再运行httpd.exe,看报错信息。 可能的问题:“(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用 一次”→有其他的 Web 服务器,把电脑上安装的其他的 IIS 、 Apache 、 Tomcat 等 Web服务器卸载掉或者修改端口号。 http默认占用80端口,如鹏绿色版配置默认 占用8080端口,麻烦地方在于每次网址都要带端口号。通过httpd.conf修改端口号 。 在“网站根目录”下放一个1.html,写点内容,浏览器访问 http://127.0.0.1:8080/1.html,如果能显示就没问题了。 关闭命令行窗口apache服务器就关闭了。默认配置简单但是不安全,适用于开发, 不适用于正式运行的网站。(*)正式运行以服务方式启动apche,但是开发时不要用
HTML是什么
HTML用来编写网页的标记语言,是纯文本文件,用记事本等就可以编写,用浏览器查 看;我们看到的好看的网站都是用html描述的,浏览器读取解析html绘制成可视化的 页面。 在Visual Studio中创建html的方法。后缀是.html或者.htm都可以。
HTML代码不区分大小写。
HTML代码由<HTML>开始</HTML>结束,里面有头部分<HEAD></HEAD>和体部 分<BODY></BODY>两部分组成。
多数标签都是开始标签和结束标签,其中个别标签只有单一功能,或者没有要修饰的内 容,可以在开始标签内以 "/" 结束。
想要对被标签修饰内容进行更丰富的操作,就用到标签中的属性,通过对属性值的改变 ,增加了更多的效果选择。 格式:<标签名 属性名="属性值">数据内容</标签名>
printf("<font color=red>hello wenku.baidu.comupeng</font>");
return 0; } 如果报错“检测到 Mac 文件格式: 请将源文件转换为 DOS 格式或 UNIX 格式”,则“高级保 存选项”,行尾选择“Windows”。 生成的test2.exe改名为test2.cgi放到网站根目录下,浏览器访问http://127.0.0.1:8080/test2.cgi ,看到浏览器中有了输出(可能的问题:杀毒软件误报)。分析原理,浏览器请求test2.cgi, 服务器“后台”执行test2.cgi,并且把执行结果返回给浏览器,浏览器显示。