投票系统投票界面
投票界面
投票界面包括用戶的登陸,所有投票題目的呈現,每個投票信息的具體呈現
用戶登錄界面的具體代碼如下
這里涉及到一個賬號登陸問題,這里包括一個普通用戶的登陸進入投票列表界面,還有一個是管理員進入后臺管理系統(進入后臺管理系統的代碼見之后的文章)。賬號密碼的登陸,首先賬號密碼要匹配才能登陸,其次是防止通過url直接跳過賬號密碼的檢測進入后臺管理系統,解決方法是先對$_SESSION['user']'和$_SESSION['name']初始化為null,再對賬號密碼進行檢測,然后再對管理員身份進行檢測。具體代碼如下:
<?php include("../sqlsafe.php");include("../conn.php");$_SESSION['user'] = $_SESSION['admin'] = NULL;$username = $_POST['username'];$passwd = $_POST['passwd'];$sql = "select * from users where username='$username' and passwd='$passwd';";$result = $db->query($sql);if($result->num_rows > 0){$rank = $db->query("select * from users where username='$username' and admin='1'");@session_start();if($rank->num_rows > 0){$_SESSION['admin']=true;$_SESSION['user']=false;$_SESSION['name']=$username;echo "<meta http-equiv=\"Refresh\" content=\"0;url=../index.php\">";}else{$_SESSION['user']=true;$_SESSION['admin']=false;$_SESSION['name']=$username;echo "<meta http-equiv=\"Refresh\" content=\"0;url=../list.php\">";}}else{echo "<script>alert('賬戶或密碼錯誤')</script>";echo "<meta http-equiv=\"Refresh\" content=\"0;url=login.html\">";}?>而防止通過url跳過檢測的方法是通過session檢測是否已經登陸過,若沒有,則會跳轉到登陸界面
<?php@session_start();if( !isset($_SESSION['admin']) || !isset($_SESSION['user']) || ( $_SESSION['user']!== true && $_SESSION['admin']!== true ) ){echo "<meta http-equiv=\"Refresh\" content=\"0;url=login.html\">";exit();}其中conn.php的作用是鏈接數據庫,具體代碼為
<?php$db = new mysqli('127.0.0.1','root','lrwje520','simplevote1');$db->query("SET NAMES utf8");if(mysqli_connect_errno()){echo "據庫連接失敗";exit();} ?>投票頁面的呈現,這其中的難點就是多個投票標題的呈現,解決方法就是對數據庫的提取,即$result_name = $db->query ( "select * from votename" );這是對整個表的提取,接下來是對表中每一行數據的提取這里用$row_name = mysqli_fetch_assoc ( $result_name ),當然 mysqli_fetch_assoc可以改成mysqli_fetch_array,作用是將以一個普通的關聯數組的形式返回一條結果記錄,用while語句對其進行判斷,每次讀取一行,直到讀取完全部投票題目,就能實現把所有投票題目呈現出來,具體代碼如下:
<?php include("conn.php");@session_start();header("Cache-control:private");if( $_GET['do'] ){if($_GET['do']=="logout"){unset($_SESSION['user']);unset($_SESSION['name']);@session_destroy();}}$result = $db->query("select * from sysconfig");$row = mysqli_fetch_assoc($result);$username = $_SESSION['name'];$result1 = $db->query("select * from users where username = '$username'");$row1 = mysqli_fetch_assoc($result1); ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="initial-scale=2.0,width=device-width" /> <title></title><script type="text/javascript" src="admin/js/jquery.min.js"></script> <link rel="stylesheet" href="main1.css" type="text/css" media="screen" /></head> <body> <div class="main"><div id="header" ><div ><?php if( !isset($_SESSION['user']) || $_SESSION['user']!==true ){ ?><a href="admin/login.html">登錄投票</a><?php }else{ ?><span>你好,<?php echo $row1['name']; ?></span><a href="admin/index.php"> 查看投票數據</a><a href="admin/alter_password.html"> 修改密碼</a><a href="index.php?do=logout"> 登出</a><?php } ?></div></div><form action="index.php" method="get"><div class="content"><div><h1><?php echo $row['vote_name']; ?></h1><div class="description"><?php echo $row['description']; ?></div> </div><?php$num = 0;$result_name = $db->query ( "select * from votename" );while ( $row_name = mysqli_fetch_assoc ( $result_name ) ) {$num += 1;$a = $row_name['question_name'];?><div class="mcontent"><a class="list-link" href="index.php?question_name=<?php echo $a ?>"><span name='question_name' id="question_name"><h2><?php echo $num.".".$row_name['question_name']; ?></h2></span></a></div><?php } ?><div style="clear:both;"></div></div><?php if($result_name->num_rows > 0){?><?php }else{ ?><h1>當前沒有投票</h1><?php } ?><br></div></form></div> </body> </html>這當中if( !isset($_SESSION['user']) || $_SESSION['user']!==true ){ ?>
<a href="admin/login.html">登錄投票</a>的作用也是防止通過url跳過檢測,當然也是使用了session來判斷是否已經登陸,若還未登錄則跳轉到登陸界面。
當實現了對所有投票題目的呈現后,就要考慮每一個投票的具體呈現,這里涉及到每個投票內容與該投票題目的匹配問題,所以在上述的代碼中,我將每一個投票題目設置了<a>標簽,并且讓其跳轉頁面的url設置href="index.php?question_name=<?php echo $a ?>"當中的$a就是該投票題目,這樣一來在每個投票題目具體的呈現頁面中我就可以通過解析該url來獲取它的投票題目,進而獲取該投票題目的全部內容,具體代碼如下:
上述代碼中獲取url的方法為
$url = $_SERVER["QUERY_STRING"];//獲取完成url
$test = parse_url("$url");//將url轉變成數組
$name = $test[path];//提取url中path項,即question_name=$a
$start = strrpos($name, '=');
$unquestion_name = substr($name , $start+1);//獲取亂碼的question_name
$question_name=urldecode($unquestion_name);//解析亂碼的question_name
在選項的呈現中包括一個是單選或者是多選的問題,在數據庫中對單選或多選的題目設置了標簽,votetype是0則為單選,1為多選所以有個判斷語句判斷但單選還是多選,而選項的呈現則和所有投票題目呈現的原理一樣。
這里還包括對應照片的呈現,我的方式是將照片的信息存儲在數據庫中,而照片則存儲在指定文件夾,通過尋找數據庫中對應照片的名字到指定文件夾尋找該照片并呈現出來,輸出照片的代碼echo "<img src=\"admin/upload/lk/".$row[filename]."\"><br>"。
總結
- 上一篇: 昭阳k20-80拆机过程
- 下一篇: 济南服务器管理系统方案,物品管理系统和物