起步 - GET参数

  • 作者:KK

  • 发表日期:2016.3.20


我们可以通过URL地址参数来表达一些我们想要的信息,让PHP去根据这些参数去做具体的事情,完成后再将我们需要的结果给我们

比如有这样一个网址:http://www.kkh86.com/record/list.html?page=2

?号开始,右边的page=2就是参数,如果我们将它改成"page=3"的话,就是变成http://www.kkh86.com/record/list.html?page=3,访问后就是第3页内容了(滚动到底下可以看到页码)

其实同样你去一些商城搜索商品时,在搜索结果中翻页也是会发现URL上会带有类似page=xx这样的参数,或者p=xx

参数用=号(等号)隔开,等号左边是参数的名称,右边是参数的值:http://xxx.com/xxx.html?参数名称=参数值

大概写法就是这样


PHP接收参数

我们可以用PHP代码接收这些参数,我们调试的URL是http://localhost/index.php是吧,这下加一个style参数,值是1,变成http://localhost/index?style=1这样访问吧

然后PHP代码这样写:

print_r($_GET);

访问后你会发现输出的GET数组并不是空数组,而是有一个叫style的键,键值就是URL上面的参数值

你可以再试下改成"style=8877"或者"style=haha"都行的


利用参数进行页面控制

参数的作用就是为了告诉网站具体按照什么方式去工作,比如顶上我例子中的page参数,就是告诉网站要输出第几页的内容

我们这里尝试使用style参数来输出不同的背景颜色

<?php
$color = '#A99E22'; //默认黄色
if(isset($_GET)){
	if($_GET['style'] == 1){
		$color = '#0F4A92'; //蓝色
	}elseif($_GET['style'] == 2){
		$color = '#9A111D'; //红色
	}else{
		$color = '#199A11'; //绿色
	}
}
?>
<html>
<head>
<title>GET参数学习</title>
</head>
<body>
<div style="width:100%; height:500px; <?php echo $color; ?>"></div>
</body>
</html>

这样访问以下URL的颜色分别是:

  • http://localhost/index 黄色

  • http://localhost/index?style=1 蓝色

  • http://localhost/index=2 红色

  • http://localhost/index?style=其它值 绿色

这样就是通过URL上的GET参数向PHP传递具体的工作方式了,慢慢消化一下吧


多参数

GET参数可以有多个的,用下面这个形式:

http://localhost?参数1=参数1的值&参数2=参数2的值

其实就是用&号(和号)将参数分开,比如我们既要传达style,又要传达page,那写法就是

http://localhost?style=xxx&page=yyy

明白了吧,其实就是参数1=AAA&参数2=BBB&参数3=CCC....

然后你也输出一下$_GET数组看看就知道了


取值的问题

由于默认不带GET参数的情况下,$_GET数组是空的,如果我们在代码里直接写echo $_GET['style'];这样直接调用它的style键的话会引发程序报错,说这个数组的style索引未定义

所以在使用前,我们都要先用isset判断一下是否存在才能使用

if(isset($_GET['style'])){
	if($_GET['style'] == 1){
		echo '显示风格1';
	}else{
		echo '显示风格2';
	}
}

其实这样很麻烦,告诉你哦,通常实际开发中我们要处理很多很多的GET参数,那光是一个style参数就要写这么多行代码了,加多几个参数不是一大堆代码?

  • 封装函数来获取嘛

    有一个比较简单的方法,就是定义一个函数来获取GET参数,以后获取其它GET参数就方便了,看看下面的代码:

    $style = get('style', 1);
    $page = get('page', 1);
    $name = get('name');
    	
    echo $style == 1 ? '风格1' : '风格2';
    echo '第' . $page . '页';
    if($name){
    	echo '名字是' . $name;
    }
    	
    function get($key, $defaultValue){
    	if(!isset($_GET[$key])){
    		return $defaultValue;
    	}
    	return $_GET[$key];
    }
    

    这样就不用写很多isset语句了,只需要在函数里写一次就好了,以后重复利用函数...

    反正你有重复的代码就封装成函数好过不封装