1. 程式人生 > >【php增刪改查實例】第十八節 - login.php編寫

【php增刪改查實例】第十八節 - login.php編寫

ray str for -o arr ech gin and 用戶表

1.對用戶名和密碼進行非空判斷(後臺驗證)

    $username;
    $password;

    if(isset($_POST[‘username‘]) && $_POST[‘username‘] != null){
        $username = $_POST[‘username‘];
    }else{
        echo "<h2 style=‘color:red‘>用戶名不能為空!</h2>";
        return;
    }
    

    if(isset($_POST[‘password‘]) && $_POST[‘password‘] != null){
        $password = md5($_POST[‘password‘]);
    }else{
        echo "<h2 style=‘color:red‘>密碼不能為空!</h2>";
        return;
    }

2. 進行數據庫鏈接

$conn = mysql_connect("localhost","root","");
$db = mysql_select_db("test",$conn);
mysql_query("set names utf8");
  1. 根據用戶名和密碼進行用戶表的查詢,如果用戶存在,那麽查詢出來的數量肯定等於1,否則,認為用戶名和密碼錯誤。還有一種情況,就是單單根據用戶名去查,如果查不到這個用戶名,就提示用戶用戶名不存在。

    $sql = "select count(*) as total from tm_users where username = ‘$username‘";
    
    $rs = mysql_query($sql);
    
    
    while($row = mysql_fetch_array($rs)){
        if($row["total"] != 1){
            echo "<h2 style=‘color:red‘>該用戶名不存在!</h2>";
            return;
        }
    }
    
    $sql = "select count(*) as total from tm_users where username = ‘$username‘ and password = ‘$password‘";
    
    
    $rs = mysql_query($sql);
    
    while($row = mysql_fetch_array($rs)){
        if($row["total"] != 1){
            echo "<h2 style=‘color:red‘>用戶名或者密碼錯誤!</h2>";
            return;
        }
    }
    
    
    echo "<h2 style=‘color:green‘>恭喜,登錄成功!</h2>";
  2. 異步登陸
    在上一節中,我們使用的是form表單提交的方式,也就是俗稱的同步登陸。這樣一來,如果後臺不返回數據,那麽用戶什麽都做不了。現在,我們使用sleep函數來模擬後臺執行時間過長的問題。

    sleep(5000);

    技術分享圖片
    如果因為網絡等問題,後臺處理請求的時間過長,用戶除了等待,什麽事情也做不了。這個就是同步提交的一個弊端。
    技術分享圖片
    如圖所示,同步就類似於打電話,如果對方不接,打電話的那個人只能一直等待,不想等了,就把電話掛了。如果是異步的方式,就好比兩個人發短信,你什麽時候回復,我就什麽時候看,不會影響我當期所做的任何事情。

現在來演示異步提交。

16.1 把login2.html 拷貝到這個目錄:

C:\xampp\htdocs\5-7\login

技術分享圖片

打開瀏覽器,訪問地址:http://localhost:8080/5-7/login/login2.html

技術分享圖片
用戶名和密碼的非空判斷,在前臺JS中也有處理。如果用戶名和密碼都不為空,那麽就會進行異步提交,異步提交采用的是ajax方法,在第281行:
技術分享圖片

16.2 編寫login2.php

先進行一下登錄成功的測試:

<?php
    $resultData = array();
    $resultData["errCode"] = 0;
    $resultData["errMsg"] = "";


    echo json_encode($resultData);

?>

啥也不幹,直接返回沒有錯誤的結果對象,然後login2.html就會進入success方法:
技術分享圖片
這邊還做了一個小修改,當登錄成功的時候,就去訪問main.html。
技術分享圖片

16.3 後臺非空判斷

//後臺判斷用戶名和密碼是否為空
    $username;
    $password;

    if(isset($_POST[‘account‘]) && $_POST[‘account‘] != null){
        $username = $_POST[‘account‘];
    }else{
        $resultData["errCode"] = -1;
        $resultData["errMsg"] = "用戶名不能為空!";
        echo json_encode($resultData);
        return;
    }


    if(isset($_POST[‘password‘]) && $_POST[‘password‘] != null){
        $password = md5($_POST[‘password‘]);
    }else{
        $resultData["errCode"] = -1;
        $resultData["errMsg"] = "密碼不能為空!";
        echo json_encode($resultData);
        return;
    }

16.4 驗證用戶名是否存在?

    //驗證用戶名是否存在?
    $sql = "select count(*) as total from tm_users where username = ‘$username‘";

    $rs = mysql_query($sql);


    while($row = mysql_fetch_array($rs)){
        if($row["total"] != 1){
            $resultData["errCode"] = -1;
            $resultData["errMsg"] = "該用戶名不存在!";
            echo json_encode($resultData);
            return;
        }
    }

16.5 驗證用戶名和密碼是否正確?

//驗證用戶名和密碼是否正確?
    $sql = "select count(*) as total from tm_users where username = ‘$username‘ and password = ‘$password‘";


    $rs = mysql_query($sql);

    while($row = mysql_fetch_array($rs)){
        if($row["total"] != 1){
            $resultData["errCode"] = -1;
            $resultData["errMsg"] = "用戶名或者密碼錯誤!";
            echo json_encode($resultData);
            return;
        }
    }

源碼獲取:https://www.jianshu.com/p/4977bd0073d5

【php增刪改查實例】第十八節 - login.php編寫