学习要点:
1、Header()函数
2、接收及验证数据
表单作用:用于验证
1、Header()函数
标头header是服务器以HTTP协议传html资料到浏览器前所送到的字符串,
在标头与HTML文件之间需空一行的间隔。
(1)重新导向一个指定的url
<?php
header('Location:demo.php');
//可自动跳转到本地主机上指定的文件;
header('Location:http://www.baidu.com');
//上述代码将指定进入了百度界面;
//echo 'baidu.com';
?>
(2)字符编码
<?php
header('Content-Type:text/html;charset=gbk'); //设置页面编码;
echo '我是中文';
?>
2、接收及验证数据
要点——GET POST的请求
处理表单时,即必须指定以何种方式来接收数据传输到其目的地(method=""),对此开发人员可以采用get、post两种方式,
步骤1:新建一个php文件(demo1.php),设置一个包含“姓名”的表单,同时设置传输方式为“post”,
以一个按钮“提交”作为与php文件(demo2.php)的交互
<meata http-equiv="Content-Type" content="text/html;charset=gbk">
<form method="post" action="demo2.php">
姓名:<input type="text" name="username" /><br/>
<input type="submit" value="提交">
</form>
步骤2:建立php文件(demo2.php),实现与demo1的交互
(需要接收一个参数,即用来表示姓名的“username”)
demo2.php(未更改前)
<?php
//第一种:直接验证
//echo $_POST['username'];
//第二种:isset()验证,较为准确
//由于空字符串也是数据,所以也可以进行赋值提交给$_POST['username'];
//非法提交,是没有经过表单提交,没有生成全局变量,
/*
if(isset($_POST['username'])){
echo '正常提交';
}
else{
echo '非法提交';
}*/
//第三种方法
//empty()验证变量是否为空
if(!empty($_POST['username'])){
echo '正常提交';
}
else{
echo '非法提交';
}
?>
知识点:A——$_GET或$_POST进行接收数据
(1)isset()函数用来判断变量是否已经配置,也就是说用它来验证$_GET['username']超级全局变量是否存在
返回值:int整数
(2)empty()函数用于判断变量是否为空,
!empty($_POST['username'])和“==”基本一样,但不可以说明它是非法的,只能说没有填。
(3)htmlspecialchars()函数将HTML特殊字符进行过滤。
B——对数据的有效性进行验证
(1)用trim()去除数据前后的空格
(2)用strlen()判断数据的长度
(3)用is_numberic()判断数据是否为纯数字
(4)用正则表达式验证邮箱是否合法
demo2.php(更改后)
<?php
header('Content-Type:text/html;charset=gbk'); //设置页面编码格式;
if(isset($_POST['username'])){
echo '正常提交';
$username=$_POST['username'];
//在输出之前,为了页面安全性;
$username=trim($username);
$username=htmlspecialchars($username);
if(strlen($username)<2){
echo '用户名不能小于2位';
exit;
}
if(!is_numberic($username)){
echo '用户名必须为数字';
exit;
}
echo $username;
}
else{
echo '非法提交';
}
?>
demo3.php:用正则表达式验证表单(demo1.php的升级版)
<meata http-equiv="Content-Type" content="text/html;charset=gbk">
<form method="post" action="demo2.php">
账 户:<input type="text" name="username" /><br/>
密 码:<input type="password" name="password" /><br/>
邮 箱:<input type="text" name="email" /><br />
验证码:<input type="text" name="code" size="5" />1234<br/>
介 绍:<textarea rows="10" cols="10" name="content"></textarea><br/>
<input type="submit" value="提交" name="send">
</form>
demo4.php(用于与demo3.php的交互验证)步骤1:先验证demo3.php是否提交过来
直接是点击按钮进来,就说明,其他全局变量都应该存在
(若“send”存在,就转到demo4.php,否则,就返回demo3.php)
步骤2:接收所有的数据
<?php
//第一步:验证是否验证提交过来
if(isset($_POST['send'])||$_POST['send']!='提交'){
header('Location:demo3.php');
exit; //跳回去,即不再进行,就exit停止退出
}
//第二步:接收所有的数据,并过滤数据;
$username=trim($_POST['username']);
$password=$_POST['passord'];
$email=trim($_POST['email']);
$code=trim($_POST['code']);
$content=htmlspecialchars(trim($_POST['content'])); //若有html,将其转换为字符串;
//用户名不能小于2位,不可以大于10位;
if(strlen($username)<2||strlen($username)>10){
//使用js跳转,有提示;
echo "<script>alert('用户名不能小于2位或大于10位');history.back();</script>"
}
//密码不能小于6位
if(strlen($password)<6){
echo "<script>alert('密码不能小于6位');history.back();</script>";
exit;
}
//验证码必须是4位,纯数字;
if(strlen($code)!=4||!is_numberic($code)){
echo "<script>alert('验证码必须是4位,纯数字;');history.back();</script>";
exit;
}
//验证电子邮件;
if(preg_match('/([\w\.]{0,255})@([\w\-]{1,255}).([a-z]{2,4})/',$email)){
echo "<script>alert('电子邮箱不合法!');history.back();</script>";
exit;
}
echo '账户:'.$username.'<br />';
echo '邮箱:'.$email.'<br />';
echo '介绍:'.$content;
?>