前言:试想一下如果PHP没有了表单传值,那么就相当于一个没有表达能力的人,因此表单传值在php中是相当重要的,但是不难,接下来我们一起来探讨一下吧------>

(一)什么是表单传值  

  概念:表单传值指的是通过表单(如果还不知道表单的小伙伴要看看html的知识)构建数据,传递给服务器。

(二)表单传值的方式(有且只有两种)

  

  1. get方式
      
      <form method="get"> xxxx </form>
  1. get方式
  2.   
  3.   <form method="post"> xxxx </form>

(三)PHP接收表单传值数据的方法

  1. 接收post传值的方式:
  2.  
  3. var_dump($_POST);
  1. 接收get传值的方式:
  2.  
  3. var_dump($_GET);
  1. 接收get/post传值的方式:
  2.  
  3. var_dump($_REQUEST);

小结:

  1.要想能够成功接收传递的参数,那么input属性里面必须要加name,

  2.服务器接收到的值是以name为关联数组索引的一个数组

  3.如果想要接收复选框值,那么name=xxx[],需要加上中括号

  4.单选框时候需要有相同的name值

(四)POST方式与GET方式的区别

  1. - GET方式具有可见性,而POST方式不具有可见性;
  2. - 基于第一点,POST方式在安全性上比GET方式要高一些;
  3. - 在传输的数据量上,POST方式可能比GET方式要大;
  4. - 在支持的数据类型上,GET方式仅支持ASCII码数据类型,POST方式无限制;

(五)文件上传

  概念:文件上传指的是将文件从本地传输到指定的服务器。

  1. 构造表单上传的三要素
  2.  
  3. 1.必须是post方式
  4.  
  5. 2.必须要在form表单属性里面加 enctype="multipart/form-data"
  6.  
  7. 3.必须加<input type="file">
  1. 接收表单上传文件的参数
  2. 1. $_FILES 接收用户上传文件的数组变量
  3.  
  4.     参数包含6部分参数: name type tmp_name error size 为索引的索引数组
          
          其中error包含了6个码值(0-7除了5)的错误提示
          tmp_name 临时存放的文件(会过期,因此转移这个文件就达到了文件上传的效果)
  5.  
  6.   2. move_uploaded_file(文件临时的路径,转移到的路径)
  1. 同名文件的上传: 思路(把name=xxx[])
  2.  
  3. 不同名文件上传: 思路(构造name不同名字就可以了)

(六)封装文件上传的方法

  1. <?php
  2.  
  3. function upFile($file){
  4.  
  5. #检查系统错误
  6. switch ( $file['error'] ){
  7. case 1:
  8. echo '文件上传的大小超出了系统配置文件的限制大小~';
  9. return false;
  10. case 2:
  11. echo '文件上传的大小超过了浏览器的限制!';
  12. return false;
  13. case 3:
  14. echo '文件没有完全上传完!';
  15. return false;
  16. case 4:
  17. echo '用户没有选择需要上传的文件哟~';
  18. return false;
  19. case 6:
  20. case 7:
  21. echo '服务器繁忙,请客官稍候再试~';
  22. return false;
  23. }
  24.  
  25. #检查逻辑错误
  26. //检查格式类型是否符合要求
  27. $limitType = ['image/jpeg', 'image/png'];//定义出允许的格式类型
  28. if( !in_array($file['type'], $limitType) ){//如果上传的文件格式类型不在允许的范围内,则给出提示信息,并且中止函数的执行
  29. echo '您上传的文件格式类型不符合要求,只能上传' . implode('或', $limitType) . '格式的文件';
  30. return false;
  31. }
  32.  
  33. //检查文件的大小是否符合逻辑要求
  34. $limitSize = 250 * 1024;//限定的大小为250KB
  35. if( $file['size']>$limitSize ){//如果上传的文件大小超过了限定的大小,则给出提示,并且中止函数的执行
  36. echo '您上传的文件超过' . ($limitSize/1024) . 'KB的大小,请重新选择上传的文件!';
  37. return false;
  38. }
  39.  
  40. #构建绝对不重复的文件名
  41. $fileName = uniqid('img_') . date('YmdHis') . '_' . mt_rand(0, 10000) . strstr($file['name'], '.');
  42. $path = 'F:/home/class/day11/code/upload/';
  43. $wholeFileName = $path . $fileName;
  44.  
  45. #转移文件到指定目录
  46. $re = move_uploaded_file($file['tmp_name'], $wholeFileName);
  47.  
  48. if( $re ){//上传成功
  49. echo '恭喜你,文件上传成功';
  50. return true;
  51. }else{//上传失败
  52. echo '系统繁忙,请稍候再试!';
  53. return false;
  54. }
  55. }

PHP中的表单传值的更多相关文章

  1. laravel中form表单,ajax传值没反应

    laravel中form表单,ajax传值没反应时,可能是令牌有问题. form中添加: {{csrf_token()}} ajax中添加: data: {'page': page, '_token' ...

  2. select标签 禁止选择但又能通过序列化form表单传值到后台

    前言 项目开发中,我们可能会碰到这样的需求:select标签,禁止选择但又能通过序列化form表单传值到后台,但是当我们使用disabled="disabled"时发现,无法序列化 ...

  3. AngularJS中的表单验证

    AngularJS中的表单验证 AngularJS自带了很多验证,什么必填,最大长度,最小长度...,这里记录几个有用的正则式验证 1.使用angularjs的表单验证 正则式验证 只需要配置一个正则 ...

  4. MVC中处理表单提交的方式(Ajax+Jquery)

    MVC中处理表单有很多种方法,这里说到第一种方式:Ajax+Jquery 先看下表单: <form class="row form-body form-horizontal m-t&q ...

  5. angular中的表单验证

    angular中的表单验证很强大, 一共有5中验证信息,$valid,$invalid,$pristine,$dirty,$error. $valid-----当验证通过的时候,为true,不通过的时 ...

  6. MVC中Form表单的提交

    概述 Web页面进行Form表单提交是数据提交的一种,在MVC中Form表单提交到服务器.服务端接受Form表单的方式有多种,如果一个Form有2个submit按钮,那后台如何判断是哪个按钮提交的数据 ...

  7. Excel中的表单控件和active控件

    EXCEL中有两种控件:表单控件和active控件 表单控件是excel5和excel95开始使用的,从excel97开始,active控件开始出现 关于表单控件和active控件的区别和使用范围,网 ...

  8. YII中的表单挂件

    利用助手(widget)在页面实现表单 控制器中 <?php class YiiFormController extends Controller { public function actio ...

  9. django中form表单的提交:

    一,关于表单: 表单在百度百科的解释:   表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单域 ...

随机推荐

  1. Linux大学实验

    一. 准备工作(预防抄袭,此步必做) 1. 请将提示符设为:学号加波浪号.输入PS1=学号~,如PS1=110015~, 回车执行 2. 如发现提示符.学号不匹配, 视为抄袭或无效 二.操作题(每题5 ...

  2. Codeforces715 B. Complete The Graph

    传送门:>Here< 题意:给出一张带权无向图,其中有一些边权为0.要求将边权为0的边的边权重置为一个任意的正整数,使得从S到T的最短路为L.判断是否存在这种方案,如果存在输出任意一种 解 ...

  3. 后台CRUD管理jqGrid 插件下载、使用、demo演示

    jqGrid:demo?version=5.2.1download src: http://www.trirand.com/blog/ github:https://github.com/tonyto ...

  4. rar自动压缩备份

    rem ******MySQL backup start********@echo offforfiles /p "D:\备份\发布软件备份" /m backup_*.sql -d ...

  5. python学习日记(练习,流程控制+数据结构)

    简易计算器 #简易计算器,蠢新一枚,功能尚不完善,本为个人练习,仅供参考 while 1: a = input('请输入第一个运算数:').strip()#可输入前后带空格的数字 if a.lower ...

  6. Add Zabbix Agent

    添加第三方源进行安装CentOS/RHEL 7:# rpm -Uvh http://repo.zabbix.com/zabbix/2.2/rhel/7/x86_64/zabbix-release-2. ...

  7. 【Luogu4916】魔力环(Burnside引理,组合计数)

    考虑\(Burside\)引理,设\(f(x)\)表示置换拆成循环的个数为\(x\)时的答案,那么最终的结果就是\(\displaystyle \frac{\sum_{i=1}^n f(gcd(i,n ...

  8. cf1073D Berland Fair (二分答案+树状数组)

    用一个树状数组维护前缀和,每次我二分地找一个位置,使得我能一路买过去 但这个买不了 那以后肯定也都买不了了,就把它改成0,再从头二分地找下一个位置,直到这一圈我可以跑下来 然后就看跑这一圈要花多少钱. ...

  9. #509. 「LibreOJ NOI Round #1」动态几何问题

    下面给出部分分做法和满分做法 有一些奇妙的方法可以拿到同样多的分数,本蒟蒻只能介绍几种常见的做法 如果您想拿18分左右,需要了解:质因数分解 如果您想拿30分左右,需要了解:一种较快的筛法 如果您想拿 ...

  10. C/C++ 控制台窗口暂停

    为什么我看不到控制台的输出结果? 在编写C++程序中,经常会出现,控制台窗口一闪就消失了的情况 为什么会这样? 原因简单到有点可笑:因为程序运行结束了 对于控制台程序,操作系统让它开始运行前会为它造一 ...