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