速战速决 (6) - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换

[源码下载]

作者:webabcd

介绍
速战速决 之 PHP

  • 获取 http 请求数据
  • 获取 get 数据 和 post 数据
  • json 字符串与对象之间的相互转换

示例
1、获取 http 请求数据
http/http1.php

<?php
/**
 * 获取 http 请求数据
 */

// 通过 $_SERVER 获取相关数据
echo "PHP_SELF : " . $_SERVER[‘PHP_SELF‘] . "<br />";
echo "GATEWAY_INTERFACE : " . $_SERVER[‘GATEWAY_INTERFACE‘] . "<br />";
echo "SERVER_ADDR : " . $_SERVER[‘SERVER_ADDR‘] . "<br />";
echo "SERVER_NAME : " . $_SERVER[‘SERVER_NAME‘] . "<br />";
echo "SERVER_SOFTWARE : " . $_SERVER[‘SERVER_SOFTWARE‘] . "<br />";
echo "SERVER_PROTOCOL : " . $_SERVER[‘SERVER_PROTOCOL‘] . "<br />";
echo "REQUEST_METHOD : " . $_SERVER[‘REQUEST_METHOD‘] . "<br />";
echo "REQUEST_TIME : " . $_SERVER[‘REQUEST_TIME‘] . "<br />";
echo "REQUEST_TIME_FLOAT : " . $_SERVER[‘REQUEST_TIME_FLOAT‘] . "<br />";
echo "QUERY_STRING : " . htmlspecialchars($_SERVER[‘QUERY_STRING‘]) . "<br />";
echo "DOCUMENT_ROOT : " . $_SERVER[‘DOCUMENT_ROOT‘] . "<br />";
echo "HTTP_ACCEPT : " . $_SERVER[‘HTTP_ACCEPT‘] . "<br />";
echo "HTTP_ACCEPT_CHARSET : " . $_SERVER[‘HTTP_ACCEPT_CHARSET‘] . "<br />";
echo "HTTP_ACCEPT_ENCODING : " . $_SERVER[‘HTTP_ACCEPT_ENCODING‘] . "<br />";
echo "HTTP_ACCEPT_LANGUAGE : " . $_SERVER[‘HTTP_ACCEPT_LANGUAGE‘] . "<br />";
echo "HTTP_CONNECTION : " . $_SERVER[‘HTTP_CONNECTION‘] . "<br />";
echo "HTTP_HOST : " . $_SERVER[‘HTTP_HOST‘] . "<br />";
echo "HTTP_REFERER : " . $_SERVER[‘HTTP_REFERER‘] . "<br />";
echo "HTTP_USER_AGENT : " . $_SERVER[‘HTTP_USER_AGENT‘] . "<br />";
echo "HTTPS : " . $_SERVER[‘HTTPS‘] . "<br />";
echo "REMOTE_ADDR : " . $_SERVER[‘REMOTE_ADDR‘] . "<br />";
echo "REMOTE_HOST : " . $_SERVER[‘REMOTE_HOST‘] . "<br />";
echo "REMOTE_PORT : " . $_SERVER[‘REMOTE_PORT‘] . "<br />";
echo "REMOTE_USER : " . $_SERVER[‘REMOTE_USER‘] . "<br />";
echo "REDIRECT_REMOTE_USER : " . $_SERVER[‘REDIRECT_REMOTE_USER‘] . "<br />";
echo "SCRIPT_FILENAME : " . $_SERVER[‘SCRIPT_FILENAME‘] . "<br />";
echo "SERVER_ADMIN : " . $_SERVER[‘SERVER_ADMIN‘] . "<br />";
echo "SERVER_PORT : " . $_SERVER[‘SERVER_PORT‘] . "<br />";
echo "SERVER_SIGNATURE : " . $_SERVER[‘SERVER_SIGNATURE‘] . "<br />";
echo "PATH_TRANSLATED : " . $_SERVER[‘PATH_TRANSLATED‘] . "<br />";
echo "SCRIPT_NAME : " . $_SERVER[‘SCRIPT_NAME‘] . "<br />";
echo "REQUEST_URI : " . htmlspecialchars($_SERVER[‘REQUEST_URI‘]) . "<br />";
echo "PHP_AUTH_DIGEST : " . $_SERVER[‘PHP_AUTH_DIGEST‘] . "<br />";
echo "PHP_AUTH_USER : " . $_SERVER[‘PHP_AUTH_USER‘] . "<br />";
echo "PHP_AUTH_PW : " . $_SERVER[‘PHP_AUTH_PW‘] . "<br />";
echo "AUTH_TYPE : " . $_SERVER[‘AUTH_TYPE‘] . "<br />";
echo "PATH_INFO : " . $_SERVER[‘PATH_INFO‘] . "<br />";
echo "ORIG_PATH_INFO : " . $_SERVER[‘ORIG_PATH_INFO‘] . "<br />";

2、获取 get 数据 和 post 数据
http/http2.php

<?php
/**
 * 获取 get 数据 和 post 数据
 */

// 获取 url 参数(get 数据)
$params = getQueryParams($_SERVER[‘QUERY_STRING‘]);
echo "param1: " . $params["param1"];
echo "<br />";
echo "param2: " . $params["param2"];
echo "<br />";

function getQueryParams($query)
{
    $queryParts = explode(‘&‘, $query);
    $params = array();
    foreach ($queryParts as $param)
    {
        $item = explode(‘=‘, $param);
        $params[$item[0]] = $item[1];
    }
    return $params;
}

// 通过 $_POST 获取 post 数据
// 判断 $_POST["btnSubmit"] 是否存在,如果存在则表示有 post 过来的 form
if  (isset($_POST["btnSubmit"]))
{
    if (empty($_POST[‘txtUsername‘]))
    {
        echo "您没有输入用户名";
        exit(0);
    }

    echo "您的用户名: " . $_POST[‘txtUsername‘] . "";
}
?>

<form action="" method="post">
    <div>姓名:</div>
    <div><input type="text" id="txtUsername" name="txtUsername" value="wanglei" /></div>

    <div><input type="submit" name="btnSubmit" value="提交"/></div>
</form>

3、获取 get 数据 和 post 数据
encode/json.php

<?php
/**
 * Created by PhpStorm.
 * User: wanglei
 * Date: 2015/12/30
 * Time: 9:45
 */

class Name
{
    public $firstName;
    public $lastName;
}

class Student
{
    public $name;

    public $number;
    public $date1;
    public $date2;
}

$jsonArray = ‘
[
    {
        "name":{"firstName":"abc", "lastName":"xyz"},
        "number":1,
        "date1":"2015-12-30 10:00:48",
        "date2":1451440848
    },
    {
        "name":{"firstName":"lmn", "lastName":"rst"},
        "number":2,
        "date1":"2015-11-22 17:13:41",
        "date2":1448183621
    }
]‘;

// 设置当前时区为东八时区(北京时区)
date_default_timezone_set("Etc/GMT-8");

// json 字符串转对象
$result = array();
$myArray = json_decode($jsonArray, true);
$myArrayCount = count($myArray);
for ($i = 0; $i < $myArrayCount; $i++)
{
    $student = new Student();
    $student->number = $myArray[$i]["number"];
    $student->date1 = $myArray[$i]["date1"];
    $student->date2 = date(‘Y-m-d H:i:s‘, $myArray[$i]["date2"]);

    $name = new Name();
    $jsonName = $myArray[$i]["name"];
    $name->firstName = $jsonName["firstName"];
    $name->lastName = $jsonName["lastName"];

    $student->name = $name;
    $result[] = $student;
}
var_dump($result);

// 对象转 json 字符串
echo json_encode($result);
echo "<br />";

echo "<br />";

// 获取当前时间的时间戳(到 1970-1-1 的秒数)
echo time();
echo "<br />";

// 获取指定时间的时间戳(到 1970-1-1 的秒数)
echo strtotime("2015-12-30 16:00:10");
echo "<br />";

// 时间戳的格式化
echo date(‘Y-m-d H:i:s‘, time());
echo "<br />";

// 时间戳的格式化
echo date(‘Y-m-d H:i:s‘, 1460969676);
echo "<br />";

OK
[源码下载]

时间: 2024-12-20 07:13:56

速战速决 (6) - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换的相关文章

ajax请求(二),后台返回的JSon字符串的转换

ajax请求,json的转换 1 $.ajax({ 2 url : "../folder/isExistAddFolder.do?t="+new Date(), 3 type : 'POST', 4 data:{"foldername":foldername, 5 "parentid":parentid, 6 "foldertype":foldertype 7 }, 8 success : function(result){

【openresty】获取post请求数据FormInputNginxModule模块

关于openresty的一些介绍看这里. 首先,实验背景为openresty作为后台来处理前台post传递的数据. 在openresty内,有一个FormInputNginxModule模块,作用是解析post请求中的参数. 如果要使用该模块,需要在编译openresty源码时,在"./configure"一步添加参数: ./configure --add-module=/somepath/form-input-nginx-module --add-module=/somepath/n

Ajax 跨域请求 jsonp获取json数据

遇到Ajax的跨域请求出问题 找了中解决办法如下: 参考内容:http://justcoding.iteye.com/blog/1366102 由于受到浏览器的限制,该方法不允许跨域通信.如果尝试从不同的域请求数据,会出现安全错误.如果能控制数 据驻留的远程服务器并且每个请求都前往同一域,就可以避免这些安全错误.但是,如果仅停留在自己的服务器上,Web 应用程序还有什么用处呢?如果需要从多个第三方服务器收集数据时,又该怎么办? 理解同源策略 同源策略阻止从一个域上加载的脚本获取或操作另一个域上的

controller获取客户端请求数据

在学习SpringMVC之前,客户端的请求数据一般是靠request的getParameter方法获取,获取到的数据类型为String类型,需要强制转换为需要的数据类型. 在controller中也可以用这种方式获取客户端数据. //浏览器访问路径为http://127.0.0.1:8001/web02/request?name=name @RequestMapping(path = "/request", method = RequestMethod.GET) public Mode

React 中的 AJAX 请求:获取数据的方法

React 中的 AJAX 请求:获取数据的方法 React 只是使用 props 和 state 两处的数据进行组件渲染. 因此,想要使用来自服务端的数据,必须将数据放入组件的 props 或 state 中. 首先引入 axios. 1.`import axios from 'axios';` constructor 方法非常标准,调用 super,然后初始化 state,设置一个空的 posts 数 传入新的 posts 数组,使用 this.setState 方法更新组件状态.这会导致重

测开之路一百二十六:flask之获取request请求数据

可以根据flask的request对象获取所有的请求信息 path = request.path # 获取请求地址method = request.method # 获取请求方法ip = request.remote_addr # 请求来源的ipform = request.form # 获取form表单的数据value = request.values # 获取查询字符串/表单数据headers = request.headers # 后区头部信息User_Agent = request.he

自动化接口测试平台:从excel读取数据,传递到request请求中获取不到参数问题

遇到一个问题,将入参的必填参数按照dict格式填入excel表格中,从excel读取数据传递到request请求一直获取不到参数 解决: 1.注意从excel中读取的数据格式为str,传递到request请求的参数格式要求为dict 2.需要将数据反序列化,有以下两种方法: request.post对于参数传入的格式有特殊要求:post请求是我们常说的提交表单,表单的数据内容就是post请求的参数,request实现post请求需设置请求参数data,数据格式 可以为字典.元组.列表和json格

请求参数获取+编码问题

参数获取的方法: 如果表单是采用get方法提交,这时候可以使用 1.request.getQueryString();//直接获取到uri后面的所有内容,不方便分离参数. 2.request.getParameter("名称");//通过表单属性的名称来获取值 request.getParameterNames();//获取表单属性中所有的名称 如果表单是采用post方法提交,这时候可以使用 1.request.getInputStream();//直接可以获取到实体内容中的参数,不方

Java爬虫(一)利用GET和POST发送请求,获取服务器返回信息

本人所使用软件 eclipse fiddle UC浏览器 分析请求信息 以知乎(https://www.zhihu.com)为例,模拟登陆请求,获取登陆后首页,首先就是分析请求信息. 用UC浏览器F12,点击Network,按F5刷新.使用自己账号登陆知乎后,点www.zhihu.com网址后,出现以下界面  在General中,看到请求方式是GET,在fiddle里请求构造中,方法选定GET. 下拉后,看到Request Header,将里面所有的内容复制下来,粘贴到fiddle的请求构造里