PHP表单与验证

时间:2023-03-09 09:33:59
PHP表单与验证

一.Header()函数

标头 (header) 是服务器以 HTTP 协议传 HTML 资料到浏览器前所送出的字符串,在标头与 HTML 文件之间尚需空一行分隔。

/*一.Header()函数  */
1 重现导向一个URL
可以跳转到你想要的页面
在执行header();之前不能有任何浏览器输出
header('Location:demo2.php');
header('Location:http://www.baidu.com'); 2 用于设置字符编码
header('Content-Type:text/html;charset=utf-8');
echo '党兴明';

二.接受及验证数据

GET与POST

处理表单时,必须指定输入到表单的信息以何种方式传输到其目的地(method="")。对此,Web开发人员可以采用GET和POST。使用GET方法发送数据时,所有域都追加到浏览器的URL后面,并且为数据随URL地址发送。采用POST方法时,值会作为标准值发送。

PHP分别使用$_GET和$_POST超全局变量来处理GET和POST变量。通过使用这两个超全局变量,可以准确地指定信息应当来自哪里,并以你希望的方式处理数据。

demo5.php

<form method='post' action='demo6.php'>
用户名:<input type='text' name='username' /><br />
密&#160码:<input type='password' name='password' /><br />
验证码:<input type='text' name='code' size='5' />1234<br />
邮&#160件:<input type='email' name='email' /><br />
简&#160介:<textarea rols='6' cols='20'></textarea><br />
<input type='submit' name='send' value='提交' />
</form>

demo6.php

//1 线验证是否是demo3.php提交过来的
//只要是按钮点到我这里来的,那就说明,其它超级全局变量都应该存在
if (!isset($_POST['send']) || $_POST['send']!='提交'){ //没有点击提交按钮或者点击的不是name='send'的按钮提交过来的就退出
header('Location:demo6.php'); //跳回demo3.php页面
exit; //跳出,下面不需要执行了
} //2 接受所有数据
$username = $_POST['username'];
$password = $_POST['password'];
$code = $_POST['code'];
$email = $_POST['email'];
$content = htmlspecialchars(trim($_POST['content']));//过滤下文本中的html和两边的空白 //用户名不能小于两位,不能大于10位
if(strlen($username)<2 || strlen($username)>10){
//使用js来跳转,有提示的
echo "<script>alert('用户名不能小于两位或大于10位');history.back();</script>";
exit;
} //密码不能小于两位
if (strlen($password) <6){
echo "<script>alert('密码不能小于四位');history.back();</script>";
exit;
} //验证码必须是四位,必须是数字
if (strlen($code) !=4 || !is_numeric($code)){
echo "<script>alert('验证码必须是四位,必须是数字');history.back();</script>";
exit;
} //验证电子邮件
if (!preg_match('/([\w\.]{2,255})@([\w\-]{1,255}).([a-z]{2,4})/',$email)){
echo "<script>alert('电子邮件不合法');history.back();</script>";
exit;
}
echo $username.'<br />'.$code.'<br />'.$email.'<br />'.$content;

get的实例:表单建议用post

<a href='demo2.php?a=5'>demo2</a>
<?php
echo $_GET['a'];
?>