1

所以,我一直在学习 PHP 等,但问题是,我可以用相同的名称和 IP 注册很多次。

这是我的 register.php 的代码

<html>
<head>
<title>
Gebruikerspaneel
</title>
</head>
<body>
<?php
include 'connect.php';
?>
<?php
include 'functions.php';
?>
<?php
include 'titelbar.php';
?>

<h3>Registreer hier</h3>

<form method='post'>
<?php
if(isset($_POST['submit'])){
    $gebruikersnaam = $_POST['gebruikersnaam'];
    $wachtwoord = md5($_POST['wachtwoord']);
    if(empty($gebruikersnaam) or empty($wachtwoord)){
        echo "<p>Gelieve alles in te vullen!</p>";
    } else {
        mysql_query("INSERT INTO gebruikers VALUES('', '$gebruikersnaam', '$wachtwoord', '2', 'a')");
        echo "<p>U bent succesvol geregistreerd!</p>";
    }
}
?>
Gebruikersnaam:<br />
<input type='text' name='gebruikersnaam' />
<br /><br />
Wachtwoord:<br />
<input type='password' name='wachtwoord' />
<br /><br />
<input type='submit' name='submit' value='Registreren' />
</form>
</body>
</html>

我该如何做到这一点,以便您收到错误并且您的信息不会发送到数据库?

我是荷兰人,所以有些东西是荷兰语。

4

2 回答 2

1

逻辑要求您需要在插入用户之前检查用户是否存在。你可以这样做:

  1. 在用户名上放置唯一键,并捕获重复输入错误代码

  2. 如果用户已经存在,则在插入之前查询数据库。

我不会触及您遇到的许多其他问题,一次只专注于一点。

如果投反对票,至少解释原因

于 2013-10-15T17:27:07.553 回答
-1

你可以做两件事:

  1. 检查用户名是否已经存在,如下所示:

    SELECT COUNT(*) FROM users WHERE username = $username;

    如果结果大于 0,则显示错误消息。

  2. 使用 MySQL Workbench 或命令行在用户名列上添加唯一键约束,无论您使用的是哪个。如果代码出于某种原因应该防止重复,这可以作为防止数据库中重复的保护措施。

大旁注:

研究 SQL 查询的参数化,因为现在发生了一个巨大的安全漏洞,称为SQL 注入

于 2013-10-15T17:26:59.857 回答