欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP 請(qǐng)求上下文相關(guān)總結(jié)

 更新時(shí)間:2021年04月28日 11:05:43   作者:硬核項(xiàng)目經(jīng)理  
這篇文章主要介紹了PHP 請(qǐng)求上下文的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用PHP,感興趣的朋友可以了解下

我們首先來(lái)了解下什么是上下文。在我們寫文章,寫句子時(shí),都會(huì)考慮一個(gè)觀點(diǎn)或者內(nèi)容的前后邏輯,轉(zhuǎn)承啟合,而在這個(gè)觀點(diǎn)前后的內(nèi)容就可以看成是它的上下文內(nèi)容。它包含了語(yǔ)境的意味在里面,其實(shí)代碼世界中的上下文也是一樣的意思,本身 Context 這個(gè)單詞就是環(huán)境、背景的意思。

接下來(lái),我們來(lái)說(shuō)說(shuō)請(qǐng)求上下文又是什么呢?比如說(shuō)我們要使用PHP來(lái)請(qǐng)求一個(gè)鏈接地址,通常我們會(huì)使用 curl 來(lái)進(jìn)行請(qǐng)求,但是 curl 的配置其實(shí)是比較復(fù)雜的,所以我們?cè)诤?jiǎn)單使用的情況下會(huì)使用 file_get_contents() 這種函數(shù)來(lái)快捷地請(qǐng)求鏈接。不過(guò),可能很多人并不知道或者說(shuō)沒怎么使用過(guò)它的上下文參數(shù)。其實(shí),使用了上下文參數(shù)之后,file_get_contents() 不僅可以提交 POST 請(qǐng)求,還可以定義各種請(qǐng)求頭內(nèi)容。這些東西,就是一個(gè)請(qǐng)求的上下文,也就是它的執(zhí)行環(huán)境和背景。

首先,我們定義一個(gè)服務(wù)端,在這里只是輸出 \_GET 和 和_POST 里面的內(nèi)容。同時(shí),我們還打印了 $_SERVER 來(lái)看看請(qǐng)求頭是否獲取到了。

print_r($_SERVER);

echo 'GET INFO', PHP_EOL;
foreach ($_GET as $k => $v) {
    echo $k, ': ', $v, PHP_EOL;
}

echo PHP_EOL,PHP_EOL;
echo 'POST INFO', PHP_EOL;
foreach ($_POST as $k => $v) {
    echo $k, ': ', $v, PHP_EOL;
}

接下來(lái),在我們的測(cè)試代碼中,使用 file_get_contents() 來(lái)進(jìn)行 POST 提交。

$postdata = http_build_query(
    [
        'var1' => 'some content',
        'var2' => 'doh',
    ]
);

$opts = [
    'http' => [
        'method' => 'POST',
        'header' => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postdata,
    ],
];

$context = stream_context_create($opts);
$result = file_get_contents('http://localhost:8088/?a=1', false, $context);
print_r($result);
var_dump($http_response_header);

在這里,我們只是用到了 stream_context_create() ,就能夠輕松地創(chuàng)建一個(gè)請(qǐng)求的上下文環(huán)境了。stream_context_create() 是創(chuàng)建上下文環(huán)境的函數(shù),它接收的參數(shù)是一個(gè)選項(xiàng)數(shù)組,里面用于定義當(dāng)前請(qǐng)求的相關(guān)選項(xiàng)。注意,我們這里其實(shí)定義的是 http/https 相關(guān)的選項(xiàng),它還可以定義 ftp 、 socket 等相關(guān)的請(qǐng)求協(xié)議選項(xiàng)。

在使用 file_get_contents() 函數(shù)請(qǐng)求遠(yuǎn)程地址后,我們可以在 $http_response_header 變量?jī)?nèi)獲取到請(qǐng)求返回的響應(yīng)頭信息。而且這個(gè)變量是會(huì)定義在當(dāng)前的局部作用域下,不用擔(dān)心全局作用域污染的問(wèn)題。

非常簡(jiǎn)單的方式就可以實(shí)現(xiàn) POST 請(qǐng)求了吧,另外我們還可以使用 fopen() 函數(shù)來(lái)實(shí)現(xiàn)類似的效果,不過(guò)獲取 body 和響應(yīng)應(yīng)信息時(shí)的方式就不同了。

$url = "http://localhost:8088/?a=1";

$opts = [
    'http' => [
        'method' => 'GET',
        'max_redirects' => '0',
        'ignore_errors' => '1',
    ],
];

$context = stream_context_create($opts);
$stream = fopen($url, 'r', false, $context);

// 返回響應(yīng)頭
var_dump(stream_get_meta_data($stream));

// 返回內(nèi)容
var_dump(stream_get_contents($stream));
fclose($stream);

在這段代碼中,我們使用 stream_get_meta_data() 函數(shù)來(lái)獲得響應(yīng)頭,使用 stream_get_contents() 來(lái)獲得響應(yīng)的內(nèi)容(body)。這樣其實(shí)就真的和 curl 的效果差不多了,而且最主要的是,當(dāng)前這種寫法更簡(jiǎn)單方便。

從上面的代碼中我們可以看出,這種上下文相關(guān)的函數(shù)都是 Stream 類型的函數(shù),也就是流函數(shù)。它們是專門用來(lái)處理各種數(shù)據(jù)的,包括但不限于文件中的、網(wǎng)絡(luò)上的、壓縮文件以及其他一些操作的數(shù)據(jù)。在將來(lái)的學(xué)習(xí)中,我們還會(huì)接觸到其它的內(nèi)容。今天的學(xué)習(xí),其實(shí)是流的網(wǎng)絡(luò)數(shù)據(jù)處理中的一小部分內(nèi)容,大家先消化消化吧!

測(cè)試代碼: github.com/zhangyue050…

以上就是PHP 請(qǐng)求上下文相關(guān)總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于PHP 請(qǐng)求上下文的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 你應(yīng)該知道PHP浮點(diǎn)數(shù)知識(shí)

    你應(yīng)該知道PHP浮點(diǎn)數(shù)知識(shí)

    這篇文章主要介紹了你應(yīng)該知道PHP浮點(diǎn)數(shù)知識(shí),本文講解了PHP浮點(diǎn)數(shù)、PHP數(shù)字的臨界值,精度損失等問(wèn)題,需要的朋友可以參考下
    2015-05-05
  • php 將excel導(dǎo)入mysql

    php 將excel導(dǎo)入mysql

    最近因項(xiàng)目需求,要實(shí)現(xiàn)將excel文件通過(guò)php頁(yè)面導(dǎo)入mysql數(shù)據(jù)庫(kù)中。在網(wǎng)上搜了很多這方面的資料,發(fā)現(xiàn)都是將excel文件另存為csv文件,然后從csv文件導(dǎo)入。
    2009-11-11
  • PHP使用token防止表單重復(fù)提交的方法

    PHP使用token防止表單重復(fù)提交的方法

    這篇文章主要介紹了PHP使用token防止表單重復(fù)提交的方法,通過(guò)生成一個(gè)加密后的隨機(jī)數(shù)存入session的token變量,同時(shí)將該值放入表單隱藏提交,達(dá)到防止表單重復(fù)提交的功能,需要的朋友可以參考下
    2016-04-04
  • PHP單例模式定義與使用實(shí)例詳解

    PHP單例模式定義與使用實(shí)例詳解

    這篇文章主要介紹了PHP單例模式定義與使用,結(jié)合具體數(shù)據(jù)庫(kù)操作類的形式較為詳細(xì)的分析了php單例模式的功能、定義、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-02-02
  • php字符串比較函數(shù)用法小結(jié)(strcmp,strcasecmp,strnatcmp及strnatcasecmp)

    php字符串比較函數(shù)用法小結(jié)(strcmp,strcasecmp,strnatcmp及strnatcasecmp)

    這篇文章主要介紹了php字符串比較函數(shù)用法,結(jié)合實(shí)例形式分析了php針對(duì)字符串的比較、排序等操作相關(guān)技巧與注意事項(xiàng),需要的朋友可以參考下
    2016-07-07
  • PHP的微信支付接口使用方法講解

    PHP的微信支付接口使用方法講解

    今天小編就為大家分享一篇關(guān)于PHP的微信支付接口使用方法講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • 應(yīng)用開發(fā)中涉及到的css和php筆記分享

    應(yīng)用開發(fā)中涉及到的css和php筆記分享

    最近一周使用SAE開發(fā)一個(gè)簡(jiǎn)單的微博應(yīng)用。應(yīng)用本身很簡(jiǎn)單,使用php算法可以輕松實(shí)現(xiàn)。但是在調(diào)用新浪API的時(shí)候遇到很多各種各樣的麻煩。應(yīng)用到現(xiàn)在還有些不穩(wěn)定。
    2011-08-08
  • PHP 年齡計(jì)算函數(shù)(精確到天)

    PHP 年齡計(jì)算函數(shù)(精確到天)

    因?yàn)橐粋€(gè)具體的項(xiàng)目中要用到年齡計(jì)算,根據(jù)生日計(jì)算出當(dāng)前的年齡。這個(gè)精確到天,和騰訊是一樣的,大家有需要的可以參考一下
    2012-06-06
  • php自動(dòng)注冊(cè)登錄驗(yàn)證機(jī)制實(shí)現(xiàn)代碼

    php自動(dòng)注冊(cè)登錄驗(yàn)證機(jī)制實(shí)現(xiàn)代碼

    在phpwind站點(diǎn)后臺(tái)添加一個(gè)名為“廣告管家”(廣告管家為CNZZ的一款廣告投放的應(yīng)用)的應(yīng)用,整個(gè)“廣告管家”的應(yīng)用是通過(guò)iframe載入,載入的具體內(nèi)容根據(jù)不同站點(diǎn)顯示針對(duì)該站點(diǎn)的具體內(nèi)容
    2011-12-12
  • 初級(jí)的用php寫的采集程序

    初級(jí)的用php寫的采集程序

    這篇文章主要介紹了初級(jí)的用php寫的采集程序
    2007-03-03

最新評(píng)論