PHP如何利用post与get方式传值接收数据

目录

  • 一、POST传值
    • [1. 使用curl库发送 POST 请求:](#1. 使用curl库发送 POST 请求:)
    • [2. 使用file_get_contents()函数发送 POST 请求:](#2. 使用file_get_contents()函数发送 POST 请求:)
    • [3. 使用stream_socket_client()函数发送 POST 请求:](#3. 使用stream_socket_client()函数发送 POST 请求:)
    • [4. 利用from表单提交数据:](#4. 利用from表单提交数据:)
  • 二、GET传值
    • [1. 使用http_build_query()函数构建 URL 参数:](#1. 使用http_build_query()函数构建 URL 参数:)
    • [2. 使用parse_url()函数构建 URL 参数:](#2. 使用parse_url()函数构建 URL 参数:)
    • [3. 使用_GET超全局变量:](#3. 使用_GET超全局变量:)
    • [4. 利用HTMI的表单提交GET数据:](#4. 利用HTMI的表单提交GET数据:)
  • 三、POST接收数据
    • [1. 使用 _POST超全局变量:](#1. 使用 _POST超全局变量:)
    • [2. 使用 file_get_contents('php://input'):](#2. 使用 file_get_contents('php://input'):)
    • [3. 使用_REQUEST超全局变量:](#3. 使用_REQUEST超全局变量:)
    • [4. 使用 curl库:](#4. 使用 curl库:)
  • 四、GET方式接收数据
    • [1. 使用_GET超级全局变量:](#1. 使用_GET超级全局变量:)
    • [2. 使用parse_url()函数:](#2. 使用parse_url()函数:)
    • [3. 使用parse_str()函数:](#3. 使用parse_str()函数:)
    • [4. 使用_SERVER超级全局变量:](#4. 使用_SERVER超级全局变量:)
  • 五、总结

在php程序的开发中,传值和接收数据是最基础的功能。网站很多地方需要使用到表单数据的提交、URL参数的解析以及API站外数据的传递和接收等。本文主要介绍PHP对post和get这两种数据传递和接收方式的使用!

一、POST传值

在 PHP 中,有几种常用的方法可以发送 POST 数据。以下是几种常见的方法:

1. 使用curl库发送 POST 请求:

php 复制代码
$data = array(
    'param1' => 'value1',
    'param2' => 'value2'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://example.com');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
curl_close($ch);

这种方法使用curl库发送 POST 请求,并可以在CURLOPT_POSTFIELDS中设置要发送的数据。

2. 使用file_get_contents()函数发送 POST 请求:

php 复制代码
$data = array(
    'param1' => 'value1',
    'param2' => 'value2'
);
$options = array(
    'http' => array(
        'header' => 'Content-type: application/x-www-form-urlencoded',
        'method' => 'POST',
        'content' => http_build_query($data)
    )
);
$context = stream_context_create($options);
$response = file_get_contents('http://example.com', false, $context);

这种方法使用 stream_context_create() 函数创建一个上下文,并使用 file_get_contents() 函数发送 POST 请求。可以在上下文选项中设置请求头和发送的数据。

3. 使用stream_socket_client()函数发送 POST 请求:

php 复制代码
$data = array(
    'param1' => 'value1',
    'param2' => 'value2'
);
$context = stream_context_create(array(
    'http' => array(
        'method' => 'POST',
        'header' => "Content-type: application/x-www-form-urlencoded\r\n",
        'content' => http_build_query($data)
    )
));
$fp = stream_socket_client('tcp://example.com:80', $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);
if ($fp) {
    $response = stream_get_contents($fp);
    fclose($fp);
}

这种方法使用stream_context_create()函数创建一个上下文,并使用stream_socket_client()函数发送 POST 请求。同样可以在上下文选项中设置请求头和发送的数据。

4. 利用from表单提交数据:

以下是一个使用PHP实现的利用form表单提交POST数据的示例代码:

php 复制代码
<?php
$posthtml = '
<!DOCTYPE html>
<html>
<head>
    <title>提交POST数据</title>
</head>
<body>
    <h2>提交POST数据</h2>
    <form method="POST" action="post.php">
        <label for="name">姓名:</label>
        <input type="text" name="name" id="name" required>
        <br><br>
        <label for="email">邮箱:</label>
        <input type="email" name="email" id="email" required>
        <br><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>
';

echo $posthtml;
?>

上述代码中的form标签中指定了method为"POST",action为"post.php",这意味着当用户提交表单时,请求将被发送到post.php处理。这样即可利用html的表单把数据发送给php文件了。这些方法中的每一种都有其优点和适用场景。选择哪种方法取决于你的具体需求和项目结构。

二、GET传值

在 PHP 中,同样有多种方法可以发送 GET 参数。以下介绍几种常用的方法:

1. 使用http_build_query()函数构建 URL 参数:

php 复制代码
$params  =  array(
     'param1'  =>  'value1',
     'param2'  =>  'value2'
);
$query  =  http_build_query($params);
$url  =  "http://example.com/?$query";

2. 使用parse_url()函数构建 URL 参数:

php 复制代码
$url_parts  =  parse_url("http://example.com/");
$query_string  =  array();
foreach  ($_GET  as  $key  =>  $value)  {
     $query_string[]  =  "$key=$value";
}
$url  .=  "?"  .  implode("&",  $query_string);

3. 使用$_GET超全局变量:

php 复制代码
$url  =  "http://example.com/?param1=value1&param2=value2";
使用 $_SERVER超全局变量:
$server  =  $_SERVER['REQUEST_URI'];
$query_string  =  "?param1=value1&param2=value2";
$url  =  "$server$query_string";

4. 利用HTMI的表单提交GET数据:

以下是一个使用PHP实现的简单案例,利用form表单提交GET数据:

php 复制代码
<?php
$gethtml = '
<!DOCTYPE html>
<html>
<head>
    <title>GET请求示例</title>
</head>
<body>
    <h1>GET请求示例</h1>
    <form action="get.php" method="GET">
        <label for="name">姓名:</label>
        <input type="text" name="name" id="name">
        <br><br>
        <label for="email">邮箱:</label>
        <input type="email" name="email" id="email">
        <br><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>
';
echo $gethtml;
?>

在上面的示例中,我们创建了一个简单的HTML表单,包含了姓名和邮箱的输入框。表单的action属性指定了数据提交的目的地get.php,method属性为get,既以get的方式传递该组数据!以上这4种常用的发送 GET 参数的方法,是我们在实际程序编程时最常用的方式。你在选择使用的时候,应该根据实际需求和项目结构选择合适的方法。

三、POST接收数据

在php中,利用post方式接收数据的方法其实与post发送数据的方法基本是对应的。有多种方法可以获取通过 POST 方法发送的数据。比如以下几种常用的方法:

1. 使用 $_POST超全局变量:

php 复制代码
$data = $_POST['data_name'];

其中,$_POST是一个超全局变量,用于存储通过 POST 方法发送的表单数据。你需要将data_name替换为实际的字段名或键名。

2. 使用 file_get_contents('php://input'):

php 复制代码
$data = file_get_contents('php://input');
$post_data = json_decode($data, true);
$data = $post_data['data_name'];

这种方法可以获取到原始的 POST 数据,通常以 JSON 格式发送。首先使用file_get_contents('php://input')获取原始数据,然后使用 json_decode()将其解码为 PHP 数组,最后通过键名访问数据。

3. 使用$_REQUEST超全局变量:

php 复制代码
$data = $_REQUEST['data_name'];

$_REQUEST是一个超全局变量,它包含了通过 GET、POST、COOKIE 等方法发送的请求数据。这种方法可以获取到通过 POST 方法发送的数据。

4. 使用 curl库:

如果你需要更高级的请求处理和数据解析,可以使用curl库来获取 POST 数据。使用curl_exec()方法执行 cURL 请求,并将返回的数据存储在变量中。你可以使用回调函数或手动解析返回的数据。这种方法需要手动处理数据,但提供了更多的灵活性和控制。

四、GET方式接收数据

GET方式传递和接收数据最常见的是URL参数传值,通过URL参数的形式把需要传递的数据发送给数据处理文件,来进行解析和使用!但是相对于POST方式来说,他的安全性和传递数据的大小都要远差于POST。但是在网站的开发中,依然是最常见的一种使用方式。那么在 PHP 中,有哪些方法可以从 URL 中获取 GET 参数呢?以下简单介绍一下:

1. 使用$_GET超级全局变量:

php 复制代码
$param1  =  $_GET['param1'];
$param2  =  $_GET['param2'];

2. 使用parse_url()函数:

php 复制代码
$url  =  "http://example.com/?param1=value1&param2=value2";
$components  =  parse_url($url);
if  (isset($components['query']))  {
     $params  =  explode('&',  $components['query']);
     foreach  ($params  as  $param)  {
         $keyValue  =  explode('=',  $param);
         $paramKey  =  $keyValue[0];
         $paramValue  =  $keyValue[1];
         //  处理参数
     }
}

3. 使用parse_str()函数:

php 复制代码
$url  =  "http://example.com/?param1=value1&param2=value2";
parse_str($url,  $params);
$param1  =  $params['param1'];
$param2  =  $params['param2'];

4. 使用$_SERVER超级全局变量:

php 复制代码
$server  =  $_SERVER['QUERY_STRING'];
$params  =  explode('&',  $server);
foreach  ($params  as  $param)  {
     $keyValue  =  explode('=',  $param);
     $paramKey  =  $keyValue[0];
     $paramValue  =  $keyValue[1];
     //  处理参数
}

五、总结

文章中介绍的几种常用的获取 GET/POST 参数的方法,都能够满足我们日常网站对获取或者发送get/post参数的需求,根据实际需求和项目结构选择合适的方法,才是最佳的策略。我们可以通过不同的使用方法来满足我们网站程序开发的需要。每一种方法都有他的优缺点和用处,对于站内、站外、简单、复杂、普通、敏感数据的处理方式应该综合考虑、权衡利弊后进行选择。不管选择POST还是GET,在处理数据的时候都应该对数据进行验证或者过滤,避免被黑客利用,对你的网站或者应用进行植入木马或者SQL注入,给你的网站带来危险或者损失!

原文

相关推荐
两个人的幸福4 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
BingoGo6 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack6 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户3074596982077 天前
PHP 扩展——从入门到理解
php
鹏仔先生8 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
云水一下8 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
xingpanvip8 天前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua
酉鬼女又兒8 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php
dog2508 天前
不要再继续优化 TCP
网络协议·tcp/ip·php
Channing Lewis8 天前
PHP 解析 Excel 的那些坑:一次“行号错位”引发的数据丢失
开发语言·php·excel