• 速战速决 (6)


    [源码下载]


    速战速决 (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
    [源码下载]

  • 相关阅读:
    天真
    投机取巧——Label控件变Line控件
    忽然想起当年我做水泥工的日子
    欢迎来到 wwh 的博客!
    Jenkins配置
    nginx启动停止脚本
    youget下载视频
    git同步代码
    Vue(26)eltree树形控件实现鼠标hover显示与隐藏
    Vue(27)vuecodemirror实现在线代码编译器
  • 原文地址:https://www.cnblogs.com/webabcd/p/5465525.html
Copyright © 2020-2023  润新知