有更新,请直接看21楼,下载了朋友回个贴啊
/********************说明***********************************
配合DZ会员的一个图票投票系统,是我做PHP的第一个程序,因为平时也很忙,
在本地机上测试通过,
功能还很单一,每个论坛会员只能投六票,除了没有任何限制,接下来做近一步的改进,
因为不懂DZ的SESSION机制,因此在投票的时候要求重新登陆一次,没有注册界面,可以在论坛注册
管理员面现目前只为ADMIN,程序为adminlich.php,目前提供选手自主报名,用户自传头像,管理员审核通过,提供编辑,删除,
只做了基本的美化,在是这个可以直接做成歌手这一类的投票,可以改成其他的,例如选美啊,什么都可以,呵呵,有要的朋友可以联系我,如果有空,我会帮助你修改,QQ:5539326
程序截图在17楼
********************index.php***********************************/
<?php
include('config.inc.php');
include('commfunc.inc.php');
include('header.inc.php');
?>
<?php
$eachpage=8;
$sql="select * from poll where islock=1";
$result=mysql_query($sql);
$page=isset($_GET['page'])?intval($_GET['page']):1;
$total_rows=mysql_num_rows($result);
if($total_rows<=$eachpage)
$pagetotal=1;
else if($total_rows%$eachpage)
$pagetotal=ceil ($total_rows/$eachpage);
else
$pagetotal=$total_rows/$eachpage;
$limitbase=($page-1)*$eachpage;
$sqlpage="select * from poll where islock=1 ORDER BY ID DESC limit $limitbase,$eachpage ";
$resultpage=mysql_query($sqlpage);
echo"共有".$pagetotal."页,当前第".$page."页 ";
for($i=1;$i<=$pagetotal;$i++)
{
echo"<a href=\"?page=$i\"> ".$i."</a>";
}
echo '<div class="sy">';
echo"<ul>";
while($db=mysql_fetch_object($resultpage))
{
if($db->islock)
{
?>
<li>
<div class="sy">
<a href="view.php?id=<?php echo $db->ID;?>" target=_black><img src=<?php echo $db->pic;?> width=130 height=160></a>
<table>
<tr>
<td>
<a href="index.php?id=<?php echo $db->ID;?>&&page=<?php echo $page;?>">投票</a>
</td>
<td>
<a href="view.php?id=<?php echo $db->ID;?>" target=_black>查看</a>
</td>
</tr>
<tr>
<td>
姓名:<?php echo $db->name;?>
</td>
<td>
票数:<?php echo $db->good;?>
</td>
</tr>
</table>
</div>
</li>
<?php
}
}
echo"</ul>";
echo"</div>";
//页面传送一个ID的值,通过超链来得到这个值,
if($_GET['id'])
{
if ($_SESSION['username'])
{
$username=$_SESSION['username'];
$sql2="select tupian from cdb_members where username='$username'";
$result2=mysql_query($sql2);
$db2=mysql_fetch_object($result2);
if($db2->tupian<=6)
{
$id=$_GET['id'];
$sql="update poll
set good=good+1
where ID=$id";
$sql3="update cdb_members
set tupian=tupian+1
where username='$username'";
mysql_query($sql3);
mysql_query($sql);
{
header("location:index.php?page=$page");
}
}
else
{
ExitMessage("你已经投了六票了,不能再投了喔");
}
}
else
{ExitMessage("请登陆","login.php");
header("location:login.php");}
}
?>
<?php
include('footer.inc.php');
?>
/********************login.php***********************************/
<?php
include('config.inc.php');
include('commfunc.inc.php');
include('header.inc.php');
if (!$_SESSION['username'])
{
?>
要继续操作,你必须登陆
<hr />
<form action="login.php" method="post">
姓名:<input type="text" name="name" size="20">
<br/>密码:<input type="password" name="password" size="20">
<br/><input type="submit" value="登陆" name="submit">
</form>
<?php
if($_POST['submit'])
{
$username=$_POST['name'];
$password=md5($_POST['password']);
mysql_select_db("cdb_members");//查询这个用户
$sql="select username,password from cdb_members where username='$username' and password='$password'";//s根据IP查询SESSION表里有没有这个用户
$connuser=mysql_query($sql,$conn) or
die("failed".mysql_errno().mysql_error());
$intcloum=mysql_num_rows($connuser);//返回记录行
if($intcloum)//正确
{
while ($row=mysql_fetch_object($connuser))
{
$_SESSION['username']=$row->username;//存入SESSION
}
}
else
{
echo"用户名或者密码不正确!";
}
}
}
else
{
echo $_SESSION['username'];
echo"请选择:<br>";
echo"<a href=index.php>返回主页面</a> <a href=add.php>报名</a>";
echo"<a href=logout.php>退出</a>";
}
include('footer.inc.php');
?>
/********************add.php***********************************/
<?php
include('config.inc.php');
include('commfunc.inc.php');
include('header.inc.php');
if($_SESSION['username'])
{
echo $_SESSION['username']."欢迎您报名";
?>
<form action="/poll/add_p.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="3000000" /><!--图片上传不能大于10K-->
<br>姓名:<INPUT type="text" name="name" size="20" maxlenth="20" value=<?php echo $_POST['name'];?>>
<br>昵称:<input type="text" name="nc" size="20" maxlenth="20" value=<?php echo $_SESSION['username'];?>>
<br />性别:
<input type="radio" name="sex" value="1" checked="checked" />帅哥
<input type="radio" name="sex" value="0" />美女
<br>年龄:<input type="text" name="old" size="2"maxlenth="2" value=<?php echo $_POST['old'];?>>
<br>电话:<input type="text" name="tel" size="14"maxlenth="14" value=<?php echo $_POST['tel'];?>>
<br />来自:<input type="text" name="address" size="20"maxlenth="50" value=<?php echo $_POST['address'];?>>
<br>相片:<input type="file" name="pic" />
<br />参赛音频:<input type="text" name="audio" size="40" value=<?php echo $_POST['audio'];?>>
<br>你的自我介绍<textarea name="xx" rows="8" cols="40" ><?php echo $_POST['xx'];?></textarea>
<br /><input type="submit" value="提交" name="submit" />:
<input type="reset" value="重填">
</form>
<?php }
else {
ExitMessage("请重新登陆!","login.php");
}
include('footer.inc.php');
?>
/********************add_p.php***********************************/
<?php
include('config.inc.php');
include('commfunc.inc.php');
include('header.inc.php');
function checkform()
{
$error=array();
if(strlen($_POST['name'])<3 ||strlen($_POST['name'])>20)
$error[]="用户名长度不能小于3或者大于20";
if(strlen($_POST['nc'])<3 ||strlen($_POST['nc'])>20)
$error[]="昵称长度不能小于3或者大于20";
if(!eregi("^[0-9]{1,2}$",$_POST['old']))
$error[]="年纪填写不准确,应为两位有效数字";
if(!eregi("^[-0-9]{7,13}$",$_POST['tel']))//这里年纪和电话号码的检验出现了个问题,我把0-9换成\d的时候无论如何也不通过检验,请正则表达式的高手帮我看看
$error[]="电话格式不正确,至少7位,最多13位,中间只能有数字和\"-\"";
if(strlen($_POST['address'])>50||strlen($_POST['address'])<6)
$error[]="地址字数不能大于25和小于3个中文";
if(!eregi("^http://.+(mp3|wma)$",$_POST['audio']))//TNND,这句表达式至少浪费了一个小时
$error[]="你的音频格式或者网址格式不正确,应为:http://your_audio_site/.mp3或者wma";
if(strlen($_POST['xx'])>256||strlen($_POST['xx'])<10)
$error[]="自我说明中文字数不能多于128和少于5";
return $error;
}
function checkpic()
{
/* echo "名称:".$_FILES['pic']['name'];
echo "<br>类型:".$_FILES['pic']['type'];
echo "<br>大小:".$_FILES['pic']['size'];
echo "<br>临时文件名:".$_FILES['pic']['tmp_name'];
echo "<br>错误代码:".$_FILES['pic']['error'];*/
if(isset($_FILES['pic']))
{
if($_FILES['pic']['error']!=0)
ExitMessage("文件没有上传","add.php");
else
{
$file_name=$_FILES['pic']['name'];
$file_type=$_FILES['pic']['type'];
$file_size=$_FILES['pic']['size'];
$file_tmp_name=$_FILES['pic']['tmp_name'];
$MAX_SIZE = 2000000;
$FILE_MIMES = array('image/jpeg','image/jpg','image/gif','image/png','image/pjpeg');
if($file_size>$MAX_SIZE and $file_size=0 )
ExitMessage("文件大小不符合求","add.php");
if(!in_array($file_type,$FILE_MIMES))
ExitMessage("文件类型不符合求","add.php");
$up_dir="files/";
$up_file=$up_dir.date("h-i").$file_name;
if(move_uploaded_file($file_tmp_name,$up_file))
return $up_file;
else
return false;
}
}
else
{echo"error!";} //这段代码是文件上传测试错误用的,考虑以后有用,就没有删掉
}
//这段代码完全是看书理解的,错误可能更多了,,
if ($_POST['submit'])//
{
$err=checkForm();
$picurl=checkpic();
if (count($err))//如果表单填写没有错误
{
echo"你有以下错误<br>";
foreach($err as $messageerr)
{
echo $messageerr."<br>";
}
ExitMessage("请重新填写","add.php");
}
else if($picurl==FALSE)
{
ExitMessage("图片没有正确上传","add.php");
}
else
{
$ip=getIP();
$sql="INSERT INTO poll(nc,name,sex,old,tel,address, pic,audio, xx,ip,times)
VALUES('{$_POST['nc']}','{$_POST['name']}','{$_POST['sex']}','{$_POST['old']}','{$_POST['tel']}','{$_POST['address']}','$picurl','{$_POST['audio']}','{$_POST['xx']}','$ip',now()) ";
$res=mysql_query($sql,$conn);
if(mysql_affected_rows()>0)
{
ExitMessage("选手增加成功","index.php");
}
else
{
ExitMessage("选手增加失败,请联系管理员","index.php");
}
}
}
else
{
ExitMessage("请登陆","login.php");
}
//今天暂时写到这里,我想应该需要测试了~~~反正已经把增加选手的功能部份写出来了~~~
?>
/********************adminlich.php***********************************/
<?php
include('config.inc.php');
include('commfunc.inc.php');
include('header.inc.php');
?>
<?php
if ($_SESSION['username']=="admin")
{
$sql="select * from poll where 1=1 order by good desc";
$result=mysql_query($sql);
$totalnum=mysql_num_rows($result);
echo"共有".$totalnum."位选手<br>";
echo "<table border=1 cellpadding=2>";
?>
<tr>
<td colspan="3">
功能选项
</td>
<td>
ID号
</td>
<td>
昵称
</td>
<td>
姓名
</td>
<td>
性别
</td>
<td>
年纪
</td>
<td>
电话
</td>
<td>
地址
</td>
<td width=28>
好评
</td>
<td>
相片
</td>
<td>
自我说明
</td>
</tr>
<?php
while($db=mysql_fetch_object($result))
{
if($db->islock)
{
echo"<td width=40>";
echo"<a href=sh.php?id=$db->ID target=_black>已审核</a>";
echo"</td>";
}
else
{
echo"<td width=40>";
echo"<a href=sh.php?id=$db->ID target=_black>未审核</a>";
echo"</td>";
}
echo"<td width=28>"; echo"<a href=edit.php?editid=$db->ID target=_black>编辑</a>";
echo"<td width=28>"; echo"<a href=del.php?delid=$db->ID target=_black>删除</a>";
echo"<td>";echo $db->ID;echo"</td>";
echo"<td>";echo $db->nc;echo"</td>";
echo"<td>";echo $db->name;echo"</td>";
echo"<td>";if($db->sex==0)
echo"男";
else
echo"女";echo"</td>";
echo"<td>";echo $db->old;echo"</td>";
echo"<td>";echo $db->tel;echo"</td>";
echo"<td>";echo $db->address;echo"</td>";
echo"<td>";echo $db->good;echo"</td>";
echo"<td width=60>";echo "<a href=$db->pic target=_black>查看相片</a>";echo"</td>";
echo"<td>";echo $db->xx;echo"</td>";
echo"</tr>";
}
echo "</table>";
}
else
echo "你不是管理员,无法查看";
include('footer.inc.php');
?>
/********************commonfun.php***********************************/
<?php
//UBB代码转义函数
function converUBB($strcode){
$source_str=array(
//要转换的样式,第一是文字样式
"/\[b\](.+?)\[\/b\]/is",
"/\[u\](.+?)\[\/u\]/is",
"/\[i\](.+?)\[\/i\]/is",
//字体相关
"/\[font=([ , \w\x7f-\xff]+?)(.+?)\[\/font\]/is",
"/\[color=([a-z]{3, }\|#?[0-9a-f]{6})\]/\color\]/is",
"/\[size=([+-]?\d{1,2})\](.+?)\[\/size\]/is",
"/\[email=([.a-z]+?@[.a-z]+?)(.+?)\[\/email\]/is",
"/\[email\]([.a-z]+?@[.a-z]+?\[\/email\]/is",
"/\[url=(.+?)\](.+?)\[\/url\]/is",
"/\[url\]www\.(.+?)\[\/url\]/is",
"/\[url\](.+?)\[\/url\]/is",
"/\[fly\](.+?)\[\/fly\]/is",
"/\[align=left|right|center\](.+?)\[\/align\]/is",
"/\[code\](.+?)\[\/code\]/is",
);
//转换后的代码
$replace_str=array(
'<b>\\1</b>',
'<u>\\1</u>',
'<i>\\i</i>',
'<font face="\\1">\\2</font>',
'<font color="\\1">\\2</font>',
'<font size="\\1">\\2</font>',
'<a href="mail to:\\1">\\2</a>',
'<a href="mail to:\\1">\\1</a>',
'<a href="\\1" target=_black>\\2</a>',
'<a href="http://www.\\1\" target=_black>\\1</a>',
'<a href="\\1" target=_black>\\1</a>',
'<marquee width=90% behavior=altername scrollamount=3>\\1</marquee>',
'<div align=\\1>\\2</div>',
'<blockquote><b>代码:</b><hr color=#990000>\\1<hr color=#99000></blockquote>',
);
$string=preg_replace($source_str,$replace_str,$strcode);
retrun($string);
}
//公共函数未完....
//2月15日,昨天是情人节,就没有写了,倒不是过情人节了,因为公司特殊原因,所以昨天晚上加班,今天接着写...
//取得IP地址
function getIP()
{
if (getenv('HTTP_CLIENT_IP'))
{$ip=getenv('HTTP_CLIENT_IP');}
else {if(getenv('HTTP_X_FORWARDED_FOR'))
{$ip=getenv('HTTP_X_FORWARDED_FRO');}
else if(getenv('REMOTE_ADDR'))
{
$ip=getenv('REMOTE_ADDR');
}
else $ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
//错误消息页面
function ExitMessage($message,$url="")
{
echo $message;
if($url)
{
echo "<br><a href=$url>返回</a>";
}
else {
echo '<a href="#" onclick="window.history.go(-1);">返回</a>';
}
}
//公共函数暂时只想到了这些,临时想起又再加了
?>
/********************config.inc.php***********************************/
<?php
//定义admin
define("ADMIN_USER","");
define("ADMIN_PWD","");
define("EACHPAGES",8);//定义分页
define("DEFAULT_HEADER","image/header/default.jpg");//默认头像
//开启session
session_start();
ob_start();
//主机数据库相关
$host="localhost";
$user="lich";
$pwd="lflchlf";
$db="bbs";
$conn=mysql_connect($host,$user,$pwd) or
die("mysql can'nt connection!");
mysql_query("SET NAMES 'GBK'");
mysql_select_db($db) or
die("can'nt connection $db");
?>
/********************edit.php***********************************/
<?php
include('config.inc.php');
include('commfunc.inc.php');
include('header.inc.php');
if ($_SESSION['username']=="admin")
{
echo "<h2>编辑选手</h2>";
$id=$_GET['editid'];
$sql="select * from poll where id=$id";
$result=mysql_query($sql);
while($db=mysql_fetch_object($result))
{
?>
<form action="editupdate.php" method="post">
<input type="hidden" name="id" value=<?php echo $id;?>>
<br>姓名:<INPUT type="text" name="name" size="20" maxlenth="20" value=<?php echo $db->name;?>>
<br>昵称:<input type="text" name="nc" size="20" maxlenth="20" value=<?php echo $db->nc;?>>
<br />性别:
<input type="radio" name="sex" value="1" checked="checked" />帅哥
<input type="radio" name="sex" value="0" />美女
<br>年龄:<input type="text" name="old" size="2"maxlenth="2" value=<?php echo $db->old;?>>
<br>电话:<input type="text" name="tel" size="14"maxlenth="14" value=<?php echo$db->tel;?>>
<br />来自:<input type="text" name="address" size="20"maxlenth="50" value=<?php echo $db->address;?>>
<br>自我介绍<textarea name="xx" rows="8" cols="40"><?php echo $db->xx;?></textarea>
<br /><input type="submit" value="提交" name="submit" />:
<input type="reset" value="重填">
</form>
<?php
}
}
else
ExitMessage("如果你是管理员,请登陆!","login.php");
include('footer.inc.php');
?>
/********************editupdate.php***********************************/
<?php
include('config.inc.php');
include('commfunc.inc.php');
include('header.inc.php');
$nc=$_POST['nc'];
$name=$_POST['name'];
$sex=$_POST['sex'];
$old=$_POST['old'];
$tel=$_POST['tel'];
$address=$_POST['address'];
$xx=$_POST['xx'];
$ID=$_REQUEST['id'];
if($_POST['submit'])
{
$sql="UPDATE POLL
SET
nc='$nc',
name='$name',
sex='$sex',
old='$old',
tel='$tel',
address='$address',
xx='$xx',
times=now()
WHERE
ID=$ID";
$result=mysql_query($sql);
$update_num=mysql_affected_rows($conn);
if($update_num)
ExitMessage("修改成功");
else
echo"修改失败";
}
else
echo"error";
include('footer.inc.php');
?>
/********************footer.inc.php***********************************/
</div><!--middle conntent end-->
<div class="copyright"><!--footer information-->
copyright by lich
</div>
</div><!--all end-->
</body>
</html>
/********************header.inc.php***********************************/
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>图片投票系统-design by lich</title>
<style>
body{
background-color:#666666;
font-size:13px;
color:#FFFFCC;}
.sy{
color:#FF6633;
font-size:12px;
}
.sy ul{
color:#FF6633;
list-style:none;
}
.sy ul li{
border:#999999 2px solid;
background-color:#FFFFFF;
padding:4px;
float:left;
margin:30px;
}
.sy ul li img{
border:none;}
a{
color:#FF6633;
}
a:hover{
color:#00CC99;
text-decoration:none;}
a:visited{
color:#FF6633;
text-decoration:none;}
</style>
</head>
<body>
<div class="top">
<?php
if($_SESSION['username'])
{
echo "你好,".$_SESSION['username'].",我要<a href=add.php>报名</a>|<a href=index.php>主页</a>|<a href=logout.php>退出</a>";
}
else
{
echo"请<a href=login.php target=_black>登陆</a>,或返回论坛注册,现在你还不能投票和报名|<a href=index.php>主页</a>";
}
?>
</div>
<div class="conntent"><!--conntent start-->
/********************install.php***********************************/
<?php //主机用户名,密码...
$host="localhost";
$user="lich";
$pwd="lflchlf";
//创建一个表
$createsql="CREATE TABLE poll
(
ID int (11) NOT NULL AUTO_INCREMENT,
nc varchar (20) NOT NULL,
name varchar (20) NOT NULL,
sex tinyint (1) NOT NULL default 1,
old tinyint (2),
tel varchar (16) NOT NULL,
address varchar (60) NOT NULL,
good int,
bad int,
pic varchar (100) NOT NULL,
audio varchar (100) NOT NULL,
xx text NOT NULL,
islock tinyint (1) default 1,
ip varchar (30) NOT NULL,
times datetime ,
timep datetime,
PRIMARY KEY (ID)
)";
$conn=mysql_connect($host,$user,$pwd);
mysql_select_db("bbs");
echo $conn;
if($conn)
{
if(mysql_query($createsql,$conn))
{echo"create table poll succely!";}
else
{echo"create table poll failed! Infomation:".mysql_error().mysql_errno();}
}
else
{echo "connection mysql failed!infomation:".mysql_error();}
?>
/********************view.php***********************************/
<?php
include('config.inc.php');
include('commfunc.inc.php');
include('header.inc.php');
?>
<?php
$id=$_GET['id'];
$sql="select * from poll where ID=$id";
$result=mysql_query($sql);
while($row=mysql_fetch_object($result))
{
?>
<div>
<img src="<?php echo $row->pic; ?>" width="250" height="300" /><br />
姓名:<?php echo $row->name; ?><br />
昵称:<?php echo $row->nc; ?><br />
年纪:<?php echo $row->old; ?><br />
性别:<?php
if($row->sex==0)
echo"男";
else
echo"女";
?><br />
电话:<?php echo $row->tel; ?><br />
来自:<?php echo $row->address; ?><br />
当前票数:<?php echo $row->good; ?><br />
<a href="view.php?tid=<?php echo $row->ID;?>">投票</a><br />
个人说明:<?php echo $row->xx; ?><br />
</div>
<?php
}
if($_GET['tid'])
{
if ($_SESSION['username'])
{
$tid=$_GET['tid'];
$sqld="update poll
set good=good+1
where ID=$tid";
if(mysql_query($sqld));
{
echo"投票成功";
echo '<a href="#" onclick="window.history.go(-1);">返回</a>';
}
}
else
{ExitMessage("请登陆","login.php");
header("location:login.php");}
}
include('footer.inc.php');
?>
/********************add_p.php***********************************/
[ 本帖最后由 fm1005 于 2008-4-22 13:10 编辑 ] |