PHP+mysql的登陸與注冊


PHP+mysql的登陸與注冊

圖1:
在這里插入圖片描述
圖2:
在這里插入圖片描述
圖3:
在這里插入圖片描述
教程:
實現這個功能我們需要五個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"> <h1>登錄頁面</h1> </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="<?php
echo isset($_COOKIE[""]) ? $_COOKIE[""] : ""; ?>"> </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" style="color:red;font-size:10px;"> <!--提示信息--> <?php
$err = isset($_GET["err"]) ? $_GET["err"] : "";
switch ($err) {
    case 1:
        echo "用戶名或密碼錯誤!";
        break;

    case 2:
        echo "用戶名或密碼不能為空!";
        break;
} ?> </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"> 還沒有賬號,快去<a href="register.php">注冊</a>吧</td>
</tr> 
</table> 
</form> 
</div> 
<!--腳部--> 
<div class="footer"> <small>Copyright &copy; 版權所有·歡迎翻版 </div> </div>
</body>
</html>   

loginaction.php
(使login.php實現與數據庫的連接,並校正輸入)

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

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

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

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

<!DOCTYPE html>
<html>
<head><title>注冊</title>
<meta name="content-type"; charset="UTF-8">
</head><body> 
<div class="content" align="center"> <!--頭部--> 
<div class="header"> <h1>注冊頁面</h1> </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>重復密碼:</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" style="color:red;font-size:10px;"> <!--提示信息--> 
<?php
$err = isset($_GET["err"]) ? $_GET["err"] : "";
switch ($err) {
    case 1:
        echo "用戶名已存在!";
        break;

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

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

registeraction.php
(實現register.php連接數據庫,並向指定表單插入數據)

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

建議將五個文件存於本地,便於更改,當然不介意用linux的文本編輯器也可以直接上傳后在服務器端修改。保存好文件后:

1.創建數據庫及表單

小編這里是通過phpmyadmin可視化界面創建的數據庫和表單,進入ip/phpmyadmin后登陸數據庫:
在這里插入圖片描述
登陸myadmin后創建數據庫user和表單usertext:
在這里插入圖片描述
在這里插入圖片描述

2.php文件中操作數據庫的函數

這里小編先解釋下列php數據庫操作函數的作用:
(1)mysqli_connect(“localhost”, “服務器名”, “數據庫密碼”, “連接的數據庫名”);
參數描述:
“localhost”,不需要更改,新手切忌不要改成服務器的ip地址,因為創建數據庫的默認的有權限訪問用戶為:
在這里插入圖片描述
“連接的數據庫名”,是數據庫不要填表單,第一步的user是數據庫,usertext是表單。
(2)mysqli_query()函數執行某個針對數據庫的查詢:
mysqli_query(connection,query,resultmode);
參數描述:
connection 必需。規定要使用的 MySQL 連接。
query 必需,規定查詢字符串。
(這是一個存放mysql命令的字符串,命令內容要用該函數才可實現)
resultmode
可選。一個常量。可以是下列值中的任意一個:
MYSQLI_USE_RESULT(如果需要檢索大量數據,請使用這個)
MYSQLI_STORE_RESULT(默認)
eg:
(3)mysqli_fetch_array() 函數
從結果集中取得一行作為關聯數組,或數字數組,或二者兼有。
mysqli_fetch_array(result,resulttype);
參數描述:
result 必需。規定由 mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的結果集標識符。
resulttype 可選。規定應該產生哪種類型的數組。可以是以下值中的一個:
MYSQLI_ASSOC
MYSQLI_NUM
MYSQLI_BOTH

3修改php文件實現登錄注冊

下面我們來對loginaction.php和registeraction.php兩個文件進行更改
如果數據庫創建和第1步時一樣,那只需要對兩個文件中的:
mysqli_connect(“localhost”, “服務器名”, “數據庫密碼”, “user”);
進行用戶信息填寫即可。
如果數據庫名稱或表單不一樣,則需要找到下面語句:
mysqli_connect(“localhost”, “服務器名”, “數據庫密碼”, “user”);
SELECT;
INSERT INTO;(只在registeraction.php有)
將上述語句中的(數據庫名)user和(表單名)usertext修改成你的數據庫名和表單名。

4進一步完善

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM