PHP通过表单与URL传递值示例代码|新手一看就会的实战教程

文章目录CloseOpen

    • 先搞懂:表单传值到底怎么玩?
    • URL传值:怎么把参数藏在链接里?
    • 最后:用表格分清POST和GET的区别
      • 为什么表单提交后,PHP拿不到输入的值?
      • 表单传值用POST还是GET?怎么选?
      • URL传值时,参数有中文或特殊字符怎么办?
      • 接收数据时,PHP报“未定义索引”错误怎么办?

    先搞懂:表单传值到底怎么玩?

    我见过很多新手写表单,要么漏了关键属性,要么参数名写错,结果白忙活。其实表单传值就两步:写对HTML表单 + 用PHP接住数据

    先讲HTML表单的“正确姿势”——我之前写表单总忘加method,结果默认用GET,数据全暴露在URL里,后来才知道POST更安全。比如做用户注册,form标签要这么写:




这里有两个关键点:action是数据要发去的PHP文件(比如handle.php),method选POST(敏感数据,比如密码)或GET(比如搜索框)。我再强调一遍:method不要漏,不然默认用GET,数据会显示在URL里,超不安全。

再来说input标签的name属性——这是我踩过的最蠢的坑:第一次写input没加name,提交后$_POST里啥都没有,查了文档才明白:name是PHP识别字段的“身份证”。比如,PHP里就能用$_POST['username']拿到用户输入的内容。要是没加name,PHP根本不知道这是啥字段,自然拿不到值。

接下来是PHP接收数据的代码——我写了个简单的handle.php,加了注释,你一看就懂:

<?php 

// 解决中文乱码(记得HTML和PHP都要设utf-8)

header("Content-Type: text/html; charset=utf-8");

// 接收用户名(对应input的name="username")

$username = $_POST['username'];

// 接收密码(对应input的name="password")

$password = $_POST['password'];

// 简单验证(实际项目要连数据库,这里先模拟)

if ($username == 'admin' && $password == '123') {

echo '登录成功!';

} else {

echo '账号或密码错误,请重试。';

}

?>

是不是很简单?我当初写这段代码时,特意把每个步骤都标了注释——哪怕你是第一次碰PHP,也能跟着复制改一改就用。

再给你提个醒:中文乱码是新手常踩的坑。我之前做表单提交中文,结果显示一堆问号,后来在PHP文件开头加了header("Content-Type: text/html; charset=utf-8");,同时把HTML的加上,就解决了。记住:HTML和PHP的编码要统一,都用utf-8准没错。

URL传值:怎么把参数藏在链接里?

说完表单,再讲URL传值——比如你做电商小demo,点商品标题要跳转到详情页,得把商品ID传过去。我当初学这个时,盯着链接看了半小时:“参数怎么加?PHP怎么拿?”后来才明白:URL传值就是把参数拼在链接后面

比如商品列表里的链接,要传商品ID=1,就写成这样:

iPhone 15

这里的?id=1就是参数——?是参数的开始,id是参数名,1是参数值。要是有多个参数,用&连接,比如detail.php?id=1&type=phone

接下来是PHP接收URL参数的代码——我写了个detail.php的示例,还是带注释:

<?php 

header("Content-Type: text/html; charset=utf-8");

// 接收URL里的id参数(对应链接里的?id=1)

$product_id = $_GET['id'];

// 模拟数据库数据(实际项目要查数据库,这里简化)

$products = array(

1 => array('name' => 'iPhone 15', 'price' => '5999', 'stock' => '有货'),

2 => array('name' => 'iPad Pro', 'price' => '7999', 'stock' => '缺货')

);

// 输出商品详情

echo '商品名称:' . $products[$product_id]['name'] . '
';

echo '价格:' . $products[$product_id]['price'] . '元
';

echo '库存:' . $products[$product_id]['stock'];

?>

你看,用$_GET['id']就能拿到URL里的id值——是不是和表单传值差不多?只不过表单用$_POST,URL用$_GET

再给你避个坑:URL传值别放敏感数据。我之前犯过傻——把用户密码拼在URL里,结果被朋友提醒:“这数据全暴露了,别人截个图就能盗号!”后来才知道,URL传值适合非敏感数据(比如商品ID、分页参数),敏感数据一定要用POST。

最后:用表格分清POST和GET的区别

我整理了个表格,帮你快速记住两者的不同——这是我当初学的时候贴在桌面的“作弊小抄”:

对比项 POST GET
数据位置 藏在请求体里(不暴露) 显示在URL里(看得见)
数据大小 无限制(取决于服务器) 约2KB(浏览器限制)
适用场景 敏感数据(登录、注册) 非敏感数据(搜索、分页)
安全性 较高(不暴露数据) 较低(数据可见)

比如做登录表单,优先用POST;做搜索框(比如“搜索商品”),用GET更方便——毕竟用户可能想保存搜索链接。

你要是按这些方法试了,比如写个简单的表单或者URL传值demo,欢迎回来告诉我效果!要是遇到问题,评论区留个言,我帮你看看——毕竟我也是从踩坑过来的~


比如你想做个商品分类的链接,要传“手机配件”这个词到URL里,直接写“category.php?type=手机配件”肯定不行——我之前就踩过这坑,点链接后页面显示一堆乱码,像“手机鍚堝惉”这种,根本看不懂。后来才明白,URL里不能直接放中文或者特殊字符(比如&、?、空格这些),浏览器解析的时候会“懵圈”,得先把这些字符转成“安全的字符串”才行。

那怎么转呢?用PHP的urlencode()函数就行。比如你要传“手机配件”,先在PHP里写$type = urlencode(“手机配件”);,这时候$type会变成“%E6%89%8B%E6%9C%BA%E9%85%8D%E4%BB%B6”——看起来像乱码,但其实是浏览器能看懂的“编码后的字符串”。然后把这个字符串拼到URL里,链接就变成“category.php?type=%E6%89%8B%E6%9C%BA%E9%85%8D%E4%BB%B6”,这样点链接就不会乱码了。

接收的时候也简单,用urldecode()函数把编码后的字符串转回来就行。比如PHP里写$type = urldecode($_GET[‘type’]);,这时候“%E6%89%8B%E6%9C%BA%E9%85%8D%E4%BB%B6”就变回“手机配件”了,正常显示没问题。

对了,还有空格这种特殊字符也得注意——比如你要传“小米 14”,直接写的话URL里会变成“xiaomi+14”,虽然很多浏览器能处理,但有的系统会把“+”当成空格,有的不会,容易出问题。用urlencode()的话,空格会转成“%20”,比如“小米 14”会变成“%E5%B0%8F%E7%B1%B3%2014”,这样不管什么系统都能正确解析,比用“+”靠谱多了。

现在很多浏览器会自动给URL里的中文编码,但为了兼容所有情况——比如老版本浏览器或者一些奇葩的系统——最好还是自己手动用urlencode()处理参数,尤其是用PHP生成链接的时候,亲测这样能少踩很多乱码的坑。


为什么表单提交后,PHP拿不到输入的值?

最常见的原因有三个:① input标签没加name属性(这是PHP识别字段的“身份证”,没加的话PHP根本不知道要拿什么);② form标签漏写method属性(默认用GET,若你用$_POST接收会空);③ action属性的PHP文件路径错误(比如把handle.php写成handle/php,要确认文件位置是否正确)。

表单传值用POST还是GET?怎么选?

优先看数据的敏感性:① 敏感数据(如密码、银行卡号)必须用POST,数据藏在请求体里,不会暴露在URL;② 非敏感数据(如搜索关键词、商品ID)可以用GET,方便用户保存或分享链接(比如“搜索iPhone 15”的结果页,用户能直接 bookmark)。

URL传值时,参数有中文或特殊字符怎么办?

需要对特殊字符“编码”。比如要传中文“手机”,可以用urlencode()函数把中文转成安全的字符串(比如%E6%89%8B%E6%9C%BA),再拼到URL里;PHP接收时用urldecode()转回来,就能正常显示中文了。

接收数据时,PHP报“未定义索引”错误怎么办?

这是因为你直接用$_POST[‘username’]但参数没传(比如用户没填就提交)。解决方法是先判断参数是否存在:比如if(isset($_POST[‘username’])) { $username = $_POST[‘username’]; } else { $username = ”; },先检查再赋值,就不会报错了。

温馨提示:本站提供的一切软件、教程和内容信息都来自网络收集整理,仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,版权争议与本站无关。用户必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解! 联系邮箱:lgg.sinyi@qq.com

给TA打赏
共{{data.count}}人
人已打赏
行业资讯

PHP通过表单与URL传递值超详细示例代码|新手一看就会的实操教程

2025-9-11 0:11:31

行业资讯

不用下载就能点外卖|微信小程序送餐app推荐

2025-9-11 0:11:40

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索