[英]Check if username is taken
我需要檢查用戶名是否被使用,如果不允許,則不允許用戶進行注冊,它將重定向到注冊頁面,我應該在其中添加腳本來檢查用戶名是否被使用? 或在哪里可以獲取腳本,這是我的腳本。
<?php
// Check if he wants to register:
if (!empty($_POST[username]))
{
// Check if passwords match.
if ($_POST[password] != $_POST[password2])
exit("Error - Passwords don't match. Please go back and try again.");
// Assign some variables.
$date = time (" d - m - Y ");
$ip = $_SERVER[REMOTE_ADDR];
require_once("connect.php");
// Register him.
$query = mysql_query("INSERT INTO members
(username, fname, email, password, date, ip)
VALUES ('$_POST[username]','$_POST[fname]','$_POST[email]','$_POST[password]','$date','$ip')")
or die ("Error - Couldn't register user.");
echo "Welcome $_POST[username]! You've been successfully reigstered!<br />
You Will Be Redirected To Our Home Page Where U Can Login ";
exit();
}
?>
您需要先檢查您的用戶名是否存在:
SELECT count(1) FROM members WHERE username = '$_POST[username]'
然后,如果結果> 0,則拋出“ User already exists
錯誤。
我更新了您的代碼,可能要檢查是否使用了用戶名。 就像其他人所說的那樣,請閱讀有關SQL注入攻擊的內容並保護自己。
<?php
// Check if he wants to register:
if (!empty($_POST[username])) {
// Check if passwords match.
if ($_POST[password] != $_POST[password2])
exit("Error - Passwords don't match. Please go back and try again.");
// Assign some variables.
$date = time(" d - m - Y ");
$ip = $_SERVER[REMOTE_ADDR];
require_once("connect.php");
// CHEK IF USERNAME IS VALID
if (someFunctionThatChecksIfUsernameIsTaken($_POST['username'])) {
// Register him.
$query = mysql_query("INSERT INTO members
(username, fname, email, password, date, ip)
VALUES ('$_POST[username]','$_POST[fname]','$_POST[email]','$_POST[password]','$date','$ip')")
or die("Error - Couldn't register user.");
echo "Welcome $_POST[username]! You've been successfully reigstered!<br />
You Will Be Redirected To Our Home Page Where U Can Login ";
exit();
} else {
// redirect him back to the page and tell the user that the username is taken
}
}
?>
我對您的代碼進行了一些更改,以使其工作並清理它。
<?php
// Check if he wants to register
// - Make sure that param exists
// - Check length
if (isset($_POST['username']) && strlen($_POST['username']) > 0) {
// Check if passwords match.
// - Make sure that params exist
// - Check length
// - Check matching
if (!isset($_POST['password']) ||
!isset($_POST['password2']) ||
strlen($_POST['password']) === 0 ||
$_POST['password'] !== $_POST['password2']) {
die("Error - Passwords don't match. Please go back and try again.");
}
require_once("connect.php");
// Set array of params
$fields = array(
'username' => $_POST['username'],
'fname' => isset($_POST['fname']) ? $_POST['fname'] : '',
'email' => isset($_POST['email']) ? $_POST['email'] : '',
'password' => $_POST['password'],
'date' => date("d-m-Y"),
'ip' => $_SERVER[REMOTE_ADDR]
);
// Escape fields agains sql injection
$fields = array_map('mysql_real_escape_string', $fields);
// Check if member exists
$exists = mysql_num_rows(mysql_query("SELECT * FROM members WHERE username='" . $fields['username'] . "'"));
if ($exists === 0) {
// Insert member in DB
if (mysql_query("INSERT INTO `members` (`" . implode('`,`', array_keys($fields)) . "`) VALUES ('" . implode("','", array_values($fields)) . "')") !== false) {
echo "Welcome" . $_POST['username'] . "! You've been successfully reigstered!<br />
You Will Be Redirected To Our Home Page Where U Can Login ";
exit();
} else {
die("Error - Couldn't register user.");
}
} else {
die("Error - Member exists!");
}
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.