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使用者認證Demo(Basic 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設定http頭Authentication實現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 構造http頭 php模擬http請求 偽裝頭部資訊
http://jingyan.baidu.com/article/335530daafcd6019ca41c352.html <?php /** 構造 http 請求 */ $filename="http://sj.mjerp.com/dabenying
HTTP基本原理(格式詳解)
一、HTTP請求格式 做過Socket程式設計的人都知道,當我們設計一個通訊協議時,“訊息頭/訊息體”的分割方式是很常用的,訊息頭告訴對方這個訊息是幹什麼的,訊息體告訴對方怎麼幹。HTTP協議傳輸的訊息也是這樣規定的,每一個HTTP包都分為HTTP頭和