php系列之获取表单提交数据

通常表单的提交是通过POST方式,表单提交的数据分为两种,一种是普通的文本数据,一种是上传的文件.在php中,普通的表单数据通过$_POST可以获取到;文件则通过$_FILES获取.看一下下面的案例:

<?php 
	function dealData () {
		echo '<pre>';
		var_dump($_FILES);
		var_dump($_POST);
		echo '</pre>';
	}

	if ($_SERVER['REQUEST_METHOD'] == 'POST') {
		dealData();
	}
?>

<!DOCTYPE html>
<html>
<head>
	<title>form test</title>
</head>
<body>
	<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" style="line-height: 30px;" enctype="multipart/form-data">
		<label for="name">姓 名:</label>
		<input type="text" name="name" id="name" placeholder="请输入姓名"><br />
		<label>性 别:</label>
		<input type="radio" name="sex" value="男">男
		<input type="radio" name="sex" value="女">女<br />
		<label>爱 好:</label>
		<input type="checkbox" name="interest[]" value="篮球">篮球
		<input type="checkbox" name="interest[]" value="足球">足球
		<input type="checkbox" name="interest[]" value="乒乓球">乒乓球<br />
		<label for="file">单个文件:</label>
		<input type="file" name="file" id="file"><br />
		<label for="files">多个文件:</label>
		<input type="file" name="files[]" id="files" multiple><br />
		<input type="submit" value="提 交">
	</form>
</body>
</html>

提交的数据:

打印结果:

array(2) {
  ["file"]=>
  array(5) {
    ["name"]=>
    string(20) "DYTool_201905310.exe"
    ["type"]=>
    string(24) "application/x-msdownload"
    ["tmp_name"]=>
    string(27) "C:\Windows\Temp\phpCA8F.tmp"
    ["error"]=>
    int(0)
    ["size"]=>
    int(73863128)
  }
  ["files"]=>
  array(5) {
    ["name"]=>
    array(2) {
      [0]=>
      string(20) "DYTool_201905310.exe"
      [1]=>
      string(19) "xunyou_20190610.exe"
    }
    ["type"]=>
    array(2) {
      [0]=>
      string(24) "application/x-msdownload"
      [1]=>
      string(24) "application/x-msdownload"
    }
    ["tmp_name"]=>
    array(2) {
      [0]=>
      string(27) "C:\Windows\Temp\phpCC64.tmp"
      [1]=>
      string(27) "C:\Windows\Temp\phpCE1A.tmp"
    }
    ["error"]=>
    array(2) {
      [0]=>
      int(0)
      [1]=>
      int(0)
    }
    ["size"]=>
    array(2) {
      [0]=>
      int(73863128)
      [1]=>
      int(33236704)
    }
  }
}
array(3) {
  ["name"]=>
  string(12) "小李飞刀"
  ["sex"]=>
  string(3) "男"
  ["interest"]=>
  array(3) {
    [0]=>
    string(6) "篮球"
    [1]=>
    string(6) "足球"
    [2]=>
    string(9) "乒乓球"
  }
}

案例中的表单包括的input组件类型有text,radio,checkbox,file,其中的text,radio和checkbox提交的数据在$_POST之中可以通过组件的name为键获取到他们的value值,需要注意的是,类似checkbox这种多选的组件时,组件的name属性值需要加[]表示他们是一个数组.

表单中的file组件选择的文件在$_FILES中获取到,文件上传需要通过POST方式,并且设置表单的enctype为multipart/form-data,文件数据分两种情况:单文件和多文件.当为多选文件的组件时,同样需要在name值后面添加[].

$_FILES中的文件数据有5个属性:name,type,tmp_name,error,size.

name为文件的名字,type为文件的MIME Type,tmp_name为文件的临时存放目录,error为错误码,0代表成功,size为文件的大小.

当上传成功后,需要通过php中的move_uploaded_file函数把文件从tem_name临时路径移动到需要存放的目录中.

当为多选文件时,每个属性都是数组类型,依次存放着各个文件的信息;当为单选文件时,属性值为字符串类型,为所选文件对应的信息.

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值