[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка занят ли логин
Dimaz
Всем привет! Пишу скрипт на javascript асинхронной проверки занят ли логин. Нажимаешь кнопочку "Проверить" и без перезагрузки страницы проверяется занят ли логин и выводится соответствующее сообщение. Только не могу понять как правильнее сделать, создать отдельный скрипт проверки или проверять прямо в самом скрипте регистрации. Только вот как сделать, чтобы скрипт работал именно с того места где выполняется запрос к базе данных, а не с самого начала? huh.gif



Спустя 6 минут, 43 секунды (18.02.2010 - 21:25) vagrand написал(а):
IF поставь

Спустя 6 минут, 15 секунд (18.02.2010 - 21:31) Dimaz написал(а):
Не понял при чем тут if? unsure.gif

Спустя 8 минут, 45 секунд (18.02.2010 - 21:40) Dimaz написал(а):
Выкладываю скрипты:
Скрипт JS:
Свернутый текст
<html>
<head>
<title>
Эксперименты с JavaScript</title>
<script
type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script
type="text/javascript">
$(document).ready(function() {
$(":submit").click(function() {
var login = $("#login").val();
$.ajax({
type: "POST",
data: 'user='+login,
url: "async.php",
success:function(html) {
$("b").text(html);
}
}
);
return false;
});
});
</script>
</head>
<body>
<form
name="username">
Введите ваше имя:</br>
<input
type="text" name="login" id="login">
<input
type="submit" value="Проверить"></br>
<b
style="color:red"></b>
</form>
</body>
</html>

А вот скрипт php-регистрация:
Свернутый текст
<?php
//подключение файла конфигурации
include'./config.inc.php';
if($_POST)
{
//проверка данных
$login = trim($_POST['login']);
$pass = trim($_POST['pass']);
$pass_r = trim($_POST['pass_r']);
$email = trim($_POST['email']);
$error = false;
$errortext = "<p>При регистрации на сайте возникли следующие ошибки:</p><ul>";
define('SALT','tralala');
if (empty($login))
{
$error = true;
$errortext .= "<li>Не заполнено поле логин</li>";
}
else {
if(!preg_match('/^[a-z][a-z0-9]+$/i', $login)) {
$error = true;
$errortext .= "<li>Введены недопустимые символы в поле логин</li>";
}
}

if(empty($pass))
{
$error = true;
$errortext .= "<li>Не заполнено поле пароль</li>";
}
else {
if(!preg_match('/[a-z0-9!@$%^&*]/i', $pass)) {
$error = true;
$errortext .= "<li>Введены недопустимые символы в поле пароль</li>";
}
}

if(empty($pass_r))
{
$error = true;
$errortext .= "<li>Не заполнено поле подтверждения пароля</li>";
} else {
if($pass != $pass_r)
{
$error = true;
$errortext .= "<li>Поле пароль и его подтверждение не совпадают</li>";
}
}

if (empty($email))
{
$error = true;
$errortext .= "<li>Не заполнено поле e-mail</li>";
}
else {
if(!preg_match('/^[-0-9a-z_\.]+@[-0-9a-z^\.]+\.[a-z]{2,4}$/i',$email))
{
$error = true;
$errortext .= "<li>Не правильно заполнено поле E-Mail. E-mail должен иметь вид user@somehost.com</li>";
}
}

$errortext .= '</ul>';
if($error)
{
echo($errortext);//Выводим текст ошибок
} else {
//соединение с сервером базы данных
if(!$link = mysql_connect($db_server_name, $user_name, $user_password))
{
echo "Не могу соединиться с сервером базы данных";
exit();
}
//выбираем базу данных
if(!mysql_select_db($db_name, $link))
{
echo "Не могу выбрать базу данных";
exit();
}
//строка запроса
$res = "SELECT COUNT(*)
FROM `users`
WHERE `user_name` = '"
.mysql_real_escape_string($login) ."'
"
;
$sql=mysql_query($res);
if(mysql_result($sql,0)>0)
{
echo "Пользователь с таким логином уже существует!";
exit();
}

$str_sql_string = "INSERT INTO `users`
SET `user_name` = '"
.mysql_real_escape_string($login) ."',
`password` = '"
. md5($pass . SALT) ."'
"
;
if(!mysql_query($str_sql_string, $link))
{
echo "Не могу выполнить запрос";
exit();
}
echo "Вы успешно зарегестрированы на сайте!";
//закрытие соединения с сервером базы данных
mysql_close($link);
}
}

?>

Спустя 6 минут, 35 секунд (18.02.2010 - 21:47) John_761 написал(а):
Создай отдельную страничку проверки логина, там будет буквально пара строк кода, и никакой головной боли.
Можно и заморочиться, отправив на сервер кроме логина какой-нибудь флаг, если хочешь выполнить отдельный кусок кода, и обрабатывать как-то так:
 $flag = !empty($_POST['flag']) ? $_POST['flag'] : NULL;

if (isset($flag)) :

include '...';
....
....

echo 'fail';

endif;

Спустя 27 минут, 42 секунды (18.02.2010 - 22:14) Dimaz написал(а):
Я наверно лучше отдельный файл создам, че мозги ломать smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.