表单提交与接收
js提交信息的方式分为get和post
提交给服务器的信息分别使用全局变量$_GET和$_POST 调用
查看手册
get
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://127.0.0.1/jquery/ajax/get.php" method="get">
<input type="text" name="userName">
<input type="password" name="userPawd">
<input type="submit" value="提交">
</form>
</body>
</html>
<?php
print_r($_GET); //$_POST 和$_GET以字典的形式提交
echo $_GET["userName"];//单独调用
echo $_GET["userPwd"];
?>
get方法提交的地址栏和接收到的信息:
http://127.0.0.1/jquery/ajax/get.php?userName=lm&userPawd=123
Array ( [userName] => lm [userPawd] => 123 )
可以看到get方法提交的信息被直接写到地址栏,所以我们还是不要用它提交密码。
post
相比get方法post方法的提交只需要将method改为post
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://127.0.0.1/jquery/ajax/get.php" method="post">
<input type="text" name="userName">
<input type="password" name="userPawd">
<input type="submit" value="提交">
</form>
</body>
</html>
虽然信息被隐藏,但依然被放置于请求头部
<?php
print_r($_POST);
echo $_POST["userName"];
echo $_POST["userPwd"];
?>
所以用类似的方法就可以调用
异同
- 相同点
都是将数据提交到远程服务器 - 不同点
-
数据存储位置不同
GET将数据存放于URL后
POST将数据放于请求头 -
数据大小限制不同
get对数据大小有限制(2000字符)
post对数据没有大小限制
-
post文件上传
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<form action="post.php" method="post">
<input type="file" name="upFile"><br>
<input type="submit"value="提交">
</form>
</body>
</html>
<?php
print_r($_POST);
?>
用使用接收密码的方式接收文件只接收到了文件名
Array ( [upFile] => nine.png )
查看手册
标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。标签的 type=“file” 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。
修改一下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<form action="post.php" method="post" enctype="multipart/form-data">
<input type="file" name="upFile"><br>
<input type="submit"value="提交">
</form>
</body>
</html>
结果连文件名都接收不到了
Array ()
说明当上传文件时不能使用
P
O
S
T
接
收
观
察
全
局
变
量
,
其
中
有
一
个
_POST接收 观察全局变量,其中有一个
POST接收观察全局变量,其中有一个_FILES,我们尝试一下
<?php
print_r($_POST);
?>
结果为:
Array ( [upFile] => Array ( [name] => nine.png [type] => image/png [tmp_name] => F:\tool\wamp\tmp\phpD8BF.tmp [error] => 0 [size] => 902241 ) )
可见字典中保存了:文件名、文件类型、存放位置、错误数、文件大小
但因为我们没有指定存放位置,所以文件被存放到tmp(临时文件)中,因为这个文件并没有被使用,自然我们在临时文件夹下也找不到他,所以我们要把临时文件换个位置保存
move_uploaded_file(file,newloc)
move_uploaded_file() 函数把上传的文件移动到新位置
参数 | 描述 |
---|---|
file | 规定要移动的文件。 |
newloc | 规定文件的新位置 |
<?php
print_r($_FILES);
$fileInfo = $_FILES["upFile"];
$fileName = $fileInfo["name"];
$filePatch= $fileInfo["tmp_name"];
move_uploaded_file($filePatch,"./source/".$fileName);
?>
post上传大文件
web服务器默认对文件大小存在限制,当上传文件过大时可能出错
配置文件存放于
wamp\bin\apache\Apache2.2.21\bin\php.ini
常用配置
file_uploads = On //是否允许上传文件
upload_max_filesize = 2M//上传文件最大大小
post_max_size = 8M //post方法上传文件最大大小
max_execution_time = 30 //脚本最长执行时间
max_input_time = 60 //提交数据时间限制
memory_limit = 128M //最大内存消耗
更改后的设置在服务器重启后才会生效