PHP

PHP用header接收、发送数据

字号+ 编辑: 呆头鹅甲 修订: 呆头鹅甲 来源: CSDN 2015-02-07 11:37:37 我要说两句(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.转来的文章都会标好来源,如对来源资料存疑,请邮件声明;
2.本站标注原创的文章,转发时烦请注明来源;
3.如文章侵犯了您的版权,请通知本站,该文章将在24小时内移除。

相关课文
  • pecl安装swoole报错 error

  • php针对mysql的orm: 一个轻量级的pdo操作类

  • shell_exec() has been disabled for security reasons 解决方法

  • PHP框架全部显得多余的4种原因

我要说说
网上宾友点评