03-php之表单
表单传值:即浏览器通过表单元素将用户选择或输入的数据传给后台服务器
表单传值
get 传值
1. form表单的形式
<?php
<form method="get">表单元素</form>
2. a标签
<a href="XXX/index.php?name=php"></a>
3. location对象的href属性
// js语句
location.href='XXX/index.php?name=php';
4. location对象的assign()方法
// js语句
location.assign('XXX/index.php?name=php');
post 传值
只有一种 form表单的形式
<?php
<form method="post">表单元素</form>
get传值和post传值的区别
1、 get传输的数据通常是用来获取数据,不改变服务器上的资源:一般是查询数据
2、 post传输的数据通常是用来增加、修改数据,会改变服务器上的资源
3、 post只有form表单一种传输方式,而get可以有form表单和a标签等多种方式
4、 get传输的数据可以在url中对外可见,post不可见
get传值在浏览器地址栏中的表现:?字段名=数值&字段名=数值...
5、get和post可以传输的数据大小不同:get为2k,post理论上无上限
实际上,get和post本身是没有数据长度限制的,一般是浏览器厂家做的限制
6、 get和post传输数据的格式不一样:get传输简单数据:数值或字符串,post传输复杂数据
表单接收数据
PHP 超全局变量主要通过 $_GET
和 $_POST
和$_request
接收表单数据
$_GET
: 接收get方式提交的数据
$_POST
: 接收post方式提交的数据
$_REQUEST
: 接收GET或POST方式提交的数据:将GET和POST提交的数据合并到了一个数组里面,所以可以同时接收GET和POST提交的数据
如果GET和POST提交的数据中有同名的数组元素,那么post会覆盖get
GET和POST
GET
- 通过 GET 方法从表单发送的信息对任何人都是可见的(所有变量名和值都显示在 URL 中)
- GET 对所发送信息的数量也有限制。限制在大约 2000 个字符。不过,由于变量显示在 URL 中,把页面添加到书签中也更为方便。
- GET 可用于发送非敏感的数据。
- 绝不能使用 GET 来发送密码或其他敏感信息!
POST
- 通过 POST 方法从表单发送的信息对其他人是不可见的(所有名称/值会被嵌入 HTTP 请求的主体中),并且对所发送信息的数量也无限制。
- POST 支持高阶功能,比如在向服务器上传文件时进行 multi-part 二进制输入。
- 不过,由于变量未显示在 URL 中,也就无法将页面添加到书签。
GET 和 POST区别与联系
- GET 和 POST 都创建数组(例如,array( key => value, key2 => value2, key3 => value3, ...))。此数组包含键/值对,其中的键是表单控件的名称,而值是来自用户的输入数据。
- GET 和 POST 被视作
$_GET
和$_POST
。它们是超全局变量,这意味着对它们的访问无需考虑作用域 - 无需任何特殊代码,您能够从任何函数、类或文件访问它们。 - $_GET 是通过 URL 参数传递到当前脚本的变量数组。
- $_POST 是通过 HTTP POST 传递到当前脚本的变量数组。
一个应用:提交数据、接收数据
1. 表单数据提交
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>表单get和post提交数据</title>
<style type="text/css">
.formAction {
width: 600px;
margin: 30px auto;
}
.formAction .perItem {
overflow: hidden;
width: 100%;
margin: 20px 0px;
}
.formAction .perItem .tag {
float: left;
}
.formAction .perItem input {
float: left;
}
.perRadio,
.perCheckbox {
margin-right: 36px;
overflow: hidden;
float: left;
}
.perRadio input[type='radio'],
.perCheckbox input[type='checkbox'] {
float: left;
}
.perRadio span,
.perCheckbox span {
float: left;
}
</style>
</head>
<body>
<div class="formAction">
<!--默认是get模式-->
<!--action 属性值为空表示提交到当前脚本-->
<!-- 表单元素必须要有name属性,才可以被接收 -->
<form action="index.php" method="post">
<div class="perItem">
<div class="tag">姓名:</div>
<input type="text" name="userName" />
</div>
<div class="perItem">
<div class="tag">年龄:</div>
<input type="text" name="age" />
</div>
<div class="perItem">
<div class="tag">站点:</div>
<select name="site" id="site">
<option value="">选择一个站点:</option>
<option value="RUNOOB">Runoob</option>
<option value="GOOGLE">Google</option>
<option value="TAOBAO">Taobao</option>
</select>
</div>
<div class="perItem">
<div class="tag">多个站点:</div>
<!--下拉菜单是多选的( multiple="multiple"),我们可以通过将设置 select name="q[]" 以数组的方式获取-->
<select multiple="multiple" name="siteMore[]" id="siteMore">
<option value="">选择多个站点:</option>
<option value="RUNOOB">Runoob</option>
<option value="GOOGLE">Google</option>
<option value="TAOBAO">Taobao</option>
</select>
</div>
<div class="perItem">
<div class="tag">单选复选框站点</div>
<!--单选按钮radio name属性必须设置相同-->
<div class="perRadio">
<input checked type="radio" name="radioSite" value="RUNOOB" />
<span>Runoob</span>
</div>
<div class="perRadio">
<input type="radio" name="radioSite" value="GOOGLE" />
<span>Google</span>
</div>
<div class="perRadio">
<input type="radio" name="radioSite" value="TAOBAO" />
<span>Taobao</span>
</div>
</div>
<div class="perItem">
<div class="tag">多选复选框站点:</div>
<!--复选框checkbox name属性必须是数组-->
<div class="perCheckbox">
<!-- checked 默认选中 -->
<input checked type="checkbox" name="checkboxSite[]" value="RUNOOB" />
<span>Runoob</span>
</div>
<div class="perCheckbox">
<input type="checkbox" name="checkboxSite[]" value="GOOGLE" />
<span>Google</span>
</div>
<div class="perCheckbox">
<input type="checkbox" name="checkboxSite[]" value="TAOBAO" />
<span>Taobao</span>
</div>
</div>
<button type="submit">提交</button>
<button type="reset">清空</button>
</form>
</div>
</body>
</html>
2. 接收表单数据
<?php
// 接收数据
//姓名(input)
echo '姓名:' . $_POST['userName'] . '<br>';
//年龄(input)
echo '年龄:' . $_POST['age'] . '<br>';
// 下拉框单选:站点
$site = isset($_POST['site']) ? $_POST['site'] : '';
echo '下拉框选择的值:'.convertSite($site);
// 下拉框多选:多个站点
$siteMore = isset($_POST['siteMore']) ? $_POST['siteMore'] : '';
if (is_array($siteMore)) {
$siteArray = array(
'RUNOOB' => '菜鸟教程: http://www.runoob.com',
'GOOGLE' => 'Google 搜索: http://www.google.com',
'TAOBAO' => '淘宝: http://www.taobao.com',
);
$desc = '多个站点:';
foreach ($siteMore as $item) {
echo $desc . $siteArray[$item] . '<br>';
}
}
// 单选站点(单选按钮)
$radioSite = isset($_POST['radioSite']) ? $_POST['radioSite'] : '';
if ($radioSite) {
echo '单选按钮站点:' . convertSite($radioSite);
}
function convertSite($name)
{
if ($name == 'RUNOOB') {
return '菜鸟教程--http://www.runoob.com' . '<br>';
} else if ($name == 'GOOGLE') {
return 'Google--http://www.google.com' . '<br>';
} else if ($name == 'TAOBAO') {
return '淘宝--http://www.taobao.com' . '<br>';
}
}
// 复选框 多选
$CheckBoxSite = isset($_POST['checkboxSite']) ? $_POST['checkboxSite'] : '';
echo '复选框 多选:一个数组';
print_r($CheckBoxSite);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!