C语言写的网站入门篇

news/2024/5/12 8:13:12/文章来源:https://blog.csdn.net/qq_40098572/article/details/86742458

第一步:运行sql脚本:https://download.csdn.net/download/qq_40098572/10946799

第二步:搭建开发环境

第三步:搭建mysql环境

#include <stdlib.h>
#include <stdio.h>
#include <winsock.h>
#include <mysql.h>
#include "cgic.h"
#include "ctemplate.h"
#include <Windows.h>
void executeNonQuery(char * sql);
MYSQL_RES * executeQuery(char *sql);
void showError(char *msg);
void printHtmlContentType();int cgiMain()
{
//	MessageBox(NULL, "ok", "ok", MB_OK);char mod[32] = { 0 };char action[32] = { 0 };//所有的对cgi的请求都至少要带这两个参数。我的约定//MVC.cgi?mod=teacher&action=list 列出所有的老师数据//MVC.cgi?mod=teacher&action=addnew 进入新增老师的界面//MVC.cgi?mod=teacher&action=addnewSubmit 新增老师的保存操作//StudengMgr.cgi?mod=student&action=list 列出所有的学生数据//MVC.cgi?mod=user&action=login 用户登陆if (cgiFormString("mod", mod, sizeof(mod)) != cgiFormSuccess){showError("没有提供mod参数");return 0;}if (cgiFormString("action", action, sizeof(action)) != cgiFormSuccess){showError("没有提供action参数");return 0;}if (strcmp(mod, "teacher") == 0){if (strcmp(action, "list") == 0){MYSQL_RES *result = executeQuery("select Id,Name,PhoneNum from T_Teachers");TMPL_varlist *varlist = 0;TMPL_loop *loopTeachers = 0;MYSQL_ROW row;while (row = mysql_fetch_row(result)){char *id = row[0];char *name = row[1];char *phoneNum = row[2];loopTeachers = TMPL_add_varlist(loopTeachers,TMPL_add_var(0, "Id", id, "Name", name, "PhoneNum", phoneNum, 0));}//不要写错成:TMPL_add_loop(varlist,"teachers",loopTeachers);varlist = TMPL_add_loop(varlist, "teachers", loopTeachers);printHtmlContentType();TMPL_write("TeacherList.htm", 0, 0, varlist, cgiOut, cgiOut);mysql_free_result(result);}else if (strcmp(action, "addnew") == 0){printHtmlContentType();TMPL_write("TeacherAddNew.htm", 0, 0, 0, cgiOut, cgiOut);}else if (strcmp(action, "addnewSubmit") == 0){char name[256] = { 0 };char phoneNum[256] = { 0 };if (cgiFormString("Name", name, sizeof(name)) != cgiFormSuccess){showError("姓名不能为空");return;}if (cgiFormString("PhoneNum", phoneNum, sizeof(phoneNum)) != cgiFormSuccess){showError("手机号码不能为空");return;}{char sql[1024] = { 0 };sprintf(sql, "insert into T_Teachers(Name,PhoneNum) values('%s','%s')",name, phoneNum);executeNonQuery(sql);cgiHeaderLocation("MVC.cgi?mod=teacher&action=list");}}else if (strcmp(action, "edit") == 0){int id;if (cgiFormInteger("id", &id, 0) != cgiFormSuccess){showError("请提供要修改的id");return;}{//加载旧的数据MYSQL_RES * result;char sql[1024] = { 0 };MYSQL_ROW row;sprintf(sql, "select Id,Name,PhoneNum from T_Teachers where Id=%d", id);result = executeQuery(sql);if (row = mysql_fetch_row(result))//有一条{char* name = row[1];char *phoneNum = row[2];TMPL_varlist *varlist = 0;varlist = TMPL_add_var(varlist, "Id", row[0], "Name", name, "PhoneNum", phoneNum, 0);printHtmlContentType();TMPL_write("TeacherEdit.htm", 0, 0, varlist, cgiOut, cgiOut);}else//一条结果都没有{showError("找不到这个id对应的教师信息");return;}}}else if (strcmp(action, "editSubmit") == 0){int id;char name[256] = { 0 };char phoneNum[256] = { 0 };if (cgiFormInteger("Id", &id, 0) != cgiFormSuccess){showError("Id不能为空");return 0;}if (cgiFormString("Name", name, sizeof(name)) != cgiFormSuccess){showError("Name不能为空");return 0;}if (cgiFormString("PhoneNum", phoneNum, sizeof(phoneNum)) != cgiFormSuccess){showError("PhoneNum不能为空");return 0;}{char sql[1024] = { 0 };sprintf(sql, "update T_Teachers set Name='%s' ,PhoneNum='%s' where Id=%d",name, phoneNum, id);executeNonQuery(sql);//重定向返回教师列表页面cgiHeaderLocation("MVC.cgi?mod=teacher&action=list");}}else if (strcmp(action, "delete") == 0){int id;if (cgiFormInteger("id", &id, 0) != cgiFormSuccess){showError("Id不能为空");return 0;}{char sql[128] = { 0 };sprintf(sql, "delete from T_Teachers where Id=%d", id);executeNonQuery(sql);cgiHeaderLocation("MVC.cgi?mod=teacher&action=list");}}else{showError("未知的action参数");return 0;}}else//倡议:有if就要写else{showError("未知的mod参数");return 0;}return 0;
}void printHtmlContentType()
{cgiHeaderContentType("text/html;charset=gbk");
}
void showError(char *msg)
{TMPL_varlist *varlist = 0;varlist = TMPL_add_var(varlist, "msg", msg, 0);printHtmlContentType();TMPL_write("Error.htm", 0, 0, varlist, cgiOut, cgiOut);
}
void executeNonQuery(char * sql)
{MYSQL* pConn = mysql_init(0);if (!mysql_real_connect(pConn, "localhost", "root", "root", "studengmgr", 0, 0, 0)){goto error;}if (mysql_query(pConn, "set names gbk")){goto error;}if (mysql_query(pConn, sql)){goto error;}goto exit;
error:cgiHeaderContentType("text/html;charset=gbk");fprintf(cgiOut, "执行出错 %s", mysql_error(pConn));//printf("执行出错 %s",mysql_error(pConn));
exit:mysql_close(pConn);
}
MYSQL_RES * executeQuery(char *sql)
{MYSQL* pConn = mysql_init(0);if (!mysql_real_connect(pConn, "localhost", "root", "root", "studengmgr", 0, 0, 0)){goto error;}if (mysql_query(pConn, "set names gbk")){goto error;}if (mysql_query(pConn, sql)){goto error;}{MYSQL_RES *result = mysql_store_result(pConn);mysql_close(pConn);return result;}
error:cgiHeaderContentType("text/html;charset=gbk");fprintf(cgiOut, "执行出错 %s", mysql_error(pConn));//printf("执行出错 %s",mysql_error(pConn));
exit:mysql_close(pConn);
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_860454.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

域名 网站的区别

域名&#xff0c;相信大家都不默认&#xff0c;也使用过无数次&#xff01;比如&#xff1a; google.com、baidu.com、163.com等。 这时候&#xff0c;你可能要奇怪了&#xff0c;为什么小编没有在前面加上www? 因为正常情况下&#xff0c;不应该是www.baidu.com之类的吗&…

大型网站架构演变和知识体系

&#xfeff;&#xfeff; 之前也有一些介绍大型网站架构演变的文章&#xff0c;例如LiveJournal的、ebay的&#xff0c;都是非常值得参考的&#xff0c;不过感觉他们讲的更多的是每次演变的结果&#xff0c;而没有很详细的讲为什么需要做这样的演变&#xff0c;再加上近来感觉…

数据分析网站-竞品分析数据来源

产品汪经常需要做竞品分析&#xff0c;要用到许多专业的图表和数据。数据从何而来&#xff1f;需要我们利用专业的数据研究网站来搜集。 常用的数据搜集网站&#xff1a; 1.百度指数 网址&#xff1a;http://index.baidu.com/ 主要功能&#xff1a; 指数探索&#xff1a;趋…

DDoS高防教你如何防御网站DDoS攻击

DDoS是英文Distributed Denial of Service的缩写&#xff0c;意即“分布式拒绝服务” 分布式拒绝服务攻击可以使很多的计算机在同一时间遭受到攻击&#xff0c;使攻击的目标无法正常使用&#xff0c;分布式拒绝服务攻击已经出现了很多年了&#xff0c;导致很多的大型网站都出现…

网站被CC或者DDOS攻击怎么办?

网站为什么会遭遇DDos攻击或CC攻击&#xff1f; 网站之所以会遭受DDos攻击和CC攻击&#xff0c;主要因素是来自于同行的竞争激烈&#xff0c;一些非法同行采用极端激进的竞争方式&#xff0c;往往会雇佣网络一些具有一定技术的程序人员恶意攻击&#xff0c;雇佣价格不高&#…

网站被黑客攻击怎么办?

什么是网站被黑&#xff1f;一般来说&#xff0c;我们所谈论的网站都被黑客入侵&#xff0c;这意味着黑客利用网站背景中的一些程序漏洞进行攻击。他们会在我们的网站上添加很多垃圾页面。当您检查包含某个网站时&#xff0c;如果该网站被黑客攻击&#xff0c;则会显示一些内容…

记一次网站被攻击

很久没有上自己以前的博客网站&#xff0c;今天上去看了一下&#xff0c;发现页面布局有点错位&#xff0c;页面上的所有链接&#xff0c;无论url是什么&#xff0c;所跳转的页面都是首页的内容&#xff0c;使用浏览器查看了网页源码&#xff0c;发现被插入了一些meta头信息&am…

Nginx配置SSL证书部署HTTPS网站

一、什么是 SSL 证书&#xff0c;什么是 HTTPS SSL 证书是一种数字证书&#xff0c;它使用 Secure Socket Layer 协议在浏览器和 Web 服务器之间建立一条安全通道&#xff0c;从而实现&#xff1a; 1、数据信息在客户端和服务器之间的加密传输&#xff0c;保证双方传递信息的安…

云服务器网站打开速度过慢,如何进行自检

近年来&#xff0c;越来越多企业青睐云服务器&#xff0c;云服务商也发展的如火如荼。但对于客户来说&#xff0c;在使用云服务器的过程中&#xff0c;会出现网络访问速度缓慢的情况&#xff0c;为何会出现这种情况&#xff0c;如何解决呢&#xff0c;群英来给大家分析下。 1.先…

如何有效防御网站被CC攻击

对于新站长来说&#xff0c;对CC攻击可能比较陌生&#xff0c;那么什么是CC攻击&#xff0c;如何有效防御网站被CC攻击&#xff1f;网络攻击中常见的是&#xff1a;DDoS攻击、CC攻击&#xff0c;其中危害大且难防范的是DDoS攻击&#xff0c;而CC攻击是DDOS的一种&#xff0c;也…

影响网站页面浏览量的因素有哪些

网站页面浏览量的多少能直观反映一个页面受用户欢迎的程度&#xff0c;而且还会和网站的转化率挂钩。一个好的页面能更好的吸引用户浏览下去&#xff0c;所以很多公司都会比较重视这一点&#xff0c;那么我们该如何去更好的提升页面的浏览量呢&#xff1f;小编来做如下几点的分…

预防网站被攻击的5种方法,看过来

随着云计算的快速发展&#xff0c;同行之间的竞争也日趋激烈&#xff0c;网络安全也越来越受到大家的重视。针对愈加猖獗的网络安全问题&#xff0c;如何进行有效的预防呢&#xff1f;接下来&#xff0c;群英来给大家说说这5种方法吧。 1.使用具有高防御能力的服务器&#xff…

网站中木马病毒了怎么办

不少站长们辛辛苦苦的创建了一个网站&#xff0c;却由于安全维护措施做的不到位&#xff0c;最终导致网站中木马病毒&#xff0c;网站被跳转或无法打开等棘手情况&#xff0c;或点击进去是杂七杂八的灰色网站。若处理不及时&#xff0c;容易受到搜索引擎的惩罚&#xff0c;如官…

用云服务器建站的几个好处,你知道多少

部分站长或小公司的老板普遍认为&#xff0c;个人建站的网站如果用云服务器过于浪费了&#xff0c;毕竟只是一个展示型的网站或者只是用来学习网络技术这方面的知识&#xff0c;没必要用质量好的云服务器。其实他们忽略了2个比较重要的因素&#xff0c;1是性价比&#xff0c;2是…

基于scrapy对网站的图片进行爬取

创建项目的过程我们这里就不讲了&#xff0c;上一篇讲了 ImagesPipeline特点&#xff1a; 将下载图片转换成通用的JPG和RGB格式 避免重复下载 缩略图生成 图片大小过滤 这里我直接给大家看一下&#xff0c;项目的目录结构 在爬取之前我们需要将settings里面的数据修改一…

USGS,ASF网站上传矢量范围失败解决办法

最近需要用国外网站下载数据&#xff0c;但是手绘的矢量范围不精确&#xff0c;有时候可能数据覆盖不全&#xff0c;这里想写一下怎么做才能找到一个精准的范围&#xff0c;很多博客都是说导入矢量&#xff0c;但是有时候自己的矢量边界拐点比较多的时候&#xff0c;导入下载页…

一天一个爬虫练习,今天爬取 瑞文文摘网站

import requests #自动爬去html页面&#xff0c;自动请求网络提交 from bs4 import BeautifulSoup #解析HTML/XMl页面&#xff0c;提取数据或信息#模拟浏览器访问 headers {User-Agent:Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chro…

网站如何识别 你是 selenium爬虫?那我们怎么解决(反反爬)

我们经常会拿selenium进行自动登录来搭建cookie池&#xff0c;对于不想自己网站被爬的站主/开发人员来说&#xff0c;防止自动化脚本操作网站自然是反爬必须要做的工作。那么&#xff0c;他们究竟有哪些手段来检测用户是否是selenium呢&#xff1f;今天就来总结一下常见的识别s…

Django 统计网站访问次数、访问 ip 、访问端点及次数

个人博客&#xff1a;http://www.iamnancy.top 有时候写完博客&#xff0c;想知道网站每天的访问量&#xff0c;都有哪些人访问&#xff0c;都是来自什么地方的访客&#xff0c;都访问了哪些端点。 效果如下&#xff1a; 编写 blog/models.py # 访问网站的 ip 地址、端点和…

如何给网站安装SSL证书(https)-详解

什么是ssl证书&#xff1f; SSL证书是数字证书的一种&#xff0c;类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上&#xff0c;也称为SSL服务器证书。 SSL 证书就是遵守 SSL协议&#xff0c;由受信任的数字证书颁发机构CA&#xff0c;在验证服务器身份后颁发&am…