当前位置: 首页 > news >正文

linux网络编程实现投票功能

投票系统

1.说明:

写了一个投票系统。过程是先配置好server。在写一个网上投票功能,要实现网上投票功能。

事实上功能实现还是非常easy的,麻烦一点的在于过程比較繁杂,要做的东西还是挺多的!

2.过程:

第一步:配置httpdserver

先配置好httpdserver。

我先下载好了和httpserver的包后,因为fedorahttpd配置相对照较简单,所以我也仅仅是简单的做了一下改动,例如以下:

把:

<Directory"/var/www/cgi-bin">

AllowOverrideNone

OptionsNone

Requireall granted

</Directory>

改动为:

<Directory"/var/www/cgi-bin">

AllowOverrideNone

AddHandlercgi-script py sh cgi

OptionsExecCGI

Orderallow,deny

Allowfrom all

Requireall granted

</Directory>

然后在开启httpdserver就好了。

第二步:建立数据库

因为投票要涉及到数据库的改动与更新,所以要事先建立好一个数据库。我建立了一个名为poll的数据库,并为poll数据库建立了一个名为poll_name的表,里面加入了namenum两个字段,并插入了

alop“ ,0 与 “ daoyan“ 0两个值,用于投票,须要注意的是,建立数据库仅仅是为了投票后要进行数据更新在返回页面,所以,假设想简单一点的话。我认为用文件就足够了。不够这个样例是由于数据极为简单,但要是若有非常多复杂的操作的话,还是建立数据库比較方便!

第三步:写cgi程序

这是最关键的一步了。这一步要完毕的是当用户投票之后。通过通信技术返回给server之后,server该怎样处理的问题,毫无疑问,这次我们要做的就是当客服端选择某个人,如”alop“。并点击,server收到这个消息后,要对数据库的里”alop”num+1就可以,这里我是用python写的程序,例如以下:

#!/usr/bin/envpython

#coding=utf-8

importcgi, cgitb

importMySQLdb

db= MySQLdb.connect("localhost", "root", "","poll")

cursor= db.cursor()

sql_update= "UPDATE poll_name SET num = num + 1 WHERE name = '%s'"

sql_query= "SELECT num FROM poll_name"

results= ()

form= cgi.FieldStorage()

name= form.getvalue('name')

sql_update= sql_update % name

cursor.execute(sql_update)

db.commit()

cursor.execute(sql_query)

results= cursor.fetchall()

print"Content-type:text/html\r\n\r\n"

print"<html>"

print"<head>"

print"<title>Radio - Fourth CGI Program</title>"

print"</head>"

print"<body>"

print'<form action="/cgi-bin/election.py" method="post">'

print'<input type="radio" name="name" value="alop"/> alop %d </br>' % results[0][0]

print'<input type="radio" name="name"value="daoyan" /> daoyan %d </br>' %results[1][0]

print'<input type="submit" value="submit" />'

print"</form>"

print"</body>"

print"</html>"


整个程序还是非常easy的。

这样,就完毕了整个过程:

3.效果

效果例如以下:


当点击alop后,例如以下


这样,整个过程就完毕了。









相关文章:

  • 前端 使用 crypto-js 对数据进行对称加密
  • LINUX PID 1和SYSTEMD 专题
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • Java项目--俄罗斯方块
  • Hilditch 细化算法的C#实现
  • Akka系列(七):Actor持久化之Akka persistence
  • ext2文件系统
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • SpringBoot构建工程中的一些坑
  • dubbo服务调用超时问题解决方案
  • Spring Boot中使用@Async实现异步调用
  • Red and Black (DFS)
  • eclipse实现JavaWeb项目 增量打包
  • Dubbo框架介绍与安装 Dubbo 注册中心(Zookeeper-3.4.6)
  • 鼠标悬停在图片时出现×。然后删除图片
  • 【Amaple教程】5. 插件
  • Android系统模拟器绘制实现概述
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • CODING 缺陷管理功能正式开始公测
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • CSS魔法堂:Absolute Positioning就这个样
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Fundebug计费标准解释:事件数是如何定义的?
  • golang 发送GET和POST示例
  • gops —— Go 程序诊断分析工具
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Mysql数据库的条件查询语句
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 通信类
  • 携程小程序初体验
  • 再次简单明了总结flex布局,一看就懂...
  • ​ArcGIS Pro 如何批量删除字段
  • #预处理和函数的对比以及条件编译
  • (1)常见O(n^2)排序算法解析
  • (zhuan) 一些RL的文献(及笔记)
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (转)大型网站的系统架构
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .gitignore文件设置了忽略但不生效
  • .NET delegate 委托 、 Event 事件
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET Remoting学习笔记(三)信道
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET 设计一套高性能的弱事件机制
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .NET委托:一个关于C#的睡前故事
  • [ 第一章] JavaScript 简史
  • []串口通信 零星笔记
  • [android学习笔记]学习jni编程
  • [AX]AX2012 SSRS报表Drill through action