溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP實(shí)現(xiàn)用戶登錄注冊(cè)功能的方法

發(fā)布時(shí)間:2020-08-10 11:15:00 來(lái)源:億速云 閱讀:193 作者:小新 欄目:開發(fā)技術(shù)

這篇文章給大家分享的是有關(guān)PHP實(shí)現(xiàn)用戶登錄注冊(cè)功能的方法的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。

教程前先給大家看看小編的實(shí)現(xiàn)成果吧!

圖1:

PHP實(shí)現(xiàn)用戶登錄注冊(cè)功能的方法

圖2:

PHP實(shí)現(xiàn)用戶登錄注冊(cè)功能的方法

圖3:

PHP實(shí)現(xiàn)用戶登錄注冊(cè)功能的方法

教程:
實(shí)現(xiàn)這個(gè)功能我們需要五個(gè)php文件:

login.php
(登錄界面,如圖2)

<!DOCTYPE html>
<html><head>
<title>登錄</title>
<meta name="content-type"; charset="UTF-8">
</head><body> 
<div class="content" align="center"> <!--頭部-->
 <div class="header"> <h2>登錄頁(yè)面</h2> </div> 
<!--中部--> 
<div class="middle">
 <form id="loginform" action="loginaction.php" method="post"> 
<table border="0"> <tr> 
 <td>用戶名:</td> 
<td> <input type="text" id="name" name="username" 
required="required" value="<&#63;php
echo isset($_COOKIE[""]) &#63; $_COOKIE[""] : ""; &#63;>"> </td> </tr> 
<tr> <td>密 碼:</td> <td><input type="password" id="password" name="password"></td> 
</tr> <tr> <td colspan="2"> <input type="checkbox" name="remember"><small>記住我 </td> </tr> <tr> <td 
colspan="2" align="center" > <!--提示信息--> <&#63;php
$err = isset($_GET["err"]) &#63; $_GET["err"] : "";
switch ($err) {
 case 1:
  echo "用戶名或密碼錯(cuò)誤!";
  break;

 case 2:
  echo "用戶名或密碼不能為空!";
  break;
} &#63;> </td> </tr> <tr> <td colspan="2" align="center"> 
<input type="submit" id="login" name="login" value="登錄"> <input type="reset" id="reset" 
name="reset" value="重置"> </td> </tr> 
<tr> 
 <td colspan="2" align="center"> 還沒有賬號(hào),快去<a href="register.php" rel="external nofollow" >注冊(cè)</a>吧</td>
</tr> 
</table> 
</form> 
</div> 
<!--腳部--> 
<div class="footer"> <small>Copyright &copy; 版權(quán)所有·歡迎翻版 </div> </div>
</body>
</html>  

loginaction.php
(使login.php實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的連接,并校正輸入)

<&#63;php
// $Id:$ //聲明變量
$username = isset($_POST['username']) &#63; $_POST['username'] : "";
$password = isset($_POST['password']) &#63; $_POST['password'] : "";
$remember = isset($_POST['remember']) &#63; $_POST['remember'] : ""; //判斷用戶名和密碼是否為空
if (!empty($username) && !empty($password)) { //建立連接
 $conn = mysqli_connect('localhost', '', '', 'user'); //準(zhǔn)備SQL語(yǔ)句
 $sql_select = "SELECT username,password FROM usertext WHERE username = '$username' AND password = '$password'"; //執(zhí)行SQL語(yǔ)句
 $ret = mysqli_query($conn, $sql_select);
 $row = mysqli_fetch_array($ret); //判斷用戶名或密碼是否正確
 if ($username == $row['username'] && $password == $row['password']) 
 { //選中“記住我”
  if ($remember == "on") 
  { //創(chuàng)建cookie
   setcookie("", $username, time() + 7 * 24 * 3600);
  } //開啟session
  session_start(); //創(chuàng)建session
  $_SESSION['user'] = $username; //寫入日志
  $ip = $_SERVER['REMOTE_ADDR'];
  $date = date('Y-m-d H:m:s');
  $info = sprintf("當(dāng)前訪問(wèn)用戶:%s,IP地址:%s,時(shí)間:%s /n", $username, $ip, $date);
  $sql_logs = "INSERT INTO logs(username,ip,date) VALUES('$username','$ip','$date')";
  //日志寫入文件,如實(shí)現(xiàn)此功能,需要?jiǎng)?chuàng)建文件目錄logs
  $f = fopen('./logs/' . date('Ymd') . '.log', 'a+');
  fwrite($f, $info);
  fclose($f); //跳轉(zhuǎn)到loginsucc.php頁(yè)面
  header("Location:loginsucc.php"); //關(guān)閉數(shù)據(jù)庫(kù),跳轉(zhuǎn)至loginsucc.php
  mysqli_close($conn);
 }
 else 
 { 
  //用戶名或密碼錯(cuò)誤,賦值err為1
  header("Location:login.php&#63;err=1");
 }
} else { //用戶名或密碼為空,賦值err為2
 header("Location:login.php&#63;err=2");
} &#63;>

loginsucc.php
(登錄成功后界面,如圖3)

<!DOCTYPE html>
<html>
<head>
<title>登錄成功</title>
<meta name="content-type";
 charset="UTF-8">
</head>
<body> 
<div> 
<&#63;php
// $Id:$ //開啟session
session_start(); //聲明變量
$username = isset($_SESSION['user']) &#63; $_SESSION['user'] : ""; //判斷session是否為空
if (!empty($username)) { &#63;> 
<h2>登錄成功!</h2> 歡迎您!
<&#63;php
 echo $username; &#63;> 
<br/> <a href="login.php" rel="external nofollow" rel="external nofollow" >退出</a> //跳轉(zhuǎn)至主網(wǎng)頁(yè)
<&#63;php
} else { //未登錄,無(wú)權(quán)訪問(wèn)
  &#63;>
 <h2>你無(wú)權(quán)訪問(wèn)!??!</h2> 
<&#63;php
} &#63;> </div>
</body>
</html>

register.php
(注冊(cè)界面,如圖1)

<!DOCTYPE html>
<html>
<head><title>注冊(cè)</title>
<meta name="content-type"; charset="UTF-8">
</head><body> 
<div class="content" align="center"> <!--頭部--> 
<div class="header"> <h2>注冊(cè)頁(yè)面</h2> </div> <!--中部--> 
<div class="middle"> 
<form action="registeraction.php" method="post"> <table border="0"> 
<tr> <td>用戶名:</td> 
<td><input type="text" id="id_name" name="username" required="required"></td> 
</tr> <tr>
 <td>密 碼:</td> <td><input type="password" id="password" name="password" 
required="required"></td> 
</tr> <tr>
 <td>重復(fù)密碼:</td> <td><input type="password" id="re_password" 
name="re_password" required="required"></td> </tr> <tr>
 <td>性別:</td> <td> <input type="radio" id="sex" name="sex" value="mam">男 <input type="radio" id="sex" name="sex" value="woman">女 </td> </tr> <tr>
 <td>QQ:</td> <td><input type="text" id="qq" name="qq" required="required"></td> </tr> <tr> 
<td>Email:</td> <td><input type="email" id="email" name="email" required="required"></td> </tr> <tr> 
<td>電話:</td> <td><input type="text" id="phone" name="phone" required="required"></td> </tr> <tr> 
<td>地址:</td> <td><input type="text" id="address" name="address" required="required"></td> </tr> 
<tr> <td colspan="2" align="center" > <!--提示信息--> 
<&#63;php
$err = isset($_GET["err"]) &#63; $_GET["err"] : "";
switch ($err) {
 case 1:
  echo "用戶名已存在!";
  break;

 case 2:
  echo "密碼與重復(fù)密碼不一致!";
  break;

 case 3:
  echo "注冊(cè)成功!";
  break;
}
&#63;> 
</td> </tr> <tr> <td colspan="2" align="center"> 
<input type="submit" id="register" name="register" value="注冊(cè)">
 <input type="reset" id="reset" name="reset" value="重置"> </td></tr> 
 <tr> <td colspan="2" align="center"> 
如果已有賬號(hào),快去<a href="login.php" rel="external nofollow" rel="external nofollow" >登錄</a>吧! </td> </tr> </table> </form> </div> 
<!--腳部--> 
<div class="footer"> <small>Copyright &copy; 版權(quán)所有·歡迎翻版 </div> </div></body></html>

registeraction.php
(實(shí)現(xiàn)register.php連接數(shù)據(jù)庫(kù),并向指定表單插入數(shù)據(jù))

<&#63;php
// $Id:$ //聲明變量
$username = isset($_POST['username']) &#63; $_POST['username'] : "";
$password = isset($_POST['password']) &#63; $_POST['password'] : "";
$re_password = isset($_POST['re_password']) &#63; $_POST['re_password'] : "";
$sex = isset($_POST['sex']) &#63; $_POST['sex'] : "";
$qq = isset($_POST['qq']) &#63; $_POST['qq'] : "";
$email = isset($_POST['email']) &#63; $_POST['email'] : "";
$phone = isset($_POST['phone']) &#63; $_POST['phone'] : "";
$address = isset($_POST['address']) &#63; $_POST['address'] : "";
if ($password == $re_password) { //建立連接
 $conn = mysqli_connect("localhost", "", "", "user"); //準(zhǔn)備SQL語(yǔ)句,查詢用戶名
 $sql_select = "SELECT username FROM usertext WHERE username = '$username'"; //執(zhí)行SQL語(yǔ)句
 $ret = mysqli_query($conn, $sql_select);
 $row = mysqli_fetch_array($ret); //判斷用戶名是否已存在
 if ($username == $row['username']) { //用戶名已存在,顯示提示信息
  header("Location:register.php&#63;err=1");
 } else { //用戶名不存在,插入數(shù)據(jù) //準(zhǔn)備SQL語(yǔ)句
  $sql_insert = "INSERT INTO usertext(username,password,sex,qq,email,phone,address) 
VALUES('$username','$password','$sex','$qq','$email','$phone','$address')"; //執(zhí)行SQL語(yǔ)句
  mysqli_query($conn, $sql_insert);
  header("Location:register.php&#63;err=3");
 } //關(guān)閉數(shù)據(jù)庫(kù)
 mysqli_close($conn);
} else {
 header("Location:register.php&#63;err=2");
} &#63;>

建議將五個(gè)文件存于本地,便于更改,當(dāng)然不介意用linux的文本編輯器也可以直接上傳后在服務(wù)器端修改。保存好文件后:

1.創(chuàng)建數(shù)據(jù)庫(kù)及表單

小編這里是通過(guò)phpmyadmin可視化界面創(chuàng)建的數(shù)據(jù)庫(kù)和表單,進(jìn)入ip/phpmyadmin后登陸數(shù)據(jù)庫(kù):

PHP實(shí)現(xiàn)用戶登錄注冊(cè)功能的方法

登陸myadmin后創(chuàng)建數(shù)據(jù)庫(kù)user和表單usertext:

PHP實(shí)現(xiàn)用戶登錄注冊(cè)功能的方法

PHP實(shí)現(xiàn)用戶登錄注冊(cè)功能的方法

2.php文件中操作數(shù)據(jù)庫(kù)的函數(shù)

這里小編先解釋下列php數(shù)據(jù)庫(kù)操作函數(shù)的作用:
(1)mysqli_connect(“l(fā)ocalhost”, “服務(wù)器名”, “數(shù)據(jù)庫(kù)密碼”, “連接的數(shù)據(jù)庫(kù)名”);
參數(shù)描述:
“l(fā)ocalhost”,不需要更改,新手切忌不要改成服務(wù)器的ip地址,因?yàn)閯?chuàng)建數(shù)據(jù)庫(kù)的默認(rèn)的有權(quán)限訪問(wèn)用戶為:

PHP實(shí)現(xiàn)用戶登錄注冊(cè)功能的方法

“連接的數(shù)據(jù)庫(kù)名”,是數(shù)據(jù)庫(kù)不要填表單,第一步的user是數(shù)據(jù)庫(kù),usertext是表單。

(2)mysqli_query()函數(shù)執(zhí)行某個(gè)針對(duì)數(shù)據(jù)庫(kù)的查詢:
mysqli_query(connection,query,resultmode);
參數(shù)描述:
connection必需。規(guī)定要使用的 MySQL 連接。
query必需,規(guī)定查詢字符串。
(這是一個(gè)存放mysql命令的字符串,命令內(nèi)容要用該函數(shù)才可實(shí)現(xiàn))
resultmode
可選。一個(gè)常量??梢允窍铝兄抵械娜我庖粋€(gè):
MYSQLI_USE_RESULT(如果需要檢索大量數(shù)據(jù),請(qǐng)使用這個(gè))
MYSQLI_STORE_RESULT(默認(rèn))
eg:

(3)mysqli_fetch_array() 函數(shù)
從結(jié)果集中取得一行作為關(guān)聯(lián)數(shù)組,或數(shù)字?jǐn)?shù)組,或二者兼有。
mysqli_fetch_array(result,resulttype);
參數(shù)描述:
result必需。規(guī)定由 mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的結(jié)果集標(biāo)識(shí)符。
resulttype可選。規(guī)定應(yīng)該產(chǎn)生哪種類型的數(shù)組。可以是以下值中的一個(gè):
MYSQLI_ASSOC
MYSQLI_NUM
MYSQLI_BOTH

3修改php文件實(shí)現(xiàn)登錄注冊(cè)

下面我們來(lái)對(duì)loginaction.php和registeraction.php兩個(gè)文件進(jìn)行更改
如果數(shù)據(jù)庫(kù)創(chuàng)建和第1步時(shí)一樣,那只需要對(duì)兩個(gè)文件中的:
mysqli_connect(“l(fā)ocalhost”, “服務(wù)器名”, “數(shù)據(jù)庫(kù)密碼”, “user”);
進(jìn)行用戶信息填寫即可。
如果數(shù)據(jù)庫(kù)名稱或表單不一樣,則需要找到下面語(yǔ)句:
mysqli_connect(“l(fā)ocalhost”, “服務(wù)器名”, “數(shù)據(jù)庫(kù)密碼”, “user”);
SELECT;
INSERT INTO;(只在registeraction.php有)
將上述語(yǔ)句中的(數(shù)據(jù)庫(kù)名)user和(表單名)usertext修改成你的數(shù)據(jù)庫(kù)名和表單名。

4進(jìn)一步完善

有興趣的朋友可以試著向小編一樣創(chuàng)建超鏈接,登錄成功后跳轉(zhuǎn)到指定網(wǎng)頁(yè);
在loginsucc.php中找到退出將login.php改為其他網(wǎng)頁(yè)(直接寫文件名的話需要放于同一目錄下)

PHP實(shí)現(xiàn)用戶登錄注冊(cè)功能的方法

點(diǎn)擊鏈接:

PHP實(shí)現(xiàn)用戶登錄注冊(cè)功能的方法

當(dāng)然有進(jìn)必有出,這里小編設(shè)置了一個(gè)退出登錄modal
(bootstrap使用:https://getbootstrap.com/docs/4.3/getting-started/introduction/)

PHP實(shí)現(xiàn)用戶登錄注冊(cè)功能的方法

感謝各位的閱讀!關(guān)于PHP實(shí)現(xiàn)用戶登錄注冊(cè)功能的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI