linux网络编程投票
投票系统
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.效果
效果例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWxvcF9kYW95YW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
当点击alop后。例如以下
这样,整个过程就完毕了。
版权声明:本文博主原创文章。博客,未经同意不得转载。
linux网络编程投票的更多相关文章
- 【深入浅出Linux网络编程】 "开篇 -- 知其然,知其所以然"
[深入浅出Linux网络编程]是一个连载博客,内容源于本人的工作经验,旨在给读者提供靠谱高效的学习途径,不必在零散的互联网资源中浪费精力,快速的掌握Linux网络编程. 连载包含4篇,会陆续编写发出, ...
- 【linux草鞋应用编程系列】_5_ Linux网络编程
一.网络通信简介 第一部分内容,暂时没法描述,内容实在太多,待后续专门的系列文章. 二.linux网络通信 在linux中继承了Unix下“一切皆文件”的思想, 在linux中要实现网 ...
- Linux 网络编程(IO模型)
针对linux 操作系统的5类IO模型,阻塞式.非阻塞式.多路复用.信号驱动和异步IO进行整理,参考<linux网络编程>及相关网络资料. 阻塞模式 在socket编程(如下图)中调用如下 ...
- linux网络编程 no route to host 解决方案
linux网络编程 no route to host 解决方案 [整合资料] (2013-05-13 21:38:12) 转载▼ 标签: net iptables it 分类: Linux 参考资料h ...
- linux网络编程-(socket套接字编程UDP传输)
今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...
- Linux网络编程&内核学习
c语言: 基础篇 1.<写给大家看的C语言书(第2版)> 原书名: Absolute Beginner's Guide to C (2nd Edition) 原出版社: Sams 作者: ...
- linux网络编程_1
本文属于转载,稍有改动,以利于学习. (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个 ...
- Linux网络编程入门 (转载)
(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...
- Linux网络编程必看书籍推荐
首先要说讲述计算机网络和TCP/IP的书很多. 先要学习网络知识才谈得上编程 讲述计算机网络的最经典的当属Andrew S.Tanenbaum的<计算机网络>第五版,这本书难易适中. &l ...
随机推荐
- Android开发工具综述,开发人员必备工具
安卓开发工具汇总.开发者必备.安卓开发过程中须要用到各种工具,作为一名安卓开发者,有木有感到亚历山大,那么多工具! 今天给大家汇总了一下安卓开发工具,安卓开发者必备利器. 1.Draw 9-Patch ...
- Windows Phone开发(24):启动器与选择器之发送短信
原文:Windows Phone开发(24):启动器与选择器之发送短信 本节我们通过一个简单的发送短信示例来演示一下如果配合使用PhoneNumberChooserTask和SmsComposeTas ...
- USACO sprime
/* ID:kevin_s1 PROG:sprime LANG:C++ */ //N = 1仅仅可能为2,3,5,7.N > 1仅仅可能为1,3,7.9. N = i,到N = i + 1递推假 ...
- 【原创】leetCodeOj --- Binary Search Tree Iterator 解题报告
时间挤挤总是有的 太久不做题,脑子都生锈了.来道水题练练手 题目地址: https://leetcode.com/problems/binary-search-tree-iterator/ 题目内容: ...
- NYOJ710 外星人的供给站 【贪心】
外星人的供给站 时间限制:1000 ms | 内存限制:65535 KB 难度: 描写叙述 外星人指的是地球以外的智慧生命.外星人长的是不是与地球上的人一样并不重要,但起码应该符合我们眼下对生命基 ...
- C++写一个简单的解析器(分析C语言)
该方案实现了一个分析C语言的词法分析+解析. 注意: 1.简单语法,部分秕.它可以在本文法的基础上进行扩展,此过程使用自上而下LL(1)语法. 2.自己主动能达到求First 集和 Follow 集. ...
- Unity UGUI——开源
开源许可证:MIT/X11 来源托管网站:BitBucket
- shell split分析日志文件
在处理的文件comment有如下格式: ............................ xxx.xxx.10.59 db1059 mynbdpdatadb.idc4. dbname R620 ...
- 使用QT 4.8.6 + Cmake 3.0.0 编译 最新版本OpenCv3.0.0
mingw32 (x32) gcc g++ qt opencv- -- cmake -rc1 windows x64 参考文章: http://blog.csdn.net/qiurisuixiang/ ...
- [C/C++]_[VS2010来源与UTF8中国字符串转码ANSI问题]
现场: 1.思想vs设置源文件UTF8编码,代码中国串出现在它必须是utf8编码,不幸的是,,假定源代码将出现在中国字符串,在存储器中转码ANSI编码. Unicode(UTF8签名) 代码页(650 ...