PHP

PHP用header接收、發送數據

字號+ 編輯: 种花家 修訂: 面向ICU 來源: CSDN 2023-09-10 我要說兩句(0)

朋友在做項目的時候和一個c#語言寫的接口進行通訊,對方要求數據在header中進行傳輸,原因是爲了安全起見。那麽如何用PHP在header裡收發數據呢?

发送header:

,放入header发送过去。

$url    = 'http://www.example.com';
$header = array(
    'token:JxRaZezavm3HXM3d9pWnYiqqQC1SJbsU',
    'language:zh',
    'region:GZ'
);
$content = array(
    'name' => 'fdipzone',
);
$response = tocurl($url, $header, $content);
$data     = json_decode($response, true);
echo 'POST data:';
echo '';
print_r($data['post']);

echo '';
echo 'Header data:';
echo '';
print_r($data['header']);
echo '';
/**
 * 发送数据 * @param String $url     请求的地址
 * @param Array  $header  自定义的header数据
 * @param Array  $content POST的数据
 * @return String
 */
function tocurl($url, $header, $content)
{
    $ch = curl_init();
    if (substr($url, 0, 5) == 'https') {
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// 跳过证书检查
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);
        // 从证书中检查SSL加密算法是否存在
    }
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($content));
    $response = curl_exec($ch);
    if ($error = curl_error($ch)) {
        die($error);
    }
    curl_close($ch);
    return $response;
}

接收header:

中获取header数据,自定义的数据都是使用HTTP_作为前缀的,所以可以把HTTP_前缀的数据读出。

$post_data     = $_POST;
$header        = get_all_headers();
$ret           = array();
$ret['post']   = $post_data;
$ret['header'] = $header;
header('content-type:application/json;charset=utf8');
echo json_encode($ret, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
/** * 获取自定义的header数据 */
function get_all_headers()
{
    // 忽略获取的header数据
    $ignore  = array('host', 'accept', 'content-length', 'content-type');
    $headers = array();
    foreach ($_SERVER as $key => $value) {
        if (substr($key, 0, 5) === 'HTTP_') {
            $key = substr($key, 5);
            $key = str_replace('_', ' ', $key);
            $key = str_replace(' ', '-', $key);
            $key = strtolower($key);
            if (!in_array($key, $ignore)) {
                $headers[$key] = $value;
            }
        }
    }
    return $headers;
}
閲完此文,您的感想如何?
  • 有用

    0

  • 沒用

    0

  • 開心

    0

  • 憤怒

    0

  • 可憐

    0

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: PHP+JS聊天群

相關課文
  • mac開發接入微信公衆號接口返回報錯 cURL error 56: SSLRead() return error -9806

  • pecl安裝程序時報錯Array and string offset access syntax with curly braces is no longer supported

  • PHP的換行符是什麽

  • 由於商家傳入的H5交易參數有誤,該筆交易暫時無法完成,請聯系商家解決

我要說說
網上賓友點評