duanchun2349 2016-02-09 04:25
浏览 50
已采纳

浏览器在PHP中重新加载时自动插入以前的数据

I have some data input area.Here is my file.

Here is my 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");
}

?>

And my index.php is:

<?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>

When i first go to index.php page then it's showing some notice.

Notice: Undefined index: name in C:\xampp\htdocs\techmasters\begin\index.php on line 21

Notice: Undefined index: email in C:\xampp\htdocs\techmasters\begin\index.php on line 22

Notice: Undefined index: website in C:\xampp\htdocs\techmasters\begin\index.php on line 23

but if i input any data then it going to be inserted fine.My problem is that if i reload the browser then previous inserted data going to inserted again.How can i solve this problem?

Thanks in advanced.

  • 写回答

2条回答 默认 最新

  • dongqing904999 2016-02-09 04:28
    关注

    Its because, you are not checking whether form is submitted or not.

    On every page request, data is getting inserted, add a check.

    <?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;
    }
    ?>
    

    This will ensure that database insert will be done only in case of form submit.

    EDIT:

    If you submit a form to same page and then reload the page, it will ask you to resubmit the form. Either change method to get and check for duplicity or submit the form to another file (move form submit code to other file and set it as form action).

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料