12.表单与验证

学习要点:

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;
?>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值