登录  /  注册
博主信息
博文 30
粉丝 0
评论 1
访问量 23047
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
0108PHP表单入门验证(补)
原创
574人浏览过

表单的数据验证(初级)

超全局变量

进行表单验证之前,先了解一下超全局变量。
1.是指没一个php程序(就是一个动态的php页面)都已经存在的变量,不需要用户去主动创建。
2.它的值,是由系统根据每个php程序自动设置初始值,大部分是反映程序状态。
3.它的值,大多是允许用户更新,但是不能删除它这个变量本身,否则会引起致命错误。
4.它没有作用域限制,无论是全局,还是函数中,都能直接使用,不需要声明。
5.因为每一个页面的超全局变量都是直接使用,很容易让初学者产生错觉:它是跨页面的,可以在多个页面使用。其实不行,它只是每个页面都已存在,但是其数值都是每个页面独立的数值,并不能交叉使用。

超全局变量$_SERVER

它是收据服务器信息的超全局变量,输出它会显示出服务状态信息

  1. <?php
  2. echo '<pre>'.print_r($_SERVER,true).'<pre>';


超全局变量$_REQUEST

它是请求数据的超全局变量,里面保存的是用户发出的所有的请求数据
包括get,post,cookie。
例:我们用HTML建一个表单,然后在表单的FORM属性里面action="demo2.php"等号后面的demo2.php为数据接收文件。method="POST"属性为数据发送格式,默认是GET。
附上HTML代码,CSS代码相信大家都会,就不附上了

  1. <body>
  2. <!-- 主要注意action属性它主要表示接收数据的文件,如果文件名错误接收不了数据,method主要表示数据发送的格式。 -->
  3. <form action="demo2.php" method="POST">
  4. <h2>用户注册</h2>
  5. <span>
  6. <label for="username">用户名:</label>
  7. <input type="text" name="username" id="username">
  8. </span>
  9. <span>
  10. <label for="password1">密码:</label>
  11. <input type="password" name="password1" id="password1" required>
  12. </span>
  13. <span>
  14. <label for="password2">确认密码:</label>
  15. <input type="password" name="password2" id="password2" required>
  16. </span>
  17. <span>
  18. <label for="gender">性别:</label>
  19. <!-- 必须要后value属性不然PHP文件接收不了具体的值 -->
  20. <input type="radio" name="gender" id="male" value="male">
  21. <input type="radio" name="gender" id="female"value="female">
  22. <input type="radio" name="gender" id="secret" value="secret" checked>保密
  23. </span>
  24. <span>
  25. <label for="">爱好:</label>
  26. <!-- name标签里面必须是空数组格式,不然PHP文件接收到的只有一个值 -->
  27. <input type="checkbox" name="hobby[]" id="sport" value="sport" checked>运动
  28. <input type="checkbox" name="hobby[]" id="book" value="book" checked>看书
  29. <input type="checkbox" name="hobby[]" id="game" value="game" >游戏
  30. <input type="checkbox" name="hobby[]" id="sleeep" value="sleeep" >睡觉
  31. </span>
  32. <span>
  33. <label for="email">电子邮箱:</label>
  34. <input type="email" name="email" id="email" placeholder="admin@qq.com" required>
  35. </span>
  36. <button>提交</button>
  37. </form>
  38. </body>



表单填写后,提交给PHP文件,PHP文件上输出$_REQUEST变量

  1. <?php
  2. echo '<pre>'.print_r($_REQUEST,true).'<pre>';

输出结果

如果表单数据发送格式为POST,可以使用$_POST超全局变量来输出请求数据

  1. <?php
  2. // $_REQUEST获取数据并输出
  3. echo '<pre>'.print_r($_REQUEST,true).'<pre>';
  4. // 使用$_POST获取数据并输出
  5. echo '<pre>'.print_r($_POST,true).'<pre>','<hr>';
  6. echo '因为表单发送的数据只有POST,两个超全局变量输出的数据是一样的,如果有cooike或者get,$_REQUEST会把它们一起输出。同理如果需要单独获取get格式,就用$_GET,想要获取cookie 就用$_COOKIE';


判断表单发送的数据是否为空

通过empty()可以检查接收到的数据是否为空(未填写)

  1. <?PHP
  2. if(empty($POST['username'])){
  3. echo '用户名未填写';
  4. }


表单数据的验证

通过上述变量与函数,可以获取到数据,就能对表单进行验证,一个注册表单的基础验证就是发送数据的方式、密码的验证。

  1. <?php
  2. // 首先用$_SERVER变量取其中的REQUEST_MTHOD健名获取到表单的数据发送格式,如果为POST(加密发送)就继续执行,如果不为POST,就终止。
  3. if($_SERVER['REQUEST_METHOD'] === 'POST'){
  4. // 使用empty函数判断发送的数据时候未空,如果不为空就赋值给下面的变量 注:!empty表示取反,就是不为空的意思。
  5. //这行IF代码是完整写法
  6. if(!empty($_POST['username'])){
  7. $username = $_POST['username'];
  8. }
  9. //以下IF代码是简写
  10. if(!empty($_POST['password1']))$password1 = $_POST['password1'];
  11. if(!empty($_POST['password2']))$password2 = $_POST['password2'];
  12. //获取到两次密码,判断两次密码是否一致,如果一致就赋值给变量$password方便保存,如果不一致就提示用户重新填写。
  13. if($password1 === $password2){
  14. $password = $password1;
  15. }else{
  16. exit('两次密码不正确,重新填写');
  17. }
  18. //获取到其他数据,并赋值给变量方便保存
  19. if(!empty($_POST['email']))$email = $_POST['email'];
  20. if(!empty($_POST['gender']))$gender = $_POST['gender'];
  21. if(!empty($_POST['hobby']))$hobby = $_POST['hobby'];
  22. }else{
  23. //如果数据发送类型错误就终止
  24. exit('<h3>数据请求错误</h3>');
  25. }
  26. //把获取到的数据压缩保存在一个数组里面,方便后续提取使用
  27. //compact函数,把变量转换为一个关联数组(里面的键名与需要转换的变量相对应,如果填写错误不能转换)
  28. $date = compact('username','password','email','gender','hobby');
  29. //打印压缩后的数组,查看是否成功
  30. echo '<pre>'.print_r($date,true).'</pre>';
  31. echo '如果表单发送一切正确就会输出以上内容';



=0=表单验证上一个写掉了,补上补上。这个感觉挺有用的,一定要补上- -###

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:如果记我面试一个程序员, 一个用户登录验证的全流程就够了
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学