如何使用户使用唯一代码进行注册

时间:2018-11-28 10:14:58

标签: php html sql phpmyadmin

我正在建立一个网站,我想限制可以在该网站上注册的用户数。

hp

从照片中可以看到,我在phpMyAdmin中有一个名为website的数据库,其中有两个表。一种用于我创建的代码,另一种用于存储注册用户。 我会有一个普通的注册html表单,其中包含“ CODE”字段。如果代码不存在或与表中的代码不匹配,我想阻止用户注册。他们注册后,我希望从表中删除代码,但是我不知道该怎么做。这是我的代码 HTML

<form class="login-form" method="POST" action="#">
        <input type="text" name="username" required="required">
        <input type="password" name ="password" required="required">
        <input type="text" name="code" required="required">
        <input type="submit" value="Register">
</form>

PHP

<?php
$host = "192.168.11.32:3306";
$user = "cyka";
$password = "blyat";
$db = "website";
$conn = mysqli_connect($host, $user, $password, $db);

if(isset($_POST['code'])){
    $userCode = $_POST['code'];
    $userUsername = $_POST['username'];
    $userPassword = $_POST['password'];
    $sql = "SELECT * FROM codes WHERE codice = '$userCode'";
    $result = mysqli_query($conn, $sql);

    if(mysqli_num_rows($result)==1){
        $sql = "INSERT INTO users (username, password) VALUES ('$username', '$password')";
        if ($conn->query($sql) === TRUE) {
            echo "Thank you for registering!";
        } else {
            echo "Errore: " . $sql . "<br>" . $conn->error;
            }
        header('location: main.php');
    } else {
        echo ("The code is not valid!");
        header('location: error.php');
    }
} 
?>

1 个答案:

答案 0 :(得分:-1)

在您的表单上点击“注册”后,通过ajax请求提交表单。

对后端文件的ajax请求示例:

$('#register-form').submit( function(e){
        e.preventDefault();
        $.ajax({
            url : '/includes/register.php',
            type : "POST",
            data : $('#register-form').serialize(),
            success : function(data) {
                if (data == 'true') {
                    //code if successful
                } else {
                    // code if not successful
                    }
                }
            }
        });

    });

表单中的所有值都将发布到后端文件中。

您可以像这样访问他们输入的“代码”值:

$ theirCode = $ _POST ['code'];

获取数据库中所有代码的数组-您可以编写一个简单的全选函数:

function getCodes() {
    global $db;
        try {
        $stmt = $db->prepare("SELECT * FROM codes");
        $stmt->execute();
        return $stmt->fetchall();
    } catch (Exception $e) {
        echo $e->getMessage();
    }
}

$myCodes = getcodes();

您现在要做的只是遍历代码数组,并检查它们的代码是否与数组中的代码匹配。

$match = false;
foreach($myCodes as $code){
    if($theirCode == $code){
        $match = true;
        break;
    } 
}

if($match == true){
    echo 'true';
} else {
    echo 'false';
}

您的ajax请求将监听true / false。根据需要处理结果。

我认为我的解释是有道理的,对我们有帮助。谢谢