zoukankan      html  css  js  c++  java
  • PHP基础之超全局变量

    PHP与Web页面交互

    解析PHP执行过程

    • HTTP请求

      • 当浏览器键入URL地址后,就会向指定服务器发起HTTP请求
      • 在请求的同时,附带请求消息头、请求消息体等相关信息
    • Apache服务端处理

      • 当请求到达服务器之后,Apache就开始工作了
      • 如果请求的是静态资源,Apache直接在服务器目录下获取这些文件
      • 如果请求的是PHP文件,Apache则会交给PHP模块来处理
      • PHP模块将处理后的结果以HTML方式返回给Apache
    • 返回HTTP响应数据

      • 服务器将通过Apache获取到的静态资源通过HTTP响应发送给浏览器端
    • 浏览器显示

      • 客户端将服务器返回的静态资源进行解析并显示出来

    Web表单

    表单组成

    • 表单标签
      • name 用于设置表单名称
      • method 用于设置表单的提交方式,GET或POST
      • action 用于指定接收数据的路径
      • enctype 用于设置提交数据的编码格式
      • target 用于设置返回信息的显示格式
      <form name='' method='' action='' enctype='' target=''>
        ...
      </form>
    
    • 表单元素
      • <input> 域标记
      • <textarea> 文字域标记
      <form>
        <input name="username" type="text"><br>
        <input name="pwd" type="password"><br>
        <input name="sex" type="radio"><br>
        <input name="hobby" type="checkbox"><br>
        <input name="upload" type="file"><br>
        <input name="login" type="submit"><br>
        <input name="girl" type="image"><br>
        <input name="clean" type="reset"><br>
        <textarea name="content"></textarea>
      </form>
    

    获取表单数据

    • method属性指定提交方式
      • POST 提交方式使用全局数组$_POST[]来获取表单元素的值
      • GET 提交方式使用全局数组$_GET[]来获取表单元素的值
      $username= $_GET['username'];
      $username= $_POST['username'];
      $username= $_REQUEST['username'];
    
    <?php
    	header("Content-Type: text/html; charset=utf-8");
    	if(!empty($_REQUEST['username'])){
    		echo $_REQUEST['username'];
    	}
    ?>
    <form action='' method="post">
    	<input type="text" name="username">
    	<br>
    	<br>
    	<input type="submit" value="提交">
    </form>
    

    表单安全验证

    • 用户提交的数据属于非法数据(如:JS代码段)
      • strip_tags() 方法
        • 用于去除字符串中的HTML和PHP标记
      • htmlentities() 方法
        • 可以将HTML和PHP标记转换成字符
    <?php
    	header("Content-Type: text/html; charset=utf-8");
    	if($_SERVER['REQUEST_METHOD']== 'POST'){
    		echo '<pre>';
    			echo htmlentities($_REQUEST['content'], ENT_NOQUOTES, 'UTF-8').'<br>';
    		echo '</pre>';
    	}
    ?>
    <form action='' method="post">
    	<p>留言内容:</p>
    	<textarea name="content"></textarea>
    	<br><br>
    	<input type="submit" value="留言提交">
    </form>
    

    表单数据验证

    • 对表单提交的数据进行验证

      • isset() 用于检测变量是否具有值
        • 包括0 false或者一个空字串,但不能是NULL
      • empty() 用于检测是否具有空值
        • 包括空字串 0 null 或 false
      • is_numeric() 用于检测数字或数字字符串
    • 转账案例

    <?php
    	header("Content-Type: text/html; charset=utf-8");
    	if($_SERVER['REQUEST_METHOD']== 'POST'){
    		if(!isset($_POST['name'])){
    			echo '必须设置转账人员!';
    			exit;
    		}
    		if(empty($_POST['amount'])){
    			echo '请输入转账金额!';
    			exit;
    		}
    		if(!is_numeric($_POST['amount'])){
    			echo '请输入正确的数据格式!';
    			exit;
    		}
    		echo "转账{$_POST['amount']}元给{$_POST['name']}";
    		var_dump($_POST['name']);
    		exit;
    	}
    ?>
    <form action='' method="post">
    	<p>转账 <input type="text" name="amount"> 给 <input type="text" name="name"></p>
    	<br>
    	<input type="submit" value="转账提交">
    </form>
    

    超全局变量

    超全局变量

    • 预定义的超全局变量
      • $_GET 经由 HTTP GET 方法提交至脚本的变量
      • $_POST 经由 HTTP POST 方法提交至脚本的变量
      • $_REQUEST 经由 GET POST和COOKIE机制交至脚本的变量
      • $_SERVER 经由web服务器设定或者直接与当前脚本的执行环境相关联
      • $_ENV 执行环境提交至脚本的变量
      • $_FILES 经由 HTTP POST 文件上传而提交至脚本的变量
      • $_COOKIE 经由 HTTP Cookies 方法提交至脚本的变量
      • $_SESSION 当前注册给脚本会话的变量
      • $GLOBALS 包含一个引用指向每个当前脚本的全局范围内有效的变量

    $_GET

    • $_GET
      • 对于GET方式提交的数据,可以使用$_GET变量来获取,$_GET变量实际上就是一个数组
    <?php
    	header("Content-Type: text/html; charset=utf-8");
    	if($_SERVER['REQUEST_METHOD']== 'GET'){
    		if(isset($_GET['amount'])){
    			echo $_GET['amount'];
    			exit;
    		}
    	}
    ?>
    <form action='' method="get">
    	<input type="text" name="amount">
    	<input type="submit" value="提交">
    </form>
    

    $_POST

    • $_POST
      • 对于POST方式提交的表单,可以使用$_POST变量来获取,$_POST变量实际上也是一个数组
    <?php
    	header("Content-Type: text/html; charset=utf-8");
    	if($_SERVER['REQUEST_METHOD']== 'POST'){
    		if(isset($_POST['amount'])){
    			echo $_POST['amount'];
    			exit;
    		}
    	}
    ?>
    <form action='' method="post">
    	<input type="text" name="amount">
    	<input type="submit" value="提交">
    </form>
    

    $_REQUEST

    • $_REQUEST
      • 同时获取$_GET $_POST $_COOKIE中的表单数据
    <?php
    	header("Content-Type: text/html; charset=utf-8");
    	if($_SERVER['REQUEST_METHOD']== 'POST' || 'GET'){
    		if(isset($_REQUEST['amount'])){
    			echo $_REQUEST['amount'];
    			exit;
    		}
    	}
    ?>
    <form action='' method="post">
    	<input type="text" name="amount">
    	<input type="submit" value="提交">
    </form>
    

    $_SERVER

    • $_SERVER

      • 在Web服务器中保存页面交互信息
      • 是由Web服务器创建的信息数组
      • 用于存放HTTP请求头信息以及Web服务器信息
    • HTTP请求头信息

      • HTTP_HOST Web服务器的地址
      • HTTP_USER_AGENT 客户端操作系统和浏览器信息
      • HTTP_ACCEPT 当前HTTP请求的Accept头部信息
      • HTTP_ACCEPT_LANGUAGE 当前HTTP请求的Accept_Language头部信息
      • HTTP_ACCEPT_ENCODING 当前HTTP请求的Accept_Encoing头部信息
      • HTTP_REFERER 链接到当前页面的前一页面的URL地址
    • Web服务器信息

      • SERVER_NAME Web服务器的名字
      • SERVER_ADDR Web服务器的IP地址
      • SERVER_PORT Web服务器的端口号
      • REMOTE_ADDR 客户端IP地址
      • DOCUMENT_ROOT Web服务器中的应用代码存放地址
      • SERVER_ADMIN Web服务器的管理员账号
      • SCRIPT_FILENAME 当前访问的脚本文件的文件名
      • REMOTE_PORT 客户端使用的端口号
      • GATEWAY_INTERFACE 网关接口信息
      • SERVER_PROTOCOL Web服务器使用的协议信息
      • REQUEST_METHOD 客户端发出的HTTP请求中使用的方法
      • QUERY_STRING 客户端发出的HTTP请求中的参数串
      • REQUEST_URI URL中的路径部分
      • SCRIPT_NAME 当前访问的脚本文件的相对路径
      • PHP_SELF 当前访问的PHP脚本文件的相对路径
      • REQUEST_TIME 客户端发出HTTP请求的时间
    <?php
    	echo "客户端的IP地址:{$_SERVER['REMOTE_ADDR']}<br>";
    	echo "文件的存放位置:{$_SERVER['DOCUMENT_ROOT']}<br>";
    	echo "脚本文件的名称:{$_SERVER['SCRIPT_FILENAME']}<br>";
    	echo "表单的请求方式:{$_SERVER['REQUEST_METHOD']}<br>";
    	echo "文件的相对路径:{$_SERVER['PHP_SELF']}<br>";
    ?>
    

    $GLOBALS

    • 超全局变量$GLOBALS
      • 是一个引用全局作用域中全部可用变量的数组
      • 变量名就是数组的键
    <?php
    	function test(){
    		$foo1= "泥萌";
    		echo "{$foo1}<br>";
    		echo "{$GLOBALS['foo2']}<br>";
    		echo "{$GLOBALS['foo3']}<br>";
    		var_dump($GLOBALS);
    	}
    	$foo2= '蜗萌';
    	$foo3= '塔萌';
    	test();
    ?>
    
  • 相关阅读:
    Jetty和tomcat的比较
    Spring Boot – Jetty配置
    Java规则之条件语句中做空判断时使用||和&&常犯的错误
    bboss oreach循环嵌套遍历map
    url全部信息打印
    ajax省市县三级联动
    关于mysql中的count()函数
    vue——统一配置axios的baseUrl和所有请求的路径
    js——substr与substring的区别
    vue——axios请求成功却进入catch的原因
  • 原文地址:https://www.cnblogs.com/SharkJiao/p/14001199.html
Copyright © 2011-2022 走看看