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

(一)什么是表单传值  

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

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

  

get方式
  
  <form method="get"> xxxx </form>
get方式
  
  <form method="post"> xxxx </form>

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

接收post传值的方式:

    var_dump($_POST);
接收get传值的方式:

    var_dump($_GET);
接收get/post传值的方式:

    var_dump($_REQUEST);

小结:

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

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

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

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

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

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

(五)文件上传

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

构造表单上传的三要素

    1.必须是post方式

    2.必须要在form表单属性里面加 enctype="multipart/form-data"

    3.必须加<input type="file">
接收表单上传文件的参数

    1.  $_FILES  接收用户上传文件的数组变量

    参数包含6部分参数: name type tmp_name error size 为索引的索引数组
      
      其中error包含了6个码值(0-7除了5)的错误提示
      tmp_name 临时存放的文件(会过期,因此转移这个文件就达到了文件上传的效果)   2. move_uploaded_file(文件临时的路径,转移到的路径)
同名文件的上传:   思路(把name=xxx[])

不同名文件上传:   思路(构造name不同名字就可以了)

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

<?php

function upFile($file){ 

    #检查系统错误
switch ( $file['error'] ){
case 1:
echo '文件上传的大小超出了系统配置文件的限制大小~';
return false;
case 2:
echo '文件上传的大小超过了浏览器的限制!';
return false;
case 3:
echo '文件没有完全上传完!';
return false;
case 4:
echo '用户没有选择需要上传的文件哟~';
return false;
case 6:
case 7:
echo '服务器繁忙,请客官稍候再试~';
return false;
} #检查逻辑错误
//检查格式类型是否符合要求
$limitType = ['image/jpeg', 'image/png'];//定义出允许的格式类型
if( !in_array($file['type'], $limitType) ){//如果上传的文件格式类型不在允许的范围内,则给出提示信息,并且中止函数的执行
echo '您上传的文件格式类型不符合要求,只能上传' . implode('或', $limitType) . '格式的文件';
return false;
} //检查文件的大小是否符合逻辑要求
$limitSize = 250 * 1024;//限定的大小为250KB
if( $file['size']>$limitSize ){//如果上传的文件大小超过了限定的大小,则给出提示,并且中止函数的执行
echo '您上传的文件超过' . ($limitSize/1024) . 'KB的大小,请重新选择上传的文件!';
return false;
} #构建绝对不重复的文件名
$fileName = uniqid('img_') . date('YmdHis') . '_' . mt_rand(0, 10000) . strstr($file['name'], '.');
$path = 'F:/home/class/day11/code/upload/';
$wholeFileName = $path . $fileName; #转移文件到指定目录
$re = move_uploaded_file($file['tmp_name'], $wholeFileName); if( $re ){//上传成功
echo '恭喜你,文件上传成功';
return true;
}else{//上传失败
echo '系统繁忙,请稍候再试!';
return false;
}
}

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. Codeforces734 E. Anton and Tree

    传送门:>Here< 题意:给出一颗树,节点不是黑色就是白色,每次可以将一个颜色相同的块变颜色,问最少变几次才能让其变为同色 解题思路: 我们考虑由于每一次都是把同样颜色的色块进行变色,因 ...

  2. MySQL免安装版,遇到MSVCR120.dll文件丢失错误的解决方案

    下载 VC redist packages for x64,下载完成,点击运行即可.

  3. maven "mvn不是内部或外部命令,也不是可运行的程序或批处理文件"

    配置maven环境变量cmd控制台提示:mvn不是内部或外部命令,也不是可运行的程序或批处理文件 首先maven环境变量: 变量名:MAVEN_HOME 变量值:E:\apache-maven-3.2 ...

  4. ViewHolder模式的简洁写法

    大家通常怎么写ViewHolder呢? ViewHolder holder = null; if(convertView == null){ convertView = mInflater.infla ...

  5. Android GPS定位测试(附效果图)

    今天因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下.这个程序说起来有些历史了,是我11年编写的,那时候学了Android开发没多久,算是一个实验性的作品.现在工作需要,重新拿出来修整 ...

  6. 【LOJ#6066】「2017 山东一轮集训 Day3」第二题(哈希,二分)

    [LOJ#6066]「2017 山东一轮集训 Day3」第二题(哈希,二分) 题面 LOJ 题解 要哈希是很显然的,那么就考虑哈希什么... 要找一个东西可以表示一棵树,所以我们找到了括号序列. 那么 ...

  7. Python3 与 C# 扩展之~基础衍生

      本文适应人群:C# or Python3 基础巩固 代码裤子: https://github.com/lotapp/BaseCode 在线编程: https://mybinder.org/v2/g ...

  8. 闲聊javascript继承和原型

    javascript继承已经是被说烂的话题了,我就随便聊一点~ 一.javascript的复制继承 javascript的继承有复制继承和原型继承,基于复制继承用的不太多,而且无法通过instance ...

  9. Luogu--3381 【模板】最小费用最大流

    题目链接 3381 [模板]最小费用最大流 手写堆版本 dijkstra   400+ms 看来优先队列的常数好大 #include<bits/stdc++.h> using namesp ...

  10. P1024 一道naive的二分

    好吧,这道题思路还是比较简单的.整个程序大体上很快就打出来了,然后修改了解为整数的情况. 但是交上去一直是50分,最后我很无耻的看了题解,然后抄了一个玄学if回来,瞬间AC,不知道为什么... 这句就 ...