php原生開發新聞站之後台登入...LOGIN

php原生開發新聞站之後台登入功能

我們之前的課程給大家介紹了做登入功能之前的所有準備,匯入模板,建立資料庫,之前的課程都不把這些的準備都已經完成了,那麼接下來就是我們要開始做登入功能了!

首先我們要建立一個login.php文件,這個文件可以用來寫登入頁面的判斷和驗證,也可以把登入的html部分和登入驗證判斷的php文件寫在一起,因為我們都知道php檔案裡面可以寫html程式碼!但是我們還是推薦分開來寫!

建立好login.php檔案以後,首先要做的就是連接資料庫,因為後面的驗證都是要跟資料做比較!

在這裡要宣告一下,如果你的登入頁面有驗證碼的話,那麼在每個頁面的一開始必須開啟 session_start();不然驗證碼驗證不了,我們這裡有驗證碼所以我開啟了session_start();

程式碼如下:

<?php
session_start();
// 连接mysql数据库
$link = mysqli_connect('localhost', 'root', 'root');
if (!$link) {
    echo "connect mysql error!";
    exit();
}
// 选中数据库 news为数据库的名字
$db_selected = mysqli_select_db($link, 'news');
if (!$db_selected) {
    echo "<br>selected db error!";
    exit();
}
// 设置mysql字符集 为 utf8
$link->query("set names utf8");

接下來就是要取得表單傳過來的資料了,因為我們要把使用者輸入在表單的使用者名稱以及密碼取得到,然後在進行跟資料庫做對比,看看是否完全一致!

<?php
$username = $_POST['username'];//获取用户名
$password = $_POST['password'];//获取密码
$code = $_POST['code'];

至於是post傳輸資料還是get傳輸數據,這個要根據你form表單裡面的method的屬性了。我們這裡是post!

資料已經取得到了,接著就是需要驗證了,看看使用者輸入的資料是否跟資料庫的資料完全一致,這樣才能判斷能不能讓使用者登入使用SQL語句來查詢,程式碼如下:

<?php
if(!empty($_POST)){
    // 查询数据库中是否存在用户信息
    $sql = "select * from user where username = '{$username}' and password = '{$password}'";
    $result = mysqli_query($link,$sql);
    $user = mysqli_fetch_array($result,MYSQL_ASSOC);}

查詢到資料以後,進行對兩組資料進行比較:

if($user){
    header("Location: index.php");
}else{
    echo "<script>alert('账户或者密码错误!重新填写')</script>";
}

到這裡我們都是驗證了使用者名稱以及密碼,那麼我們這樣有驗證碼,所以我們還要對驗證碼進行驗證,這裡我用了一驗證碼類別

1738.png

#code.zip

這裡也分享給大家!

然後我們要對驗證碼進行驗證,程式碼如下:

if(($_SESSION['authcode']) !== ($code)){               //验证码作对比,验证码页面跟输入的验证码对比
    echo "<script>alert('验证码错误!重新填写')</script>";

說明一下:這裡的$_SESSION['authcode'] 是code驗證碼類別中的儲存的驗證碼,我們要透過使用者輸入與儲存的驗證,結果一致就通過!

OK! 到這裡我們的登入功能就完成了!

下一節
<?php session_start(); // 连接mysql数据库 $link = mysqli_connect('localhost', 'root', 'root'); if (!$link) { echo "connect mysql error!"; exit(); } // 选中数据库 news为数据库的名字 $db_selected = mysqli_select_db($link, 'news'); if (!$db_selected) { echo "<br>selected db error!"; exit(); } // 设置mysql字符集 为 utf8 $link->query("set names utf8"); if(!empty($_POST)){ $username = $_POST['username'];//获取用户名 $password = $_POST['password'];//获取密码 $code = $_POST['code']; // 查询数据库中是否存在用户信息 $sql = "select * from user where username = '{$username}' and password = '{$password}'"; $result = mysqli_query($link,$sql); $user = mysqli_fetch_array($result,MYSQL_ASSOC); if(($_SESSION['authcode']) !== ($code)){ //验证码作对比,验证码页面跟输入的验证码对比 echo "<script>alert('验证码错误!重新填写')</script>"; }elseif($user){ header("Location: index.php"); }else{ echo "<script>alert('账户或者密码错误!重新填写')</script>"; }
章節課件