用PHP制作一個(gè)簡(jiǎn)單的注冊(cè)登錄頁(yè)面(用php制作一個(gè)簡(jiǎn)單的注冊(cè)登錄頁(yè)面)
大家覺(jué)得好的話,請(qǐng)大家關(guān)注點(diǎn)贊轉(zhuǎn)發(fā)一波,謝謝!
1.制作一個(gè)測(cè)試主頁(yè)
A.思維導(dǎo)圖:
B.源碼:
<?php
session_start();//啟動(dòng)新會(huì)話或者重用現(xiàn)有會(huì)話說(shuō)明
?>
<html>
<head>
<meta charset=”utf-8″ />
<title>測(cè)試主頁(yè)</title> <!–標(biāo)題–>
</head>
<body>
<?php
if (isset($_SESSION[‘userName’])) //isset() 檢測(cè)變量是否設(shè)置 如果登錄成功
{
$userName = $_SESSION[‘userName’];//$_SESSION[‘username’]的值賦值給變量$userName
echo “歡迎您:” . $userName; //歡迎您:登錄的名稱
echo ‘<a href = “logout.php”><input type = “button” value = “注銷” /></a>’; //注銷按鈕
}
else {//登錄失敗
echo ‘<a href = “login.php”><input type = “button” value = “登錄” /></a>’;//登錄按鈕
echo ‘<a href = “register.php”><input type = “button” value = “注冊(cè)” /></a>’;//注冊(cè)按鈕
}
?>
</body>
</html>
C.結(jié)果:
2. 登錄頁(yè)面
A. 思維導(dǎo)圖:
B.源碼:
<html>
<head>
<meta charset=”utf-8″ />
<title>登錄</title><!–標(biāo)題–>
<style>
.error{color:red;}<!–CSS樣式–>
</style>
</head>
<body>
<?php
$isInfoCanUse = false;//信息是否可用被顯示
$userName = $password= “”;//初始化,防止出現(xiàn)未定義就使用的錯(cuò)誤
$userNameErr = $passwordErr = “”;
function dealInfo($data){ //表單信息安全處理 防止被黑客攻擊
$data = trim($data);// 移除字符串兩側(cè)的空白字符或其他預(yù)定義字符
$data = htmlspecialchars($data);//把一些預(yù)定義的字符轉(zhuǎn)換為 HTML 實(shí)體
$data = stripslashes($data);//刪除反斜杠
return $data;
}
if ($_SERVER[‘REQUEST_METHOD’] == “POST”) { //判斷信息是否完整
$isInfoCanUse = true;
if (empty($_POST[‘userName’])) { //判斷用戶名稱是否為空
$isInfoCanUse = false;
$userNameErr = “用戶名稱不能為空”;//打印用戶名稱不能為空
} else {
$userName = dealInfo($_POST[‘userName’]); //調(diào)用表單信息安全處理函數(shù)
}
if (empty($_POST[‘password’])) {//判斷密碼是否為空
$isInfoCanUse = false;
$passwordErr = “密碼不能為空”;//打印密碼不能為空
} else {
$password = dealInfo($_POST[‘password’]); //調(diào)用表單信息安全處理函數(shù)
}
}
if ($_SERVER[‘REQUEST_METHOD’] == “POST” && $isInfoCanUse == true) { //判斷表單是不是POST請(qǐng)求 及其信息是否可用被顯示
$dbhost = ‘127.0.0.1’;//數(shù)據(jù)庫(kù)主機(jī)
$dbuser = ‘root’;//數(shù)據(jù)庫(kù)用戶名
$dbpass = ”;//數(shù)據(jù)庫(kù)密碼
$dbname = ‘users’;//數(shù)據(jù)庫(kù)名
$link = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);//連接數(shù)據(jù)
if (!$link) {
die(‘連接數(shù)據(jù)庫(kù)失敗<br/>’);//失敗 打印連接數(shù)據(jù)庫(kù)失敗
}
else {
//echo “連接數(shù)據(jù)庫(kù)成功<br/>”;//成功 打印連接數(shù)據(jù)庫(kù)成功
}
if ($isInfoCanUse){ //信息是否可用被顯示
$sql = “SELECT userName FROM account WHERE userName=’$userName'”;//sql 查詢語(yǔ)句 查詢用戶名
$result = mysqli_query($link, $sql);//不論成功與否,都返回結(jié)果集
$test = mysqli_fetch_assoc($result);//false 查找失敗
if($test == false) {
$userNameErr = “用戶名稱不存在”;
}
else {//sql 查詢語(yǔ)句 查詢用戶名和密碼
$sql = “SELECT userName,password FROM account
WHERE userName=’$userName’ and password = ‘$password'”;
$result = mysqli_query($link, $sql);//不論成功與否,都返回結(jié)果集
$test = mysqli_fetch_assoc($result);//false 查找失敗
if($test == false) {
$passwordErr = “密碼錯(cuò)誤”;
} else {
//存入session
session_start();//啟動(dòng)新會(huì)話或者重用現(xiàn)有會(huì)話說(shuō)明
$_SESSION[‘userName’] = $userName;//把用戶名稱存入$_SESSION[‘userName’]
echo “登錄成功!”; //打印登錄成功!
//頁(yè)面跳轉(zhuǎn)
echo ‘<a href = “homepage.php”><input type = “button” value = “返回主頁(yè)” /></a>’;
}
}
}
}
?>
<form method=”post” action=”<?php echo htmlspecialchars($_SERVER[‘PHP_SELF’]);?>” >
用戶名稱:<input type=”text” name=”userName” />
<?php echo “<span class=error>*” .$userNameErr.”</span>”;?><br/>
登錄密碼:<input type=”password” name=”password” />
<?php echo “<span class=error>*” .$passwordErr.”</span>”;?><br/>
<input type=”submit” value=”登錄” />
</form>
</body>
</html>
C.結(jié)果:
3.注冊(cè)
A.思維導(dǎo)圖:
B.源碼:
<html>
<head>
<meta charset=”utf-8″ />
<title>注冊(cè)</title><!–標(biāo)題–>
<style>
.error{color:red;}<!–CSS樣式–>
</style>
</head>
<body>
<?php
$isInfoCanUse = false;//信息是否可用被顯示
$userName = $password = $email = “”;
$userNameErr = $passwordErr = $emailErr = “必填項(xiàng)目”;
function dealInfo($data){ //表單信息安全處理
$data = trim($data);// 移除字符串兩側(cè)的空白字符或其他預(yù)定義字符
$data = htmlspecialchars($data);//把一些預(yù)定義的字符轉(zhuǎn)換為 HTML 實(shí)體
$data = stripslashes($data);//刪除反斜杠
return $data;
}
if ($_SERVER[‘REQUEST_METHOD’] == “POST”) { //判斷信息是否完整
$isInfoCanUse = true;
if (empty($_POST[‘userName’])) {//判斷用戶名稱是否為空
$isInfoCanUse = false;
$userNameErr = “用戶名稱不能為空”;//打印用戶名稱不能為空
} else {
if (!preg_match(“/^[w]*$/”,$_POST[‘userName’])) {//用正則表達(dá)式判斷是否符合字母和數(shù)字
$userNameErr = “只允許字母和數(shù)字”; //打印只允許字母和數(shù)字
$isInfoCanUse = false;
}
else {
$userName = dealInfo($_POST[‘userName’]); //調(diào)用表單信息安全處理函數(shù)
}
}
if (empty($_POST[‘password’])) {//判斷密碼是否為空
$isInfoCanUse = false;
$passwordErr = “注冊(cè)密碼不能為空”;//打印注冊(cè)密碼不能為空
} else {
if (!preg_match(“/(w{6,14})/”,$_POST[‘password’])) {//用正則表達(dá)式判斷是否符合6到14位
$passwordErr = “密碼長(zhǎng)度 6~14位”; //打印密碼長(zhǎng)度 6~14位
$isInfoCanUse = false;
}
else{
$password = dealInfo($_POST[‘password’]);//調(diào)用表單信息安全處理函數(shù)
}
}
if (empty($_POST[’email’])) {////判斷郵箱是否為空
$isInfoCanUse = false;
$emailErr = “注冊(cè)郵箱不能為空”;//打印注冊(cè)郵箱不能為空
} else {
if (!preg_match(“/([w-] @[w-] .[w-] )/”,$_POST[’email’])) {//用正則表達(dá)式判斷是否符合郵箱格式
$emailErr = “非法郵箱格式”; //打印非法郵箱格式
$isInfoCanUse = false;
}
else {
$email = dealInfo($_POST[’email’]);//調(diào)用表單信息安全處理函數(shù)
}
}
}
if ($_SERVER[‘REQUEST_METHOD’] == “POST” && $isInfoCanUse == true) {
$dbhost = ‘127.0.0.1’;//數(shù)據(jù)庫(kù)主機(jī)
$dbuser = ‘root’;//數(shù)據(jù)庫(kù)用戶名
$dbpass = ”;//數(shù)據(jù)庫(kù)密碼
$dbname = ‘users’;//數(shù)據(jù)庫(kù)名
$link = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);//連接數(shù)據(jù)庫(kù)
if (!$link) {
die(‘連接數(shù)據(jù)庫(kù)失敗<br/>’);//失敗 打印連接數(shù)據(jù)庫(kù)失敗
}
else {
//echo “連接數(shù)據(jù)庫(kù)成功<br/>”;//成功 打印連接數(shù)據(jù)庫(kù)成功
}
$sql = “SELECT userName FROM account WHERE userName=’$userName'”;//sql 查詢語(yǔ)句 查詢用戶名
$result = mysqli_query($link, $sql);//不論成功與否,都返回結(jié)果集
$test = mysqli_fetch_assoc($result);//false 查找失敗
if($test != false) {
$userNameErr = “用戶名稱已經(jīng)存在”;//打印用戶名稱已經(jīng)存在
}
else {//sql 添加語(yǔ)句 添加用戶名 密碼 郵箱
$sql = “INSERT INTO account(userName, password, email)
VALUES(‘$userName’, ‘$password’, ‘$email’)”;
if (mysqli_query($link, $sql)) {
echo “注冊(cè)成功<br/>”; //打印注冊(cè)成功
}
else {
echo “注冊(cè)失敗<br/>”;//打印注冊(cè)失敗
}
//頁(yè)面跳轉(zhuǎn)
echo ‘<a href = “homepage.php”><input type = “button” value = “返回主頁(yè)” /></a>’;
}
}
?>
<form method=”post” action=”<?php echo htmlspecialchars($_SERVER[‘PHP_SELF’]);?>” >
用戶名稱:<input type=”text” name=”userName” />
<?php echo “<span class=error>*” .$userNameErr.”</span>”;?><br/>
注冊(cè)密碼:<input type=”password” name=”password” />
<?php echo “<span class=error>*” .$passwordErr.”</span>”;?><br/>
注冊(cè)郵箱:<input type=”text” name=”email” />
<?php echo “<span class=error>*”.$emailErr.”</span>”;?><br/>
<input type=”submit” value=”注冊(cè)” />
</form>
</body>
</html>
C.結(jié)果:
4.注銷頁(yè)面
A.思維導(dǎo)圖:
B.源碼:
<?php
session_start();//啟動(dòng)新會(huì)話或者重用現(xiàn)有會(huì)話說(shuō)明
if (isset($_SESSION[‘userName’])) //isset() 檢測(cè)變量是否設(shè)置 如果登錄成功
{
session_unset();//會(huì)釋放當(dāng)前會(huì)話注冊(cè)的所有會(huì)話變量。
session_destroy();//銷毀一個(gè)會(huì)話中的全部數(shù)據(jù)
}
?>
<html>
<head>
<meta charset=”utf-8″ />
<title>注銷頁(yè)面</title><!–標(biāo)題–>
</head>
<body>
<a href = “homepage.php”><input type = “button” value = “返回主頁(yè)” /></a>
</body>
</html>
C.結(jié)果: