PHP管理员登陆、验证与添加(前端验证)
//造成亂碼的原因為數(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)容輸出
//連接服務(wù)器,數(shù)據(jù)庫,(服務(wù)器的IP地址或者域名,用戶名,密碼)
$server = '127.0.0.1';
$user = 'root';
$pwd = '';
//將連接結(jié)果存入一個變量,并用錯誤抑制符@
@ $linkid = mysql_connect($server,$user,$pwd);
//輸出錯誤,終止程序。
if(!$linkid)
{
die('與服務(wù)器'.$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ù)可以將代碼放入服務(wù)器、數(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,服務(wù)器端生成文件,安全性高。$_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ù)組,因此需要下標(biāo)來指定值;*/
var n = obj.elements['username'];??? //返回的為對象或集合(自動判斷是對象還是集合,適合單選按鈕,復(fù)選框。) OR
var n = obj.username;
if(n.value == '' )
{
alert('用戶名不能為空');
n.focus(); //定位光標(biāo)到用戶名填寫框
return false;
}
var p = obj.password;
if(p.value )
{
alert('密碼不能為空');
p.focus(); //定位光標(biāo)到用戶名填寫框
return false;
}
if(p.value != obj.confirmpwd.value)
{
alert('密碼輸入不一致');
p.focus();
p.select(); //獲得焦點的同時,選中內(nèi)容
obj.confirmpwd.focus(); //定位光標(biāo)到用戶名填寫框
return false;
}
}
</script>
?<form action="admin_action.php" method="post" οnsubmit="return check(this)">
<p>用戶名:<input type="text" name="username" /></p>
<p>密碼:<input type="password" name="password" /></p>
<p>密碼確認(rèn):<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');
?
?>
?
轉(zhuǎn)載于:https://www.cnblogs.com/futan/archive/2012/12/18/php_admin_login.html
總結(jié)
以上是生活随笔為你收集整理的PHP管理员登陆、验证与添加(前端验证)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unix toolbox注解2之Linu
- 下一篇: Matlab中的一些小技巧