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();
    ?>
    
  • 相关阅读:
    SharePoint 2013 APP 开发示例 (六)服务端跨域访问 Web Service (REST API)
    麦咖啡导致电脑不能上网
    SharePoint 2013 Central Admin 不能打开
    SharePoint 2013 APP 开发示例 (五)跨域访问 Web Service (REST API)
    SharePoint 2013 APP 开发示例 系列
    synthesize(合成) keyword in IOS
    Git Cmd
    简单的正则匹配
    Dropbox
    SQL Server Replication
  • 原文地址:https://www.cnblogs.com/SharkJiao/p/14001199.html
Copyright © 2011-2022 走看看