PHP學習筆記(七):前臺使用者登陸、後臺匹配資料庫進行校驗

Jalon2015發表於2015-06-28

有兩個檔案login.html和login_check.php

login.html

<!--
	作者:1121263265@qq.com
	時間:2015-06-28
	描述:這個裡面有幾個知識點:
	1、重置按鈕的type=reset,可以直接清除輸入框的內容
	2、提交按鈕,提交前進行校驗的方法,就是寫一個指令碼check函式,然後在onclick時觸發
-->
<!DOCTYPE html>
<html>
<head>
<title>library</title>	
<meta charset="utf-8" />
</head>
<body>
<form action="login_check.php" οnsubmit="return check(this)" method="post">
姓名:<input type="text" name="name"><br>
密碼:<input type="text" name="password"><br>
<input type="submit" value="提交">
<input type="reset" value="重置" />
</form>

<script>
	function check(form)
	{
		//不能用null來代替'',因為null是這個變數不存在,''才是這個變數值為空
		//而事實上,即使沒有輸入名字或密碼,這個變數也還是存在的
		if(form.name.value!='' && form.password.value!='')
		{
			alert("使用者名稱和密碼已輸入,點選確認開始匹配");
		}
		else
		{
			if(!form.name.value)
			{
				alert("請輸入使用者名稱");
				form.name.focus();
				return false;
			}
			if(!form.password.value)
			{
				alert("請輸入密碼");
				form.password.focus();
				return false;
			}
		}		
	}
</script>
</body>
</html>

login_check.php

<meta charset="utf-8" />
<?php

session_start();
include('conn/conn.php');
$name=$_POST['name'];
$password=$_POST['password'];
if($name=='' || $password=='')
	echo "<script>history.go(-1);</script>";
$sql="select * from tb_manager where name=$name";
$result=mysqli_query($conn, $sql);
if(!mysqli_num_rows($result))
{
	//如果沒有這個賬號,就返回上一頁
	  echo"<script>alert('沒有對應的賬號');history.go(-1);</script>"; 
}
$array=mysqli_fetch_array($result, MYSQLI_NUM);
//資料庫結構為---$array[0]:ID,$array[1]:name,$array[2]:password
if($array[2]!=$password)
{
	//如果密碼錯誤,也返回上一頁
	echo "<script>alert('密碼輸入錯誤,請重新輸入');history.back();</script>";
}

echo "登陸成功!<br/> 賬號:$array[1]<br/> 密碼:$array[2]<br/>";

$_SESSION['name']=$name;
$_SESSION['password']=$password;
echo "即將跳轉到主頁!";

//頁面跳轉的兩種方式:
/*
 * 一、通過header()跳轉
 * 定時1秒後,跳轉到index.php
 * header("refresh:1;url=index.php"); 
 * 
 * 二、通過指令碼跳轉
 * echo "<script>var url='index.php';setTimeout('window.location.href=url',1000);</script>";
 * 
 */
	//下面用header方式跳轉
	 header("refresh:1;url=index.php"); 
//網上說header不能放到輸出內容的後面,但是我放到輸出內容的後面,也可以正常執行,不知道為啥
//header("Location:index.php");
?>



相關文章