php+MySQL圖書管理系統(二)

Jimbo&zjb發表於2015-06-07

第五 新增資料庫管理員資料與使用者資料

這個比較無聊 用java拼接了一下sql語句 然後寫入資料庫
這個放在附件上傳就好了

第六 管理員與使用者的登入驗證

1、驗證碼。驗證碼一般就是伺服器產生一個隨機數,儲存在session中,最後與使用者的輸入驗證。因為驗證碼是圖形顯示的,所以必須使用者手工輸入,避免機器自動識別,防止密碼暴力破解。
2、線上驗證。通過使用者的session值,(儲存在COOKIE中,如果使用者不使用COOKIE,則使用位址列GET方式向伺服器提交),比較使用者是否合法、超時。
3、上面兩個場合是通行的做法。但是還有一種做法,是當前比較先進的。那就是對於使用者的密碼加密傳送。
使用者的密碼,如果以http方式傳輸,一般都是明文傳送的,這樣的密碼,容易被嗅探器捕獲。
如果使用session,情況就好多了。在伺服器端取隨機數,隨機數在伺服器端儲存在session值中,並將隨機數通過html頁面js程式的方式傳送到客戶端。使用者端只要將隨機數和密碼的MD5結果傳送出去,服務端從session中取出隨機數和資料庫資料計算出結果,兩個結果進行比較。
其中第三種應該是最安全的,當然也可以把方法結合起來一起用,這裡我只是將密碼做了一次MD5存放到資料庫了
下面是登入介面 自己寫的比較醜 直接找了一個開源Demo,想用的話去下載就好 或者直接獲取原始碼 我就不貼出來了


然後是登入驗證 這個比較簡單了 我先是簡單的把連線資料庫的程式碼放在了一個檔案中 ,封裝成一個個的函式,本來想封裝一個靜態類的,無奈php語言不熟悉,加上時間比較緊了所以直接就用函式好了,畢竟程式碼量不大
貼出程式碼:
<?php

	function getLink(){
		$link = mysql_connect('127.0.0.1', 'root', '') or die('
			連線資料路失敗,請檢查後重試!');
		if (!$link) {
			echo "連線失敗1";
			return '0';
		}else{
			return $link;
		}
	}

	function getResoures($DBName, $sql){
		try{
			$db_select = mysql_select_db($DBName);
			if (!$db_select) {
				echo "連線失敗2";
				//return '0';
			}
			$resoures = mysql_query($sql);
			return $resoures;
		}catch(Exception $e){
			echo 'Caught exception: ',  $e->getMessage(), "\n";
			//return '1'.$e->getMessage();
		}
	}

	function closeConnect($link){
		if (null != $link) {
			mysql_close($link);
		}
	}
?>

然後是把表單的資料提交給登入的驗證介面,同樣很簡單沒啥好說的
貼出程式碼:
<?php
	/* 0 admin登入成功
	 * 1 admin密碼錯誤
	 * 2 admin管理員不存在
	 * 
	 * 3 user登入成功
	 * 4 user密碼錯誤
	 * 5 user使用者名稱不存在
	 */
	
	require("MySqlUtils.php");
	header("Content-type:text/html;charset=utf-8");

	$username = $_POST["username"];
	$password = $_POST["password"];
	$password = md5($password);
	$isAdmin = $_POST['isAdmin'];
	if ($isAdmin){
		$r = adminLogin($username, $password);
	}else{
		$r = userLogin($username, $password);
	}
	selectNext($r);
	function selectNext($r){
		if(!$r){
			echo "<Script>alert('登入成功');</Script>";
		}else if ($r == 1) {
			echo "<Script>alert('密碼錯誤,請重新登入');</Script>";
			echo "<Script>window.location.href='login.php'</Script>";
		}else if ($r == 2){
			echo "<Script>alert('不存在該管理員,請重新登入');</Script>";
			echo "<Script>window.location.href='login.php'</Script>";
		}else if ($r == 3){
			echo "<Script>alert('登入成功');</Script>";
		}else if ($r == 4){
			echo "<Script>alert('密碼錯誤,請重新登入');</Script>";
		}else {
			echo "<Script>alert('不存在該使用者,請重新登入');</Script>";
		}
	}

	function adminLogin($username, $password){
		$link = getLink();
		$resoures = getResoures('libray', 'select * from admin;');
		$info = mysql_fetch_array($resoures);
		while($info){
			$u = $info['AdminID'];
			$p = $info['Password_MD5'];
			if ($username == $u) {
				if ($password == $p) {
					return 0;
				}else{
					return 1;
				}
			}
			$info = mysql_fetch_array($resoures);
		}
		closeConnect($link);
		return 2;
	}
	
	function userLogin($username, $password){
		$link = getLink();
		$resoures = getResoures('libray', 'select * from card;');
		$info = mysql_fetch_array($resoures);
		while($info){
			$u = $info['CardID'];
			$p = $info['Password'];
			if ($username == $u) {
				if ($password == $p) {
					return 3;
				}else{
					return 4;
				}
			}
			$info = mysql_fetch_array($resoures);
		}
		closeConnect($link);
		return 5;	
	}
?>

做到這個就可完成登入了
我把程式碼存到了百度雲 連結:http://pan.baidu.com/s/1kTKNBaZ 密碼:c0rj
我會一步一步更新 如果這個連結失效了 請往下部落格中去找最新的

相關文章