//造成亂碼的原因為數(shù)據(jù)庫(源),網(wǎng)頁編碼,文件編碼,php代碼,數(shù)據(jù)庫傳輸過程編碼mysql_query('SET NAMES utf8') header('Content-Type:text/html;charset=utf-8'); header('Cache-control:private'); //頁面啟用session之后,退回去時表單數(shù)據(jù)還存在。 session_start(); //session_start()前面不能有內(nèi)容輸出 //連接服務器,數(shù)據(jù)庫,(服務器的IP地址或者域名,用戶名,密碼) $server = '127.0.0.1'; $user = 'root'; $pwd = ''; //將連接結(jié)果存入一個變量,并用錯誤抑制符@ @ $linkid = mysql_connect($server,$user,$pwd); //輸出錯誤,終止程序。 if(!$linkid) { die('與服務器'.$server.'的連接失敗,原因為'.mysql_error()); } //選擇數(shù)據(jù)庫 $database = 'e1215cms'; $rs = mysql_select_db($database); if(!$rs) { die('選擇數(shù)據(jù)庫'.$database.'失敗,錯誤原因為'.mysql_error()); } //數(shù)據(jù)庫傳輸過程編碼mysql_query()該函數(shù)可以將代碼放入服務器、數(shù)據(jù)庫上運行。。 mysql_query('SET NAMES utf8'); 將這部分代碼作為獨立文件,放入includes文件夾,將代碼放入新建的config.php文件。 用require('../includes/config.php');調(diào)用. //流程:入口頁—login.html,用post方式提交到login.php,到數(shù)據(jù)庫查詢post過來的password和username。 $username = $_POST['username']; $password = md5( $_POST['password'] ); //由于表單中的密碼被加密,所以要用加密函數(shù) $sql=" select * from `tb_admin` where `username` = '$username' and `password` = '$password' LIMIT 1"; //加快執(zhí)行效率 //用雙引號 $sql = 'SELECT FROM `tb_admin` WHERE `username ` = " '.$username.' " AND `password` = " '.$password.' " '; $result = mysql_query($sql); //$result代表執(zhí)行sql語句后的結(jié)果集,用來判斷sql語句是否執(zhí)行成功 //判斷sql語句是否出錯,如果有錯,終止程序,輸出錯誤。如果查詢數(shù)據(jù)為0,依然代表執(zhí)行成功,不代表$result為false. if(!$result) { die(mysql_error()); } //從查詢到的結(jié)果集中抓取到$r $data = mysql_fetch_assoc($result); if(!$data) { die('<script>alert("不正確");window.location="login.html"</script>') //退回去,不保留原表單中的數(shù)據(jù)。 die('<script>alert("不正確");window.history.back()</script>'); //退回去,能夠保留原表單中的數(shù)據(jù)。 } else { //驗證管理員登陸,用全局變量$_SESSION,服務器端生成文件,安全性高。$_COOKIE驗證會員登錄,客戶端生成,安全性不高。 $_SESSION['username'] = $data['username']; $_SESSION['id'] = $data['id']; echo '輸入正確,您的ID是:'.$data['id']; print_r($r); //返回的為數(shù)組 header('location:index.php'); //PHP跳轉(zhuǎn) die('<script>window.location="index.php";</script>') } 檢測$_SESSION,放入includes, session_start(); if(!$_SESSION['username'] || !$_SESSION['id']) { header('Location:login.html'); die('<script>window.location="login.html";</script>'); } //添加管理員,add-admin.php,驗證功能盡量寫在前端。 require(../includes/check-admin.php); <script> function check(obj) { /*var n = document.getElementsByName('username')[0]; //getElementsByName抓取到的是數(shù)組,因此需要下標來指定值;*/ var n = obj.elements['username']; //返回的為對象或集合(自動判斷是對象還是集合,適合單選按鈕,復選框。) OR var n = obj.username; if(n.value == '' ) { alert('用戶名不能為空'); n.focus(); //定位光標到用戶名填寫框 return false; } var p = obj.password; if(p.value ) { alert('密碼不能為空'); p.focus(); //定位光標到用戶名填寫框 return false; } if(p.value != obj.confirmpwd.value) { alert('密碼輸入不一致'); p.focus(); p.select(); //獲得焦點的同時,選中內(nèi)容 obj.confirmpwd.focus(); //定位光標到用戶名填寫框 return false; } } </script> <form action="admin_action.php" method="post" onsubmit="return check(this)"> <p>用戶名:<input type="text" name="username" /></p> <p>密碼:<input type="password" name="password" /></p> <p>密碼確認:<input type="password" id="confirmpwd" /></p> <p><input tyep="submit" value="提交" /></p> </form> //管理員列表頁 <?php require(../includes/check-admin.php); //查詢所有管理員 $sql = "SELECT * FROM e1215cms ORDER BY id DESC"; //將最新添加的管理員放在前面 $result = mysql_query($sql); if(!$result) { die(mysql_error()); } ?> <table> <tr> <th>ID</th> <th>用戶名</th> <th>操作</th> </tr> <tr> <?php while($data = mysql_fetch_assoc($result)) { ?> <td><?=$data['id']?></td> <td><?=$data['username']?></td> <td><a href="edit.php">編輯</a><a href="delete.php">刪除</a></td> </tr> <?php } ?> </table> //管理員添加 <?php header('Cache-control:private'); //頁面啟用session之后,退回去時表單數(shù)據(jù)存在。(密碼域和文件域除外) session_start(); header('Content-Type:text/html;charset=utf-8'); ?> |
|
來自: abcen > 《ecshop轉(zhuǎn)載》