php原生開發(fā)新聞?wù)局笈_(tái)登錄功能
我們之前的課程給大家介紹了做登錄功能之前的所有準(zhǔn)備,導(dǎo)入模板,創(chuàng)建數(shù)據(jù)庫,之前的課程都不把這些的準(zhǔn)備都已經(jīng)完成了,那么接下來就是我們要開始做登錄功能了!
首先我們要?jiǎng)?chuàng)建一個(gè)login.php文件,這個(gè)文件可以用來寫登錄頁面的判斷和驗(yàn)證,也可以把登錄的html部分和登錄驗(yàn)證判斷的php文件寫在一起,因?yàn)槲覀兌贾纏hp文件里面可以寫html代碼!但是我們還是推薦分開來寫!
創(chuàng)建好login.php文件以后,首先要做的就是連接數(shù)據(jù)庫,因?yàn)楹竺娴尿?yàn)證都是需要和數(shù)據(jù)做對(duì)比!
在這里要聲明一下,如果你的登錄頁面有驗(yàn)證碼的話,那么在每個(gè)頁面的一開始必須開啟?session_start();不然驗(yàn)證碼驗(yàn)證不了,我們這里有驗(yàn)證碼所以我開啟了session_start();
代碼如下:
<?php session_start(); // 連接mysql數(shù)據(jù)庫 $link = mysqli_connect('localhost', 'root', 'root'); if (!$link) { echo "connect mysql error!"; exit(); } // 選中數(shù)據(jù)庫 news為數(shù)據(jù)庫的名字 $db_selected = mysqli_select_db($link, 'news'); if (!$db_selected) { echo "<br>selected db error!"; exit(); } // 設(shè)置mysql字符集 為 utf8 $link->query("set names utf8");
接下來就是要獲取表單傳過來的數(shù)據(jù)了,因?yàn)槲覀円延脩糨斎朐诒韱蔚挠脩裘约懊艽a獲取到,然后在進(jìn)行跟數(shù)據(jù)庫做對(duì)比,看看是否完全一致!
<?php $username = $_POST['username'];//獲取用戶名 $password = $_POST['password'];//獲取密碼 $code = $_POST['code'];
至于是post傳輸數(shù)據(jù)還是get傳輸數(shù)據(jù),這個(gè)要根據(jù)你form表單里面的method的屬性了。我們這里是post!
數(shù)據(jù)已經(jīng)獲取到了 ,那么接著就是需要驗(yàn)證了,看看用戶輸入的數(shù)據(jù)是否跟數(shù)據(jù)庫的數(shù)據(jù)完全一致,這樣才能判斷能不能讓用戶登錄 使用SQL語句進(jìn)行查詢,代碼如下:
<?php if(!empty($_POST)){ // 查詢數(shù)據(jù)庫中是否存在用戶信息 $sql = "select * from user where username = '{$username}' and password = '{$password}'"; $result = mysqli_query($link,$sql); $user = mysqli_fetch_array($result,MYSQL_ASSOC);}
查詢到數(shù)據(jù)以后,進(jìn)行對(duì)兩組數(shù)據(jù)進(jìn)行對(duì)比:
if($user){ header("Location: index.php"); }else{ echo "<script>alert('賬戶或者密碼錯(cuò)誤!重新填寫')</script>"; }
到這里我們都是驗(yàn)證了用戶名以及密碼,那么我們這樣有驗(yàn)證碼,所以我們還要對(duì)驗(yàn)證碼進(jìn)行驗(yàn)證,這里我用了一驗(yàn)證碼類
這里也分享給大家!
然后我們要對(duì)驗(yàn)證碼進(jìn)行驗(yàn)證,代碼如下:
if(($_SESSION['authcode']) !== ($code)){ //驗(yàn)證碼作對(duì)比,驗(yàn)證碼頁面跟輸入的驗(yàn)證碼對(duì)比 echo "<script>alert('驗(yàn)證碼錯(cuò)誤!重新填寫')</script>";
說明一下:這里的$_SESSION['authcode'] 是code驗(yàn)證碼類中的保存的驗(yàn)證碼,我們要通過用戶輸入與保存的驗(yàn)證,結(jié)果一致就通過!
OK! 到這里我們的登錄功能就完成了!