php预定义超全局数组

php预定义超全局变量

  • 超全局变量是在全部作用域中始终可用的内置变量。
  • 全局变量
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<?php
	$num=10;  //全局变量
	function get(){
		//$num=20;  //局部变量
		//在函数中使用全局变量
		global $num;
		$num=20;
	}
	get();
	echo $num;
?>
</body>
</html>

  • 超全局变量一是有全局变量的特性,而是无须声明直接使用。(系统创建及维护)
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<?php
	$_SERVER['aa']=1253;//也可以当数组来使用,注意!!!
	echo "<pre>";
 	echo print_r($_SERVER);
	echo "</pre>";
?>
</body>
</html>

  • 每请求一次,创建一个超全局变量。

  • 预定义超全局变量有以下九种

    • $_GET
    • $_POST
    • $_REQUEST
    • $_SERVER
    • $_ENV
    • $_FILES
    • $_COOKIE
    • $_SESSION
    • $GLOBALS

$_GET

  • 原理
    在这里插入图片描述
  • 使用一:浏览器通过超链接传送信息给服务器(默认是GET)
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
//注意:信息如何传递!!!
<a href="1.php?city=XI'AN&name=tan">数据</a>
</body>
</html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<?php
	echo "<pre>";
 	echo print_r($_GET);
	echo "</pre>";
	echo $_GET['name'];
?>
</body>
</html>

  • 注意:IE5.5和IE6存在中文奇数乱码的问题,解决?urlencode和urldecode。
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<?php
	$city=urlencode("大西安");
	echo "<a href='1.php?city={$city}&name=tan'>数据</a>";
?>
</body>
</html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<?php
	echo "<pre>";
 	echo print_r($_GET);
	echo "</pre>";
	echo urldecode($_GET['city']);
?>
</body>
</html>

  • 使用二:浏览器通过表单传送信息给服务器(最好使用$_POST)
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<form action='1.php' method='GET'>
输入内容:<input type='text' name='ha'/>
<input type='submit' name='查询'/>
</form>
</body>
</html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<?php
	echo $_GET['ha'];
?>
</body>
</html>

  • 禁止启用register_globals:设置register_globals=off;
  • 启用register_globals,以下代码访问时若输入http://localhost:88/1.php?a=10&b=20;将得到10 20。
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<?php
	echo $a." ".$b;
?>
</body>
</html>

$_POST

  • 通过post方式提交的数据,会被封装到$_POST超全局数组中。
  • 使用一:浏览器通过表单传送信息给服务器(有些数据必须使用post方式)
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<form action='1.php' method='POST'>
用户名:<input type="text" name="username"/><br/>
密码:<input type="password" name="password"/><br/>
性别:<input type="radio" name="sex" value="woman">女</input><input type="radio" name="sex" value="man">男</input><br/>
籍贯:<select name="city">
<option value="西安">西安</option>
<option value="北京">北京</option>
<option value="哈尔滨">哈尔滨</option>
</select>
<br/>
爱好:<input type="checkbox" name="hobby[]" value="唱歌">唱歌</input>
<input type="checkbox" name="hobby[]" value="跳舞">跳舞</input>
<input type="checkbox" name="hobby[]" value="LOL">LOL</input><br/>
个人简介:<textarea rows="10" cols="10" name="introduce"></textarea><br>
文件上传:<input type="file" name="files"></input><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<?php
	echo "<pre>"; 
	//如何接收checkbox的所有数据(注意中括号[]):<input type="checkbox" name="hobby[]" value="唱歌">唱歌</input>
	echo print_r($_POST);
	echo "</pre>";
	
	$hobbies=$_POST['hobby'];
	foreach($hobbies as $key=>$val){
		echo "<br/>".$key." ".$val;
	}
?>
</body>
</html>

  • POST方式和GET方式的区别

    • POST方式安全性好
    • 数据传输大小(POST方式大)
    • 保存到收藏夹(GET方式)

$_REQUEST

  • $_REQUEST包含$_GET、$_POST、$_COOKIE数组的信息。
  • 注意不要经常使用$_REQUEST(因为将多个信息混合)。
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<a href="1.php?name='tan'">超链接</a>
<form action='1.php' method='POST'>
用户名:<input type="text" name="username"/><br/>
密码:<input type="password" name="password"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<?php
	echo $_REQUEST['name'];
	echo $_REQUEST['username'];
?>
</body>
</html>

  • 通过$_SERVER[‘REQUEST_METHOD’]区分GET和POST
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<?php
	if($_SERVER['REQUEST_METHOD']=="GET"){
		echo $_REQUEST['name'];
	}else if($_SERVER['REQUEST_METHOD']=="POST"){
		echo $_REQUEST['username'];
	}
?>
</body>
</html>

$_SERVER

  • $_SERVER主要包含了http请求行和消息头的信息,同时还有服务器的一些信息(DOCUMENT_ROOT,SCRIPT_FILENAME…)。

$_ENV

  • 获取服务器端的环境变量,通过修改php.ini的variables_order="EGPCS"启动。

$GLOBALS

  • 包含了全部变量的全局组合数组。
  • 当定义一个全局变量,也会被$GLOBALS管理。
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<?php
	$a=100;
	echo "<pre>";
	print_r($GLOBALS);
	echo "</pre>";
?>
</body>
</html>

在这里插入图片描述

©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页