Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

Android程序员学PHP开发(22)-超全局数组/超全局变量-PhpStorm

$
0
0
转载请注明出处:http://blog.csdn.net/iwanghang/
觉得博文有用,请点赞,请评论,请关注,谢谢!~

PHP超级全局变量数组(Super Global Array),又称为PHP预定义数组,是由PHP引擎内置的,不需要开发者重新定义。 在PHP脚本运行时,PHP会自动将一些数据放在超级全局数组中。


PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。


php超级全局变量列表:

$_GET[] 获得以GET方法提交的变量数组

$_POST[] 获得以POST方法提交的变量数组

$_COOKIE[] 获取和设置当前网站的Cookie标识

$_SESSION[] 取得当前用户访问的唯一标识,以数组形式体现,如sessionid以及自定义session数据

$_ENV[] 当前php环境变量数组

$_SERVER[] 当前php服务器变量数组

$_FILES[] 上传文件时提交到当前脚本的参数值,以数组形式体现

$_REQUEST[] 包含当前脚本提交的全部请求,$_GET、$_POST、$_COOKIE的所有动作

$GLOBALS[] 包含正在执行脚本所有超级全局变量的引用内容



index.php:

<?php
    /**
     * 超全局数组/超全局变量
     * PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。
     * 在函数或方法中无需执行 global $variable; 就可以访问它们。
     * 这些超全局变量是:
        $_GLOBALS       Global变量
        $_SERVER        服务器变量
        $_REQUEST       request变量
        $_POST      HTTP POST变量
        $_GET       HTTP GET变量
        $_FILES     HTTP文件上传变量
        $_ENV       环境变量
        $_COOKIE        HTTP Cookies
        $_SESSION       Session变量
     */

    echo getip();
    echo "<br>";

    echo getip2();
    echo "<br>";

    /**
     * 遍历$_SERVER数组
     */
    foreach ($_SERVER as $key => $value){
        echo "{$key}  =>  {$value} <br>";
    }

    /**
     * 服务器IP的函数--笔试0分的写法
     */
    function getip(){
        return $_SERVER['REMOTE_ADDR'];
    }

    /**
     * 服务器IP的函数--正确写法
     */
    function getip2(){
        if (!empty($_SERVER['HTTP_CLIENT_IP'])){
            return $_SERVER['HTTP_CLIENT_IP'];
        }elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
            return $_SERVER['HTTP_X_FORWARDED_FOR'];
        }elseif (!empty($_SERVER['REMOTE_ADDR'])){
            return $_SERVER['REMOTE_ADDR'];
        }else{
            return '未知IP';
        }
    }
    ?>

    /**
     * GET
     */
    <br>
    <a href="demo.php?action=add&id=5&name=admin">测试页面</a><br>

    /**
    * POST
    * nickname[]下标会自增,跟数组没有区别
    */
    <br>
    <form action="demo.php?nick=www&psw=yyy" method="post">
        nickname:<input type="text" name="nickname[]"/><br>
        nickname:<input type="text" name="nickname[]"/><br>
        nickname:<input type="text" name="nickname[]"/><br>
        nickname:<input type="text" name="nickname[9]"/><br>
        nickname:<input type="text" name="nickname[]"/><br>
        nickname:<input type="text" name="nickname[x]"/><br>
        nickname:<input type="text" name="nickname[]"/><br>
        username:<input type="text" name="name"/><br>
        age:<input type="text" name="age"/><br>
        sex:<input type="text" name="sex"/><br>

        <input type="submit" name="sub" value="提交">
    </form><br>

<?php
    /**
     * $_SESSION
     *
     * Session 函数:
     * http://php.net/manual/zh/ref.session.php
     *
     * Session 开始、存储、终结:
     * http://www.w3school.com.cn/php/php_sessions.asp
     */
    echo '---------- $_SESSION ----------<br>';
    session_start(); // 启动新会话或者重用现有会话
    $_SESSION['name']="hello";
    print_r($_SESSION); // 打印结果:Array ( [name] => hello )
    session_unset(); // 释放所有的会话变量
    session_destroy(); // 销毁当前会话中的全部数据, 但是不会重置当前会话所关联的全局变量, 也不会重置会话 cookie。
                        // 如果需要再次使用会话变量, 必须重新调用 session_start() 函数
    session_write_close(); // 结束当前会话并存储会话数据
    setcookie(session_name(),'',0,'/'); // session_name — 读取/设置会话名称
                                        // setcookie() 函数向客户端发送一个 HTTP cookie。
    session_regenerate_id(true); // 在不修改当前会话中数据的前提下使用新的 ID 替换原有会话 ID
    echo "<br>";

    /**
     * $GLOBALS 引用全局作用域中可用的全部变量
     * 一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
     */
    echo '---------- $GLOBALS ----------<br>';
    echo "<pre>";
    print_r($GLOBALS); // 打印以上所有结果
    echo "</pre>";

demo.php:(配合index.php使用)

<?php
    /**
     * $_GET 只能接get
     */
    print_r($_GET);
    echo "<br>";
    print_r($_GET['action']);
    echo "<br>";

    /**
     * $_POST 只能接post
     */
    print_r($_POST);
    echo "<br>";

    /**
     * $_REQUEST 能接get和post
     * 但是,容易被黑客攻击,因为什么都能接
     * 所以需要get就用$_GET,需要post就用$_POST
     * 忽略$_REQUEST的存在
     */
    print_r($_REQUEST);
    echo "<br>";

    /**
     * 不确定get还是post
     * 可以使用下面的写法
     */
    $arr = !empty($_POST) ? $_POST : $_GET;





转载请注明出处:http://blog.csdn.net/iwanghang/



欢迎移动开发爱好者交流
沈阳或周边城市公司有意开发Android,请与我联系
联系方式

微信:iwanghang
QQ:413711276
邮箱:iwanghang@qq.com



作者:iwanghang 发表于2017/2/15 13:44:33 原文链接
阅读:0 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>