在PHP中http的資料庫是如何進行驗證登入的?接下來我們就來看一下PHP中http的資料庫驗證登入的實現樣本。
1. 關於檔案身分識別驗證方式
解析建立的.htpasswd檔案存放的登入帳號和密碼
提取前台發來的http的驗證登入帳號和密碼
$_SERVER['PHP_AUTH_USER']和 $_SERVER['PHP_AUTH_PW']
分別比對 代碼 和關於資料庫方式大概一致
代碼地址
https://github.com/956077081/PHP_demo/blob/master/HttpLogin.php
2. 關於基於資料庫的方式進行檔案比對
<?php //驗證Http的兩個參數 //$_SERVER['PHP_AUTH_USER']//$_SERVER['PHP_AUTH_PW'];//echo $_SERVER['PHP_AUTH_USER']."\r\n";//echo $_SERVER['PHP_AUTH_PW'];function authenticate_user (){ header("WWW-Authenticate: Basic realm ='Project'"); header("HTTP/1.1 401 unauthorized");}$user = $_SERVER['PHP_AUTH_USER'];$passwd = $_SERVER['PHP_AUTH_PW'];if( !isset($user) ||!isset($passwd)){ authenticate_user();}else{ $db = new mysqli("localhost", "root", "123456", "httpauth"); $stm = $db->prepare("select name ,passwd from auth where name=? and passwd=?"); $stm->bind_param("ss",$user,$passwd); $stm->execute(); $stm->store_result(); if ( $stm->num_rows == 0 ){ authenticate_user(); }else{ echo "you are sucessful to login !"; }}
對應的資料庫(httpauth) 明文的驗證方式也可以自行做資料庫 與 php原資料 加密比對
use httpauth;create table autht(id int(10) UNSIGNED not NULL AUTO_INCREMENT,name VARCHAR(50) NOT NULL DEFAULT '' ,passwd VARCHAR(50) not NULL DEFAULT '',harsh VARCHAR(50) DEFAULT '',PRIMARY KEY(id,name),INDEX `asd` (name) ) ENGINE = INNODB , DEFAULT CHARSET = UTF8 COMMENT="HTTP登入驗證"