Я хочу проверить, выполнено ли имя пользователя до отправки формы.Проверка наличия имени пользователя перед отправкой формы
Насколько я понимаю, я должен использовать AJAX для получения данных из моей базы данных в javascript. Как отправить имя пользователя в файл PHP?
Это моя форма:
<form id="loginForm" action="register.php" method="post">
<p>Register:</p>
<p style="text-align: left;">Full name: <br><input type="text" name="name" required/></p>
<p style="text-align: left;">Email: <br><input type="text" name="email" required/></p>
//Username
<p style="text-align: left;">Username: <br><input id="username" type="text" name="username" onkeyup="validateUsername(value);" required/></p>
<span id="usernameError" style="display:none;border:1px solid red;">Username can only contain a-z, 0-9 and must be at least 6 characters loong</span>
<span id="usernameTaken" style="display:none;border:1px solid red;">Username taken</span>
<p style="text-align: left;">Password: <br><input type="password" name="password" required/></p>
<input type="submit" value="Register">
</form>
Это validateUsername()
функция:
function validateUsername(username) {
var re = /[a-zA-Z0-9]/;
alert(username.length);
if(re.test(username) && username.length > 5) {
document.getElementById('username').style.backgroundColor = "green";
document.getElementById('usernameError').style.display= "none";
--error;
} else {
document.getElementById('username').style.backgroundColor = "red";
document.getElementById('usernameError').style.display= "block";
++error;
}
//here i want to check if the user name is taken
}
Если пользователь имя взято, я хочу отобразить диапазон «usernameTaken». В противном случае я хочу скрыть это.
Вот PHP-файл, который проверяет, является ли имя пользователя уже находится в базе данных:
<?php
session_start();
define('DB_NAME', 'madsanker_dk_db');
define('DB_USER', 'madsanker_dk');
define('DB_PASSWORD', 'MyPassword');
define('DB_HOST', 'mysql43.unoeuro.com');
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD);
if (!$link) {
die('Could not connect: ' .mysqli_error());
}
$db_selected = mysqli_select_db($link, DB_NAME);
if (!$db_selected) {
die('Could not connect: ' .mysqli_connect_error());
}
$username = //The username;
$username = mysqli_real_escape_string($link,$username);
$sql = "SELECT * FROM mainLogin WHERE username = '$username'";
$result = mysqli_query($link, $sql);
$count = mysqli_num_rows($result);
if($count == 0) {
//if the username is NOT taken
return true;
} else {
//if the username IS taken
return false;
}
mysqli_close($link);
?>
Как это делается?
U можно использовать Ajax отправить имя пользователя Php, используя идентификатор элемента или JQuery – devpro
где это ваша проблема в этом коде? Вы протестировали это имя пользователя в правиле ajax. –
PHP должен вернуть какой-то документ, это не функция возврата. Самый простой пример - просто напечатать '' true ''или' 'false''. ** ** ** -ый вызов ** ** -синхронный, поэтому отключите кнопку отправки в функции проверки и затем снова включите ее, когда обратный вызов из ajax говорит, что все хорошо, например. 'if (this.response ===" true ");' (или после некоторого разумного тайм-аута, например, 2 секунды) –