dtd58256 2016-03-13 22:12
浏览 22
已采纳

注册表不会将数据发送到数据库

So I made this registration form but it won't send the data to my database, it works sometimes and sometimes it doesn't, it is really weird. here is the code.

<?php
error_reporting(E_ALL);
define('DB_HOST', 'localhost');
define('DB_NAME', 'Users');
define('DB_USER', 'root');
define('DB_PASSWORD', '');

$con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error());
$db = mysql_select_db('Users', $con) or die("Failed to connect to MySQL: " . mysql_error());

function NewUser()
{
    $firstname = $_POST['firstname'];
    $efternamn = $_POST['efternamn'];
    $email     = $_POST['email'];
    $password  = $_POST['password'];
    $query     = "INSERT INTO WebsiteUsers (firstname,efternamn,email,password) VALUES ('$firstname','$efternamn','$email','$password')";
    $data = mysql_query($query) or die(mysql_error());
    if ($data) {
        echo "YOUR REGISTRATIOfafa";
    }
}

function SignUp()
{
    if (!empty($_POST['email'])) {
        $query = mysql_query("SELECT * FROM Websiteusers WHERE email = '$_POST[email]' ") or die(mysql_error());
        if (!$row = mysql_fetch_array($query) or die(mysql_error())) {
            NewUser();
        } else {
            echo "SORRY...YOU ARE ALREADY REGISTERED USER...";
        }
    }
}

if (isset($_POST['submit'])) {
    SignUp();
}



 <!DOCTYPE HTML> 
 <html> 
 <head> 
<title>Registrera Dig</title> 
<link rel="stylesheet" type="text/css" href="style.css">
</head> 
<body> 
<table style=" position:absolute; left:550; top:200;">
<form method="POST" action="signup.php"> 
 <tr> <p style=" position:absolute; left:555; top:163;" >Namn</p><td> <input type="text" name="firstname"></td> 
 </tr> 
  <tr> <td>Efternamn</td><td> <input type="text" name="efternamn"></td> </tr> 
  <tr> <td>Email</td><td> <input type="text" name="email"></td></tr> 
  <tr> <td>Lösenord</td><td> <input type="password" name="password"></td> </tr> 
  <tr> <td>Bekräfta lösenord </td>
  <td><input type="password" name="cpass"></td> </tr>
   <tr> <td><input id="button" type="submit" name="submit" value="Skapa konto"></td> </tr> 
    </form> 
 </table>


   </body>
  </html>

What am I doing wrong here?

Update So everytime I empty my table I am able to register again. but I can only register 1 time

  • 写回答

2条回答 默认 最新

  • douan7529 2016-03-13 22:56
    关注

    Your code has so many problems, I just re-created it for you using best practices. Where you went wrong was the following:

    1.Using MySQL (A depreciated class)

    2.Vulnerable to SQL injection

    3.You don't need functions, it's just as clean if you don't have them. You're only calling the code once.

    4.Inserting $_POST[email] is not a good idea and probably won't work.

    5.Fixed multiple other problems such as tags

    <?php
    define('DB_HOST', 'localhost');
    define('DB_NAME', 'Users');
    define('DB_USER', 'root');
    define('DB_PASSWORD', '');
    
    $con = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); //Use MySQLi as MySQL is depreciated.
    
    if (isset($_POST['submit'])) {
        //No need for functions, do it all here as otherwise you'll have to declare globals.
        if (!empty($_POST['email'])) {
            $query = mysqli_prepare($con, "SELECT * FROM Websiteusers WHERE email = ?"); //Preparing the SQL query (We don't insert values directly into the query)
            mysqli_stmt_bind_param($query, "s", $_POST['email']); //Bind the email to the SQL query
            mysqli_stmt_execute($query); //Execute the query
            mysqli_stmt_store_result($query); //Store the results
            if(mysqli_stmt_num_rows($query) != 0) //Is the number of rows 0?
            {
                //rows
                echo "SORRY...YOU ARE ALREADY REGISTERED USER...";
            }
            else
            {
                //No Rows
                $query = mysqli_prepare($con, "INSERT INTO WebsiteUsers (firstname,efternamn,email,password) VALUES (?, ?, ?, ?)"); //Preparing the SQL query (We don't insert values directly into the query)
                mysqli_stmt_bind_param($query, "ssss", $_POST['firstname'], $_POST['efternamn'], $_POST['email'], $_POST['password']); //Bind the params to the SQL query
                mysqli_stmt_execute($query); //Execute the query
                echo "YOUR REGISTRATIOfafa";
            }
        }
    }
    ?>
    <!DOCTYPE HTML> 
    <html> 
    <head> 
    <title>Registrera Dig</title> 
    <link rel="stylesheet" type="text/css" href="style.css">
    </head> 
    <body> 
        <table style=" position:absolute; left:550; top:200;">
            <form method="POST" action="signup.php"> 
                <tr> <p style=" position:absolute; left:555; top:163;" >Namn</p><td> <input type="text" name="firstname"></td> </tr> 
                <tr> <td>Efternamn</td><td> <input type="text" name="efternamn"></td> </tr> 
                <tr> <td>Email</td><td> <input type="text" name="email"></td></tr> 
                <tr> <td>Lösenord</td><td> <input type="password" name="password"></td> </tr> 
                <tr> <td>Bekräfta lösenord </td>
                <td><input type="password" name="cpass"></td> </tr>
               <tr> <td><input id="button" type="submit" name="submit" value="Skapa konto"></td> </tr> 
            </form> 
        </table>
    </body>
    </html>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装