在PHP中重新加载浏览器时自动插入以前的数据
我有一些数据在PHP中重新加载浏览器时自动插入以前的数据,php,html,mysql,css,Php,Html,Mysql,Css,我有一些数据input区域。这是我的文件 这是我的db.php: <?php $username = "root"; $password = ""; try { $db = new PDO('mysql:host=localhost;dbname=task', $username, $password); echo "Connection Successfull"; } catch (PDOException $e) { die("Error: Database
input
区域。这是我的文件
这是我的db.php:
<?php
$username = "root";
$password = "";
try {
$db = new PDO('mysql:host=localhost;dbname=task', $username, $password);
echo "Connection Successfull";
} catch (PDOException $e) {
die("Error: Database connection");
}
?>
我的index.php是:
<?php
include "db.php";
?>
<!DOCTYPE html>
<html>
<head>
<title>This is title</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="wrap1">
<form method="POST" action="">
<input type="text" name="name" required> Username</br></br>
<input type="email" name="email" required> Email</br></br>
<input type="text" name="website" required> Website</br></br>
<input type="submit" value="Submit">
</form>
</div>
<?php
$username = $_POST['name'];
$emailadd = $_POST['email'];
$webadd = $_POST['website'];
$sql = "INSERT INTO users (name,email,website) VALUES ('$username','$emailadd','$webadd')";
if(empty($username) || empty($emailadd) || empty($webadd)){
echo "Please input all field";
}
else{
if ($db->query($sql)) {
echo "Inserted!";
}
else{
echo "Error";
}
}
$db = null;
?>
</body>
</html>
这是标题
用户名
电子邮件
网站
这是因为,您没有检查表单是否已提交
在每个页面请求中,插入数据时,添加一个检查
<?php
if (isset($_POST['name']) && ! empty($_POST['name'])) {
$username = $_POST['name'];
$emailadd = $_POST['email'];
$webadd = $_POST['website'];
$sql = "INSERT INTO users (name,email,website) VALUES ('$username','$emailadd','$webadd')";
if (empty($username) || empty($emailadd) || empty($webadd)){
echo "Please input all field";
}
else{
if ($db->query($sql)) {
echo "Inserted!";
}
else{
echo "Error";
}
}
$db = null;
$_POST = NULL;
}
?>
这是因为,您没有检查表单是否已提交
在每个页面请求中,插入数据时,添加一个检查
<?php
if (isset($_POST['name']) && ! empty($_POST['name'])) {
$username = $_POST['name'];
$emailadd = $_POST['email'];
$webadd = $_POST['website'];
$sql = "INSERT INTO users (name,email,website) VALUES ('$username','$emailadd','$webadd')";
if (empty($username) || empty($emailadd) || empty($webadd)){
echo "Please input all field";
}
else{
if ($db->query($sql)) {
echo "Inserted!";
}
else{
echo "Error";
}
}
$db = null;
$_POST = NULL;
}
?>
重新加载页面时,它要求重新提交表单。当您单击“重新发送”时,它将再次发布所有数据并插入数据库。要解决这个问题,可以使用jquery
请尝试以下代码:
html文件:
<!DOCTYPE html>
<html>
<head>
<title>This is title</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="wrap1">
<form method="POST" id="frm" action="">
<input type="text" name="name" required> Username</br></br>
<input type="email" name="email" required> Email</br></br>
<input type="text" name="website" required> Website</br></br>
<input type="submit" class="sub" value="Submit">
</form>
</div>
<script>
$(".sub").click(function (e) {
e.preventDefault();
$.post("test.php",$("#frm").serialize(),function(data){
if(data == "Inserted!") {
//You can reload your page here
} else {
//Display error message.
}
});
});
</script>
</body>
</html>
这是标题
用户名
电子邮件
网站
$(“.sub”)。单击(函数(e){
e、 预防默认值();
$.post(“test.php”,$(“#frm”).serialize(),函数(数据){
如果(数据==“插入!”){
//您可以在此处重新加载页面
}否则{
//显示错误消息。
}
});
});
您可以使用php代码(test.php):
重新加载页面时,它要求重新提交表单。当您单击“重新发送”时,它将再次发布所有数据并插入数据库。要解决这个问题,可以使用jquery
请尝试以下代码:
html文件:
<!DOCTYPE html>
<html>
<head>
<title>This is title</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="wrap1">
<form method="POST" id="frm" action="">
<input type="text" name="name" required> Username</br></br>
<input type="email" name="email" required> Email</br></br>
<input type="text" name="website" required> Website</br></br>
<input type="submit" class="sub" value="Submit">
</form>
</div>
<script>
$(".sub").click(function (e) {
e.preventDefault();
$.post("test.php",$("#frm").serialize(),function(data){
if(data == "Inserted!") {
//You can reload your page here
} else {
//Display error message.
}
});
});
</script>
</body>
</html>
这是标题
用户名
电子邮件
网站
$(“.sub”)。单击(函数(e){
e、 预防默认值();
$.post(“test.php”,$(“#frm”).serialize(),函数(数据){
如果(数据==“插入!”){
//您可以在此处重新加载页面
}否则{
//显示错误消息。
}
});
});
您可以使用php代码(test.php):
不是总是可用吗?$\u POST
总是设置好的,最好使用!空的
,或者只说OP最初检查的特定post字段empty@SwarajGiri,你是对的$\u POST
是一个超级全局变量,始终可用。我已经更新了我的答案。if(设置($\u POST['name']&&&$\u POST['name'])
无需使用empty
<代码>如果
就足够了。这是浏览器属性。如果您将表单提交到同一页面,然后重新加载该页面,它将要求您重新提交表单。更改方法以获取并检查重复性,或者将表单提交到另一个文件(将表单提交代码移动到另一个文件并将其设置为表单操作)。是否$\u POST
始终可用?$\u POST
始终处于设置状态,最好使用!空的
,或者只说OP最初检查的特定post字段empty@SwarajGiri,你是对的$\u POST
是一个超级全局变量,始终可用。我已经更新了我的答案。if(设置($\u POST['name']&&&$\u POST['name'])
无需使用empty
<代码>如果
就足够了。这是浏览器属性。如果您将表单提交到同一页面,然后重新加载该页面,它将要求您重新提交表单。更改方法以获取并检查重复性,或者将表单提交到另一个文件(将表单提交代码移动到另一个文件并将其设置为表单操作)。