和系统函数一样还有一些变量系统帮我们打包好,可以在各个页面拿来使用,比如
一、超全局变量
$GLOBALS[“全局变量名”];操作全局变量
$_REQUEST 获取客户端相关信息
$_SERVRE 获取服务相关信息
$_GET 接收GET方式发送的数据
$_POST 接收POST方式发送的数据
$_FILES 获取文件上传信息,详细请参阅 文件上传章节
二、页面间数据传递
1、URL重写:访问的页面地址后面加上参数传递数据,例如
Localhost/index.php?a=1&b=2
该页面可以通过$_REQUEST[“a”]接收
2、利用表单发送数据(默认发送数据的方式是GET),并接收处理,实例源码如下
<form action="index.php">
用户名:<input name="loginid" id="loginid" /><input type="submit" value="Click" /></form>
经测试,发送的数据存在
1)安全性隐患
2)发送中文可能会出现乱码问题(解决的办法强制编码urlencode与解码urldecode)
3)发送的数据超出250KB或1024个字节就会丢失数据。
鉴于以上原因,表单发送数据的方式要换成POST,URL重写事实上为GET方式发送数据。
TIPS:$_REQUEST可以接收GET、POST方式发送过来的数据,但是存在一个判断的过程,最好根据发送数据的方式,指明接收的方式。
3、状态保持:详细请参阅 学玩网
三、接收处理表单数据
对于复选框,我们只要选中的值,另外不希望通过每一个复选框单独命名分别获取,可以给全部复选框命名加上“[]”,接收时$_REQUEST[“复选框名”]获取就是该对应复选框的数组,数组中每一个元素就是选中的值。
示例源码,前台页面:
<html>
<head><title>XXX 用户注册</title></head>
<body style="margin-left:auto; margin-right:auto; text-align:center;">
<form action="register.php" method="post">
<table>
<caption><h3>用户注册</h3></caption>
<tr><th>用户名:</th><td><input name="loginid" id="loginid" placeholder="请输入用户名" /></td></tr>
<tr><th>密码:</th><td><input name="pwd" id="pwd" type="password" placeholder="请输入密码" /></td></tr>
<tr><th>确认密码:</th><td><input name="repwd" id="repwd" type="password" placeholder="请输入确认密码" /></td></tr>
<tr><th>昵称:</th><td><input type="text" name="uname" id="uname" placeholder="请输入昵称" /></td></tr>
<tr><th>性别:</th><td><input type="radio" checked id="sex" name="sex" />男<input name="sex" type="radio" id="sex" />女
</td></tr>
<tr><th>喜欢的颜色:</th><td>
<select name="ucolor" id="ucolor">
<option selected value="0">==请选择==</option>
<option value="red">--红色--</option>
<option value="green">--绿色--</option>
<option value="blue">--蓝色--</option>
</select>
</td></tr>
<tr><th>爱好:</th><td><input value="playcomputer" name="cbof[]" id="cbof[]" type="checkbox">玩电脑
<input type="checkbox" value="readingbook" name="cbof[]" id="cbof[]" >看书
<input type="checkbox" value="dosporting" name="cbof[]" id="cbof[]">做运动
</td></tr>
<tr><th>个人简介:</th><td>
<textarea rows="4" name="describe" id="describe"></textarea>
</td></tr>
<tr><td></td><td>
<input type="submit" value="提交">
<input type="reset" value="重置">
<input type="button" value="取消">
</td></tr>
</table>
</form>
</body>
</html>
后台处理PHP代码:
<?php
//if(@$_POST['loginid'] && $_POST['pwd'] && $_POST['repwd'] && $_POST['uname'] && $_POST['ucolor']){
$loginid=$_POST['loginid'];
$pwd=$_POST['pwd'];
$repwd=$_POST['repwd'];
$uname=$_POST['uname'];
$sex=$_POST['sex'];
$ucolor=$_POST['ucolor'];
//爱好
$describe=$_POST['describe'];
if(CheckInputText($loginid,'用户名'))
return;//exit()
if(CheckInputText($pwd,'密码'))
return;
if($repwd!=$pwd)
die('密码与确认密码不一致');
if(CheckInputText($uname,'昵称'))
return;
if($ucolor=='0')
die('请选择一个喜欢的颜色');
if(count($_POST["cbof"])==0)
die('请至少选择一个爱好');
if($describe!='' && strlen($describe)>256)
die('个人简介不得超出256个字符');
echo '注册成功';
//}
/*
Describe:验证文本框/域是否正确
Paramters:$input为输入的值
Return:正确返回false,错误返回true
*/
function CheckInputText($input,$msg){
$result=true;
if($input=='')
echo $msg.'为空';
elseif(strlen($input)<4 || strlen($input)>16)
echo $msg.'长度在4~16个字符以内';
else
$result=false;
return $result;
}
?>
综合运用作业:开发一个统计图生成工具
验证数据合法性
数据合法在本页面生成统计图
完整源码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<div style="text-align:center"><h3>统计图生成工具</h3>
<font color="gray" size="-1">(数值和对应单位请用英文逗号隔开)</font></div>
<form action="#" method="post">
请输入数值:<input name="sj" id="sj" />
<b><font size="+1" color="red">*</font></b>
<br />
请输入单位:<input name="dw" id="dw" /><br />
<input style="display:block; margin-left:98px; margin-top:3px; width:100px; height:28px;" type="submit" class=" 生 成 " />
</form>
<?php
$recUrl=$pieUrl='images/noimage.jpg';
if(@$_POST['sj']){
$sj=$_POST['sj'];//获取数据
if($sj=='')
echo '<div style="text-align:center;"><b><font size="+2" color="red">请输入数据</font></b></div>';
elseif(CheckIsMathArray($sj))
echo '<div style="text-align:center;"><b><font size="+2" color="red">输入的数据不合法</font></b></div>';
else{
$recUrl='Common/gdRectangle.php?sj='.$sj.'&dw='.$_POST['dw'];
$pieUrl='Common/gdpie.php?sj='.$sj.'&dw='.$_POST['dw'];
}
}
//检测数据数组中是否是数值,不是返回true,都是返回false
function CheckIsMathArray($str){
$arr=explode(',',$str);
foreach($arr as $v)
{
if(preg_match('/\D{1,}/',$v))
return true;
}
return false;
}
?>
<div>
<div style="float:left; width:350px; height:301px; margin-top:3px;overflow:auto;"><Img src="<?php echo $pieUrl;?>" /></div>
<div style="float:left; width:350px; height:301px;margin-top:3px; margin-left:30px; overflow:auto;"><Img src="<?php echo $recUrl;?>" /></div></div>
<div style="clear:both;"></div>
<div style="width:900px; text-align:center; margin-top:25px;">
<font color="#2372F5" size="+1">© 2016 By 重蔚自留地</font>
</div>
</body>
</html>