PHP MYSQL簡(jiǎn)易交互式站點(diǎn)開發(fā)
目的:使用PHP和MYSQL模擬權(quán)限管理系統(tǒng)的實(shí)現(xiàn)
general用戶只能查看其他用戶信息,不能進(jìn)行修改,添加,和刪除操作,root用戶可以完成以上三種操作。
實(shí)現(xiàn)思路
1.在MySQL數(shù)據(jù)庫中建立兩張數(shù)據(jù)表。一張數(shù)據(jù)表保存用戶名和密碼,用于登陸驗(yàn)證,另一張保存用戶權(quán)限等基本信息。
2.提交表單登陸時(shí),先在數(shù)據(jù)庫中查找該用戶存不存在,若不存在,報(bào)錯(cuò),存在,則驗(yàn)證密碼,密碼錯(cuò)誤則報(bào)錯(cuò),若密碼正確,登陸顯示所有存儲(chǔ)在數(shù)據(jù)庫中的用戶信息和當(dāng)前登陸用戶名。
3.在用戶進(jìn)行添加,刪除操作時(shí),先判斷權(quán)限是否足夠,有權(quán)限則完成相應(yīng)操作,修改數(shù)據(jù)庫內(nèi)容,否則提示沒有權(quán)限
具體實(shí)現(xiàn)
1.登陸頁面
<center> <form method="post" action="<?php echo $_SERVER['SCRIPT_NAME'] ?>"> 用戶名: <input type="text" name="user_name"> 密碼: <input type="text" name="password"> <input type="Submit" name="submit" value="登陸"> </form> </center>
效果如下:
2.連接數(shù)據(jù)庫對(duì)登陸名和密碼進(jìn)行驗(yàn)證
//登陸處理 if (isset($_POST['submit'])) { // 用戶名輸入為空 if($_POST['user_name'] == '') // 調(diào)用javascript函數(shù)動(dòng)態(tài)提醒 echo "<script type='text/javascript'>dis_alert(\"用戶名\",1);</script>";// 密碼輸入為空 if($_POST['password'] == '') // 調(diào)用javascript函數(shù)動(dòng)態(tài)提醒 echo "<script type='text/javascript'>dis_alert(\"密碼\",1);</script>"; // 用戶名與密碼均不為空 $user_name = $_POST['user_name']; //鏈接數(shù)據(jù)庫,從中讀出用戶名和密碼 $db = mysql_connect("localhost", "root", "123456"); mysql_select_db("linyimin", $db); $result = mysql_query("select * from login where user_name = '$user_name'"); $num = mysql_num_rows($result); //判斷用戶輸入的用戶名存在,驗(yàn)證密碼 if($num != 0) { $user_name = mysql_result($result,0,'user_name'); $password = mysql_result($result,0,'password'); if(strcmp($password,$_POST['password']) != 0) { echo "密碼錯(cuò)誤"; //密碼錯(cuò)誤,報(bào)錯(cuò) $password = $_POST['password']; echo "<script type='text/javascript'>dis_alert('密碼錯(cuò)誤',3);</script>"; } // 密碼正確 else { session_unset(); session_start(); $_SESSION['user_name'] = $_POST[user_name]; header("Location:http://localhost/display.php"); exit; } } // 用戶輸入的用戶名不存在,報(bào)錯(cuò) else if($num == 0) { // 用戶名不存在,報(bào)錯(cuò) $user_name = $_POST['user_name']; echo "<script type='text/javascript'>dis_alert(\"$user_name\",2);</script>"; } mysql_close($db); }//登陸處理結(jié)束
輸入錯(cuò)誤提醒函數(shù)
<script type="text/javascript"> // 登陸錯(cuò)誤提醒 function dis_alert(var1, var2) { // 用戶名和密碼不能為空提醒 if(var2 == 1) { alert(var1 + " 不能為空,請(qǐng)重新輸入"); history.back(-1); } // 用戶名不存在錯(cuò)誤提醒 if(var2 == 2) { alert("該用戶名 " + var1 + " 不存在,請(qǐng)重新輸入"); history.back(-1); } // 密碼錯(cuò)誤提醒 if(var2 == 3) { alert("密碼錯(cuò)誤,請(qǐng)重新輸入"); history.back(-1); } } </script>
錯(cuò)誤提醒效果圖:
3.成功登陸之后顯示數(shù)據(jù)庫中所有用戶信息和當(dāng)前登陸用戶名
// 獲取登陸名 session_start(); $NAME = $_SESSION['user_name']; // 連接數(shù)據(jù)庫,獲取數(shù)據(jù)并顯示 function display() { global $NAME; $db = mysql_connect("localhost", "root", "123456"); mysql_select_db("linyimin",$db); $sql = "select * from admin_info"; $result = mysql_query($sql); // 顯示信息表 echo "<h3 align=right color=#FFFFFF> 當(dāng)前用戶:$NAME</h6>"; echo "<table border = 0 align = center width = 1000></br>"; // 添加超鏈接 echo "<tr align = center><th> <a href =\"display.php?add=yes\">ADD</a></th><br>"; // 修改添加超連接 echo "<th> <a href =\"display.php?update=yes\">UPDATE</a></th><br>"; // 刪除超鏈接 echo "<th> <a href =\"display.php?delete=yes\">DELETE</a></th></tr><br>"; echo "</table>"; echo "<table border = 2 align = center width = 1000></br>"; // 表頭 echo "<tr><th colspan=\"3\">管理員權(quán)限表</th></tr><br>"; echo "<tr align = center><td>姓名</td><td>權(quán)限</td><td>職務(wù)</td></tr><br>"; while($row = mysql_fetch_row($result)) { // 顯示管理員信息并通過超鏈接調(diào)用處理函數(shù) echo "<tr align = center><td>$row[0]</td>"; echo "<td>$row[1]</td>"; echo "<td>$row[2]</td></tr>"; } echo "</table>"; mysql_close($db); }
顯示效果如下:
4.修改,刪除,添加操作的實(shí)現(xiàn)
修改,添加頁面
<center> <form method="post" action="<?php echo $_SERVER['URL'] ?>"> 姓名: <input type="text" name="user_name"> 權(quán)限: <input type="text" name="pemission"> 職務(wù): <input type="text" name="position"> <input type="Submit" name="update" value="提交"> </form> </center>
效果如下:
刪除頁面
<center> <form method="post" action="<?php echo $_SERVER['URL'] ?>" onsubmit="return confirm('請(qǐng)確認(rèn)刪除');"> 姓名: <input type="text" name="user_name"> <input type="submit" name="update" value="刪除"> </center>
效果圖如下:
實(shí)現(xiàn)
// 調(diào)用修改函數(shù) if ($_GET[update]) { modify("update"); } // 調(diào)用添加函數(shù) elseif($_GET[add]) { modify("add"); } elseif($_GET[delete]) { modify("delete"); }
modify()函數(shù)的實(shí)現(xiàn)
// 修改數(shù)據(jù)函數(shù) /* 點(diǎn)擊修改超鏈接,跳轉(zhuǎn)到修改頁面 表單中,名字項(xiàng)指定要修改記錄 權(quán)限和職務(wù)項(xiàng)為可修改內(nèi)容 */ function modify($operation) { if(isset($_POST['update'])) { // 有root權(quán)限修改,修改 if($operation == "update" && judge("update")) { $user_name = $_POST[user_name]; $sql = "UPDATE admin_info SET pemission = '$_POST[pemission]', position ='$_POST[position]' WHERE user_name = '$user_name'"; mysql_query($sql); mysql_close($db); display(); } // 添加 elseif(judge("add") && $operation == "add") { $user_name = $_POST[user_name]; $sql = "insert into admin_info (user_name, pemission, position) values ('$_POST[user_name]','$_POST[pemission]','$_POST[position]')"; mysql_query($sql); mysql_close($db); display(); } // 刪除 elseif(judge("delete") && $operation == "delete") { $user_name = $_POST[user_name]; // 獲取確認(rèn)情況 $sql = "delete from admin_info where user_name = \"$user_name\""; mysql_query($sql); } } }
judge()函數(shù)的實(shí)現(xiàn)
// 判斷修改用戶名是否存在和該用戶是否具有權(quán)限 function judge($operation) { global $NAME; // 修改用戶名 $user_name = $_POST['user_name']; // 連接數(shù)據(jù)庫,獲取數(shù)據(jù) $db = mysql_connect("localhost", "root", "123456"); mysql_select_db("linyimin",$db); // 該用戶是否存在 $sql = "select * from admin_info where user_name = \"$user_name\""; $result = mysql_query($sql); $num = mysql_num_rows($result); // 輸入名稱不存在 if ($num == 0 && $operation != "add") { $user_name = $_POST['user_name']; echo "<script type='text/javascript'>dis_alert(\"$user_name\",2);</script>"; return 0; } else { // 判斷有沒有權(quán)限(只有root權(quán)限可以修改) $sql = "select * from admin_info where user_name = \"$NAME\""; $result = mysql_query($sql); $pemission = mysql_result($result,0,'pemission'); // 沒有root權(quán)限,報(bào)錯(cuò) if(strcmp($pemission,"root") != 0) { $user_name = $_POST['user_name']; echo "<script type='text/javascript'>dis_alert(\"$user_name\",1);</script>"; return 0; } else return 1; } }
常用技巧記錄
1.利用session實(shí)現(xiàn)多個(gè)php文件使用同一個(gè)變量的方法
在定義該變量的文本中打開session,并把值存入session
usersession_unset(); session_start(); $_SESSION['變量名'] = "值";
在使用該變量的文本中打開session并取出該變量
session_start(); $NAME = $_SESSION['變量名'];
2.PHP連接MYSQL數(shù)據(jù)庫,并對(duì)數(shù)據(jù)庫進(jìn)行查找,添加,刪除操作
連接數(shù)據(jù)庫
// 連接數(shù)據(jù)庫 $db = mysql_connect("url", "用戶名", "密碼"); // 選擇數(shù)據(jù)庫 mysql_select_db("數(shù)據(jù)庫名稱",$db);
查找
$sql = "select * from admin_info where 字段名 = \"查找值\""; $result = mysql_query($sql); // 對(duì)查找返回結(jié)果進(jìn)行操作 // 獲取查找返回記錄數(shù)條數(shù) $num = mysql_num_rows($result); // 獲取查找結(jié)果第一條記錄的user_name字段值 $user_name = mysql_result($result,0,'user_name'); // 逐條取出查詢記錄 while($row = mysql_fetch_row($result)) { 相關(guān)操作; }
插入
$sql = "insert into 數(shù)據(jù)表 (字段1, 字段2, 字段3) values ('值1','值2','值3')"; mysql_query($sql);
刪除
$sql = "delete from 數(shù)據(jù)表 where 字段名 = \"查找值\""; mysql_query($sql); // 關(guān)閉數(shù)據(jù)庫 mysql_close($db);
3.表格提交前提醒
<form method="post" action="url" onsubmit="return confirm('請(qǐng)確認(rèn)刪除');">
4.在php中調(diào)用javascript函數(shù)
<?php echo "<script type='text/javascript'>javascript函數(shù);</script>"; ?>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 如何使用jQuery+PHP+MySQL來實(shí)現(xiàn)一個(gè)在線測(cè)試項(xiàng)目
- php+mysql結(jié)合Ajax實(shí)現(xiàn)點(diǎn)贊功能完整實(shí)例
- PHP+MYSQL會(huì)員系統(tǒng)的開發(fā)實(shí)例教程
- PHP和Mysqlweb應(yīng)用開發(fā)核心技術(shù) 第1部分 Php基礎(chǔ)-3 代碼組織和重用2
- PHP和Mysqlweb應(yīng)用開發(fā)核心技術(shù)-第1部分 Php基礎(chǔ)-2 php語言介紹
- PHP和Mysqlweb應(yīng)用開發(fā)核心技術(shù) 第1部分 Php基礎(chǔ)-1 開始了解php
- PHP與MySQL開發(fā)的8個(gè)技巧小結(jié)
- php+mysql開發(fā)的最簡(jiǎn)單在線題庫(在線做題系統(tǒng))完整案例
相關(guān)文章
Yii框架常見緩存應(yīng)用實(shí)例小結(jié)
這篇文章主要介紹了Yii框架常見緩存應(yīng)用,結(jié)合實(shí)例形式分析了Yii框架緩存相關(guān)的配置、獲取、查詢等操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-09-09tp5修改(實(shí)現(xiàn)即點(diǎn)即改)
今天小編就為大家分享一篇tp5修改(實(shí)現(xiàn)即點(diǎn)即改),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10Laravel 實(shí)現(xiàn)關(guān)系模型取出需要的字段
今天小編就為大家分享一篇Laravel 實(shí)現(xiàn)關(guān)系模型取出需要的字段,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10Base64在線編碼解碼實(shí)現(xiàn)代碼 演示與下載
最近遇到的幾個(gè)程序的加密方式都是Base64加密,很是暈菜,臨時(shí)整了個(gè)在線轉(zhuǎn)換,但是也不全部能搞定,呵呵也許還有不行的,希望對(duì)后來人有所幫助。2011-01-01CodeIgniter輔助之第三方類庫third_party用法分析
這篇文章主要介紹了CodeIgniter輔助之第三方類庫third_party用法,以CI集成Twig模版為例分析了CodeIgniter集成第三方類庫的實(shí)現(xiàn)步驟與相關(guān)技巧,需要的朋友可以參考下2016-01-01PHP的MVC模式實(shí)現(xiàn)原理分析(一相簡(jiǎn)單的MVC框架范例)
PHP的mvc框架很多,像Yii,CodeIgniter,ThinkPHP等現(xiàn)在流行的框架,利用MVC模式進(jìn)行web頁面的開發(fā),我們可以非常方便的編寫web程序2014-04-04laravel 操作數(shù)據(jù)庫常用函數(shù)的返回值方法
今天小編就為大家分享一篇laravel 操作數(shù)據(jù)庫常用函數(shù)的返回值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10