每次我刷新页面,它插入相同的用户到数据库


Every time i refresh page it inserts same user into database

PHP代码

<?php
if(isset($_POST['Murad'])){
$firstname=$_POST['firstname'];
$lastname=$_POST['lastname'];
$userName=$_POST['username'];
$password=$_POST['pwd1'];
$userName = stripslashes($userName);
$password = stripslashes($password);
$email=$_POST['email'];
$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password = "123";
$mysql_databse = "websiteusers";
$prefix = "";
$bd = mysqli_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Could not connect database");
$sql = "INSERT INTO websiteusers 
       (fullname,lastname,userName,email,pass) 
       VALUES ( '$firstname', '$lastname','$userName', '$email','$password')";
        mysqli_select_db($bd,'websiteusers');
$retval = mysqli_query($bd,$sql );
if(! $retval )
{
  die('Could not enter data: ');
  return false;
}
else {echo "Entered data successfully'n";
   }
   $usernamecheck=mysqli_query($bd,"SELECT `userName` FROM `websiteusers` 
                             WHERE userName='$userName'");
if(mysqli_num_rows($usernamecheck)>=1){
   echo $userName." is already taken";
 return false;
 }header("Location: Main.php");}
?>

用户注册,然后当他在他的个人资料页面,只要他刷新它插入相同的用户名再次。而且用户名和电子邮件在my dt中是唯一的它无法插入,并给出错误

你能做的是在表单提交成功后,

你可以重置表单

将用户重定向到同一页面

if(! $retval )
{
  die('Could not enter data: ');
  return false;
}
else {
    echo "Entered data successfully'n";
     header("Location:samepagename.php");
   }

重置表单

      this.form.reset(); 

在表单成功提交后调用

试试这个:

<?php
    if(isset($_POST['Murad'])) {
        $firstname=$_POST['firstname'];
        $lastname=$_POST['lastname'];
        $userName=$_POST['username'];
        $password=$_POST['pwd1'];
        $userName = stripslashes($userName);
        $password = stripslashes($password);
        $email=$_POST['email'];
        $mysql_hostname = "localhost";
        $mysql_user = "root";
        $mysql_password = "123";
        $mysql_databse = "websiteusers";
        $prefix = "";
        $link = new PDO('mysql:dbhost='.$mysql_hostname.';dbname='.$mysql_database,$mysql_user, $mysql_password);
        $unamecheck = ("SELECT userName FROM websiteusers WHERE userName = :uname");
        $unamecheck = $link->prepare($unamecheck);
        $unamecheck->execute(array(':uname'=>$userName));
        if($unamecheck->rowCount() > 0) {
            echo "Username taken";
            die();
        } else {
            $add = ("INSERT INTO websiteusers (fullname, lastname, userName, email, pass) VALUES (:fname, :lname, :uname, :pass)");
            $add = $link->prepare($add);
            $add->execute(array(':fname'=>$firstname, ':lname'=>$lastname, ':uname'=>$userName, ':pass'=>$password));
            if($add->rowCount() > 0) {
                echo "Registration successful";
                header("Location: Main.php");
            } else {
                echo "Registration failed";
            }
        }
    }
?>

您现在正在做的是在数据库中插入一个用户,然后执行检查该用户是否存在。你需要移动一些代码。

$bd = mysqli_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Could not connect database");
 $usernamecheck=mysqli_query($bd,"SELECT `userName` FROM `websiteusers` 
                             WHERE userName='$userName'");
if(mysqli_num_rows($usernamecheck)>=1){
   echo $userName." is already taken";
 } else {
$sql = "INSERT INTO websiteusers 
       (fullname,lastname,userName,email,pass) 
       VALUES ( '$firstname', '$lastname','$userName', '$email','$password')";
        mysqli_select_db($bd,'websiteusers');
$retval = mysqli_query($bd,$sql );
if(! $retval )
{
  die('Could not enter data: ');
}
else {
    echo "Entered data successfully'n";
}
}
    }

这种方式首先检查用户是否已经存在。如果是,则终止脚本,之后的代码不执行。否则,在数据库中插入一个用户