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注入,给你的网站带来危险或者损失!

原文

相关推荐
一人の梅雨1 小时前
京东商品详情深度解析:从接口调用到商业价值挖掘的技术实现
服务器·数据库·php
帅帅梓2 小时前
docker网络
网络·docker·php
吃鱼吃鱼吃不动了4 小时前
什么是负载均衡?
开发语言·php
BingoGo6 小时前
PHP 开发者应该理解的 Linux 入门权限指南
后端·php
苏琢玉7 小时前
再也不用翻一堆日志!一键部署轻量级错误监控系统,帮你统一管理 PHP 报错
go·github·php
JaguarJack8 小时前
PHP 开发者应该理解的 Linux 入门权限指南
后端·php
2301_793167999 小时前
网络管理部分
linux·运维·服务器·网络·php
李白你好18 小时前
一款基于 PHP 的轻量级Webshell管理工具
php
星光一影1 天前
【OA办公系统】神点企业OA办公助手/全开源
mysql·nginx·开源·php·源代码管理
偷光1 天前
浏览器中的隐藏IDE: Console (控制台) 面板
开发语言·前端·ide·php