投票系统

1.说明:

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

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

2.过程:

第一步:配置httpdserver

先配置好httpdserver。

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

把:

<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的表,里面加入了name与num两个字段,并插入了

“ 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后,例如以下

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

linux网络编程实现投票功能的更多相关文章

  1. 【linux草鞋应用编程系列】_5_ Linux网络编程

    一.网络通信简介   第一部分内容,暂时没法描述,内容实在太多,待后续专门的系列文章.   二.linux网络通信     在linux中继承了Unix下“一切皆文件”的思想, 在linux中要实现网 ...

  2. Linux网络编程&内核学习

    c语言: 基础篇 1.<写给大家看的C语言书(第2版)> 原书名: Absolute Beginner's Guide to C (2nd Edition) 原出版社: Sams 作者: ...

  3. linux网络编程_1

    本文属于转载,稍有改动,以利于学习. (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个 ...

  4. Linux网络编程入门 (转载)

    (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...

  5. Linux网络编程必看书籍推荐

    首先要说讲述计算机网络和TCP/IP的书很多. 先要学习网络知识才谈得上编程 讲述计算机网络的最经典的当属Andrew S.Tanenbaum的<计算机网络>第五版,这本书难易适中. &l ...

  6. [转] - Linux网络编程 -- 网络知识介绍

    (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...

  7. Linux C 程序 Linux网络编程(21)

    Linux网络编程网络编程必备的理论基础网络模型,地址,端口,TCP/IP协议 TCP/IP协议是目前世界上使用最广泛的网络通信协议日常中的大部分应用使用该系列协议(浏览网页,收发电子邮件,QQ聊天等 ...

  8. 【转】Linux网络编程入门

    (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...

  9. 《转》Linux网络编程入门

    原地址:http://www.cnblogs.com/duzouzhe/archive/2009/06/19/1506699.html (一)Linux网络编程--网络知识介绍 Linux网络编程-- ...

随机推荐

  1. 随手记录---transform 属性

    其实平时很少用到transform属性,一些放大缩小用width.height可以改变,一些位置变换,更是有margin,而一些旋转.2D.3D变换也不怎么能用得到.不过最近接触了一些图片的缩放,觉得 ...

  2. CISP/CISA 每日一题 七

    CISA 每日一题(答) 确保只有恰当授权的出站交易才能被处理,控制目的: 1.出站交易是基于授权而被启动: 2.出站交易包含了唯一的预先授权的交易类型: 3.出站交易只能被发送到合法的商业伙伴那里. ...

  3. Linux下vi替换字符命令操作实例

    在Linux下的开发中,经常涉及到对文件里的字符进行处理,当中,对字符的替换操作也是非常的频繁. 本文以一个实际的文件为例,具体介绍了Linux下经常使用的vi替换字符命令,为相关的开发工作提供给了參 ...

  4. 文件上传流式处理commons-fileupload

    1. 从请求中获取MultipartFile @RequestMapping(value="/upload", method=RequestMethod.POST) public ...

  5. zeromq and jzmq

    install c test install jzmq java test Storm UI Cluster Summary Version Nimbus uptime Supervisors Use ...

  6. 项目太大tomcat启动不起来

    双击server,Open launch configuration Arguments VM arguments增加参数: -Xms512m -Xmx1024m -Xss4m -XX:PermSiz ...

  7. Android实践 -- 对apk进行系统签名

    对apk进行系统签名 签名工具 网盘下载 ,需要Android系统的签名的文件 platform.x509.pem 和 platform.pk8 这个两个文件在Android源码中的 ./build/ ...

  8. noi25 最长最短单词(为什么会出现运行时错误)

    noi25 最长最短单词(为什么会出现运行时错误) 一.总结 一句话总结:比如除以零,数组越界,指针越界,使用已经释放的空间,数组开得太大,超出了栈的范围,造成栈溢出 1.c++报runtime er ...

  9. Altium Designer如何统一调整标号大小,在pcb环境下

  10. 30分钟学会如何使用Shiro(转)

    本篇内容大多总结自张开涛的<跟我学Shiro>原文地址:http://jinnianshilongnian.iteye.com/blog/2018936 我并没有全部看完,只是选择了一部分 ...