在网页开发中,表单提交是一个常见的操作。PHP作为常用的服务器端语言,使用起来非常方便。但是,如果不正确地接收和处理表单提交数据,可能会导致安全漏洞,或者出现程序异常。因此,我们需要掌握PHP中如何正确接收和处理表单提交数据。
一、获取表单提交的数据
表单提交数据是通过$_POST或者$_GET方法获取的。$_POST用于获取form表单中提交method为Post的数据,$_GET用于获取method为Get的数据。我们可以通过isset方法判断是否有值传过来。
例如下面的表单:
“`html
“`
在PHP中获取的方式为:
“`php
if (isset($_POST[‘submit’])) {
$username = $_POST[‘username’];
$password = $_POST[‘password’];
}
“`
需要注意的是,使用$_POST和$_GET获取数据时,需要做好数据安全校验工作,避免SQL注入和XSS攻击等漏洞。
二、处理表单提交的数据
获取表单提交的数据只是之一步,我们还需要对数据进行逻辑处理,比如数据的验证、存储、输出等。
1. 数据的验证
在表单数据提交之前,需要对表单数据进行验证,验证方式有很多种,例如正则表达式、PHP内置函数等。
以验证用户名为例:
“`php
function check_username($username) {
$length = mb_strlen($username, ‘UTF-8’);
if ($length 20) {
return false;
}
$pattern = ‘/^[a-zA-Z0-9_]+$/’;
if (!preg_match($pattern, $username)) {
return false;
}
return true;
}
if (isset($_POST[‘submit’])) {
$username = $_POST[‘username’];
if (check_username($username)) {
// 用户名格式正确
} else {
// 用户名格式错误
}
}
“`
通过正则表达式和PHP内置函数验证是否符合格式。
2. 数据的存储
把表单提交的数据存储在数据库或者文件中,可以使用MySQLi或PDO扩展。
以MySQLi为例:
“`php
$con = mysqli_connect(“localhost”, “root”, “”, “mydb”);
if (!$con) {
die(“连接失败: ” . mysqli_connect_error());
}
$username = $_POST[‘username’];
$password = $_POST[‘password’];
$sql = “INSERT INTO user (username, password)
VALUES (‘$username’, ‘$password’)”;
if (mysqli_query($con, $sql)) {
echo “数据插入成功”;
} else {
echo “数据插入失败: ” . mysqli_error($con);
}
mysqli_close($con);
“`
3. 数据的输出
表单提交的数据可以输出到页面上,以便用户查看。
例如:
“`php
if (isset($_POST[‘submit’])) {
$username = $_POST[‘username’];
$password = $_POST[‘password’];
echo “用户名:$username,密码:$password”;
}
“`
需要注意的是,用户输入的数据需要进行HTML转义,避免XSS攻击。
三、常见问题及解决方案
1. 表单提交后,URL中可以看到参数。
这是因为表单提交方式为Get,在URL中传递参数。可以将method改为Post。
2. 可以通过Fiddler等工具修改表单提交数据。
需要做好数据校验,避免SQL注入和XSS攻击等漏洞。
3. 表单提交数据不能包括中文。
需要设置正确的字符集,例如UTF-8,可以在页面头部设置。
“`html
“`
四、
正确接收和处理表单数据是网页开发中的一个基本技能,需要掌握好表单数据的获取、存储和验证方法,以及相关的安全问题。在实际开发中,需要注意数据安全和性能,避免出现异常情况。
相关问题拓展阅读:
- html中提交表单,但php中无法显示表单中的数据。
- 我用一个表单给服务器提交数据,数据提交到了相应的PHP代码,但是将数据存入数据库中,数据库是空的。
- 关于表单提交 用PHP后台接收值时报错
html中提交表单,但php中无法显示表单中的数据。
楼上+1,改成双引号试试
Welcome .
You are years old!
改成咐蠢双引号试试
开开php.ini中是不是关闭了 POST GET传值
程序是没有错误的,你确定你的php能正常运行么。。
写到同一个文件里看看。
我用一个表单给服务器提交数据,数据提交到了相应的PHP代码,但是将数据存入数据库中,数据库是空的。
$_get
是因为你的坏习惯…
……values(‘${_GET}’,’${_GET}’);
另外遇到这样的问题,
为什么你不试试echo sql语句出来呢?
还是那句话,想偷懒没问题,前提是你真的知道它的原理。
name名字要和数据库相同
直接用fopen()就可以
关于表单提交 用PHP后台接收值时报错
测试代码
测试
提交
页面显示如下:
提交后
完全正常,请参照上面代码检查你的代码。
提交前的页面如果不希望出现错误提示,赋值前可加上判断
$t = isset($_POST) ? $_POST : NULL;
你获取表单数据之前要判断下有没有数据提交上来了。
这样的代码:
echo $_POST;
当然是要出错的啊。
//接收表单是一定要判断下的
if(isset($_POST)){
echo $_POST;
}
你这个问题就是$_POST没有数据可是你却使用了$_POST
在php文件的最顶部加上
关于form提交php怎么接收不到数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。