1. 程式人生 > >PHP 模擬 HTTP 基本認證(Basic Authentication)

PHP 模擬 HTTP 基本認證(Basic Authentication)

當某個頁面需要認證才能進行訪問時,接到請求後伺服器端會在響應頭中傳送一個 WWW-Authenticate 首部(用來標識認證安全域),語法為

WWW-Authenticate:Basic relam=quoted-string

客戶端接收到後會彈出一個對話方塊,要求輸入使用者名稱和密碼,使用者輸入的使用者名稱和密碼將會分別儲存至 $_SERVER['PHP_AUTH_USER'] 和 $_SERVER['PHP_AUTH_PW'] 中,開發者可以設計程式驗證使用者輸入的使用者名稱和密碼是否正確。

當用戶輸入使用者名稱和密碼並且點選確定後,請求頭會發送一個 Authorization 首部,語法為 Authorization:Basic Base64(username:password)

在 IE 下,輸入錯誤超過3次,伺服器端會在響應頭中傳送 401 狀態碼,提示需要授權(401 (Authorization Required)),在 Chrome 或 FireFox 下,只有使用者選擇取消輸入時,才會傳送 401 狀態碼,否則對話方塊會一直要求輸入使用者名稱和密碼。

<?php
 2 
 3 header("Content-type: text/html; charset=utf-8");
 4 
 5 function validate($user, $pass) {
 6     $users = ['dee'=>'123456', 'admin'=>'admin'];
7 if(isset($users[$user]) && $users[$user] === $pass) { 8 return true; 9 } else { 10 return false; 11 } 12 } 13 14 if(!validate(@$_SERVER['PHP_AUTH_USER'], @$_SERVER['PHP_AUTH_PW'])) { 15 http_response_code(401); 16 header('WWW-Authenticate:Basic realm="My website"'); //
對話方塊顯示 http://127.0.0.3 請求使用者名稱和密碼。資訊為:My website 17 echo '需要使用者名稱和密碼才能繼續訪問'; //取消時瀏覽器輸出 18 exit; 19 } else { 20 var_dump($_SERVER['PHP_AUTH_USER']); 21 var_dump($_SERVER['PHP_AUTH_PW']); 22 }

訪問頁面時,彈出認證視窗:

選擇取消時:

輸出正確的使用者名稱和密碼時:

參考:《PHP Cookbook,3rd》P244


相關推薦

PHP 模擬 HTTP 基本認證Basic Authentication

當某個頁面需要認證才能進行訪問時,接到請求後伺服器端會在響應頭中傳送一個 WWW-Authenticate 首部(用來標識認證安全域),語法為 WWW-Authenticate:Basic relam=quoted-string 客戶端接收到後會彈出一個對話方塊,要求

[轉]asp.net權限認證HTTP基本認證http basic

border expr == gets tps ram word tro cred 本文轉自:http://www.cnblogs.com/lanxiaoke/p/6353955.html HTTP基本認證示意圖 HTTP基本認證,即http basic認證。 客

CTF_WriteUp_HTTP基本認證Basic access authentication

## HTTP基本認證 在HTTP中,基本認證(英語:**Basic access authentication**)是允許http使用者代理(如:網頁瀏覽器)在請求時,提供使用者名稱和密碼 的一種方式。[HTTP基本認證](https://zh.wikipedia.org/wiki/HTTP基本認證/)

Apache shiro叢集實現 shiro身份認證Shiro Authentication

<span style="font-size:18px;">package com.api6.shiro.demo1; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; impo

以摘要認證Digest Authentication方式偽登入某攝像頭

密碼已知。 分析發現,該攝像頭Web登入採用了Digest Authentication的方式。流程如下: 下面大致看一下這部分的驗證流程: 1. 客戶端請求 /api/employees; 2. 服務端返回401未驗證的狀態,並且在返回的資訊中

HTTP基本認證(Basic Authentication) 實踐

服務端 nodejs var http = require('http') var server = http.createServer() server.listen(80, function

HTTP基本認證 Basic Authentication 的JAVA示例

                大家在登入網站的時候,大部分時候是通過一個表單提交登入資訊。但是有時候瀏覽器會彈出一個登入驗證的對話方塊,如下圖,這就是使用HTTP基本認證。下面來看看一看這個認證的工作過程:第一步:  客戶端傳送http request 給伺服器,伺服器驗證該使用者是否已經登入驗證過了,如果

HTTP基本認證(Basic Authentication)的JAVA示例

大家在登入網站的時候,大部分時候是通過一個表單提交登入資訊。但是有時候瀏覽器會彈出一個登入驗證的對話方塊,如下圖,這就是使用HTTP基本認證。下面來看看一看這個認證的工作過程:第一步:  客戶端傳送http request 給伺服器,伺服器驗證該使用者是否已經登入驗證過了,如

HTTP基本認證(Basic Authentication)的java呼叫示例

一、問題引入 大家在登入網站的時候,大部分時候是通過一個表單提交登入資訊。 但是有時候瀏覽器會彈出一個登入驗證的對話方塊,如下圖,這就是使用HTTP基本認證 這種認證的相關介紹在另一篇部落格中

HTTPClient呼叫https請求,通過基本認證使用者名稱密碼Basic Auth

本文來源是Apache官網例子:http://hc.apache.org/httpcomponents-client-4.5.x/httpclient/examples/org/apache/http/examples/client/ClientAuthentication.java 之前找

ASP.NET Web API:安全驗證之使用HTTP基本認證

在前一篇文章ASP.NET Web API(一):使用初探,GET和POST資料中,我們初步接觸了微軟的REST API: Web API。 我們在接觸了Web API的後就立馬發現了有安全驗證的需求,所以這篇文章我們先來討論下安全驗證一個最簡單的方法:使用HTTP基本

php 模擬http傳送請求三種方式curl,stream流的方式,

一,curl cURL 是一個用來傳輸資料的工具,支援多種協議,如在 Linux 下用 curl 命令列可以傳送各種 HTTP 請求。PHP 的 cURL 是一個底層的庫,它能根據不同協議跟各種伺服器通訊,HTTP 協議是其中一種。 post請求 public

使用裝飾器實現一個簡單的Tornado使用者認證DemoBasic authentication on Tornado with a decorator

Tornado is an open source web server developed by Facebook. It implement various third-party authentication schemes to connect to servic

curl設定httpAuthentication實現http基本認證

curl --user name:password http://www.example.com 或者 curl -u name:password http://www.example.com 例: curl --user admin:111111 "http://192.

PyQt4 模擬記事本基本功能保存,打開文件

int .sh idt img 問題 top 我們 文件 pyqt 1. 默認【保存】按鈕enable 2. 修改文本的內容後,【enable】 3. 解決字符亂碼問題:utf-8 # -*- coding: utf-8 -*- import sys from PyQt

php模擬http請求的兩種姿勢

php http curl CURL$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, self::$connectTimeout); curl_setop

HTTP基本原理簡介

原文:http://blog.csdn.NET/hguisu/article/details/86808081. HTTP簡介         HTTP協議(HyperText Transfer Protocol,超文字傳輸協議)是用於從WWW伺服器傳輸超文字到本地瀏覽器的傳

thinkPHP5.0在PHP中的基本操作-------

一、資料庫相關的操作 1. 資料庫配置 (1) 預設的全域性資料庫配置 在appliation/database.php檔案中設定全域性的資料庫配置資訊,資料庫基本定義資訊如下: return [ // 資料庫型別 'type

php 構造httpphp模擬http請求 偽裝頭部資訊

http://jingyan.baidu.com/article/335530daafcd6019ca41c352.html <?php /** 構造 http 請求  */ $filename="http://sj.mjerp.com/dabenying

HTTP基本原理格式詳解

一、HTTP請求格式             做過Socket程式設計的人都知道,當我們設計一個通訊協議時,“訊息頭/訊息體”的分割方式是很常用的,訊息頭告訴對方這個訊息是幹什麼的,訊息體告訴對方怎麼幹。HTTP協議傳輸的訊息也是這樣規定的,每一個HTTP包都分為HTTP頭和