Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проверка имени пользователя без перезагрузки страницы

364
06 декабря 2007 года
Xupypr
148 / / 20.04.2000
На большенстве сайтов при регистрации пользователя есть такая вещь, как проверка имени пользователя без перезагрузки всей страницы, как это сделать??
т.е. человек заполняет форму, а возле поля "имя пользователя" кнопка "Проверить", при ее нажатии ничего не меняеться, только под этим полем появляеться надпись "имя свободно" или "имя занято, выберите другое".

з.ы. все данные по пользователям храняться в mysql.
4
06 декабря 2007 года
mike
3.7K / / 01.10.2002
Ajax, iframe
5.5K
06 декабря 2007 года
Boom.Olezka
69 / / 12.09.2006
http://www.dklab.ru/lib/JsHttpRequest/ почитайте, это точно поможет вам.
14K
10 декабря 2007 года
makis
29 / / 16.01.2007
Сам когда-то думал над этим. Расскажу на примере библиотеки jQuery.
1. Нужно прописать в <head> страницы ссылку на jQuery:
[HTML]
<head>
.....
<script type="text/javascript" src="/assets/templates/magazine/jquery.js"></script>
.....
</head>
[/HTML]
Далее в форме под полем для ввода логина нужно создать пустой div с неким id. Пусть будет для примера так:
[HTML]
<form id="regform" name="regform" method="post" action="">
<label>Логин:<input type="text" name="login" id="login" /></label><span class="checkit" style="cursor:pointer;" onclick="checkLogin();">Проверить</span>
<div id="logincheck"></div>
<label>Пароль:<input type="text" name="password" id="password" /></label>
</form>
[/HTML]
Возле поля логина ставим псевдоссылку для проверки на занятость (тэг <span>, по нажатию на текст которого будет запускаться JavaScript ф-ия.
2. В шапку того же html (или другого) файла прописываем JavaScript ф-ию:
 
Код:
function checkLogin( {
var login = document.getElementById('login').value;
$("#logincheck").html('<img src="loader.gif" />');
$("#logincheck").load("logincheck.php", { login: login });
}

Здесь чуть подробнее остановлюсь. Сперва значение введённое в поле с id='login' передаётся функиции. Затем в пустой див отправляется картинка loader.gif (обычно анимированный gif) на время пока будет получен результат от PHP-скрипта. Далее через XMLHttpRequest запрос JavaScript передаёт значение переменной login.

3. Создаём PHP файл с подобным содержанием:
Код:
<?
// кодировка страницы (очень частая проблема)
header('Content-Type: text/html; charset=utf-8');

// защита от дурака
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')
    {
  // юзер проверяет через AJAX-запрос
  // получаем введённый логин
  $login = $_REQUEST[login];
 
  // ищем ео в БД
  $result = "SELECT COUNT(login) FROM user_table WHERE login = '$login'";
  $sql = mysql_query($result, $db);
  $result_array = mysql_fetch_array($sql);
  $cnt = $result_array["0"];
 
  // проверяем наличие в БД
  if ($cnt == 0)
    {
    echo "Свободен";
    }
  else
    {
    echo "Занят";
    }
  }
else
    {
    // обращение к файлу произошло не через AJAX-запрос
    echo "Куда прёшься???";
    }
?>

Резкультат выполнения PHP-скрипта магическим образом переместится в div с id=logincheck. Также следует позаботиться о том, чтоб PHP-скрипту была возможность коннектиться к БД. Т.е. нужно в нём прописать что-то наподобие:
 
Код:
$db = mysql_connect("$database_host", "$database_user", "$database_password");
mysql_select_db("$database_name", $db);

Вот вроде и всё...
251
10 декабря 2007 года
SkyMаn
1.7K / / 31.07.2007
А на сколько велика вероятность того, что
 
Код:
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')
[COLOR=#000000][COLOR=#007700][/COLOR][COLOR=#007700]
[/COLOR][/COLOR]будет пахать на всех браузерах?[COLOR=#000000][COLOR=#007700]
[/COLOR][/COLOR]
14K
10 декабря 2007 года
makis
29 / / 16.01.2007
SkyM@n
Вот вырезка из переводного материала о jQuery:
Цитата:

В различных библиотеках, особенно использующих шаблон MVC, часто необходимо знать, как была вызвана страница – открыли ее в браузере или запросили через AJAX? При запросе с помощью технологии AJAX устанавливается HTTP-заголовок HTTP_X_REQUESTED_WITH со значением “XmlHTTPRequest”. Таким образом, в РНР, например, можно узнать, вызвана ли страница с помощью AJAX так:
 
Код:
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')
{
  // выполняем соответствующий код
}


Пробовал в опере 9, ие 6 и 7 версии, огнелисе 2 версии и сафари. Везде работает :)

33K
12 декабря 2007 года
Snowcore
12 / / 12.12.2007
Где можно скачать этот jQuery ?
251
12 декабря 2007 года
SkyMаn
1.7K / / 31.07.2007
Цитата: Snowcore
Где можно скачать этот jQuery ?


В интернете.
Папка downloads тут

33K
14 декабря 2007 года
Snowcore
12 / / 12.12.2007
Спасибо, скачал.
Сижу, разбираюсь.
364
21 декабря 2007 года
Xupypr
148 / / 20.04.2000
Спасибо =)...
Все замечательно работает, НО .. начал таким образом делать новости с прокруткой, возникла проблемка.. Новости открываються в корявой кодировке, оно и понятно..
делаю
header('Content-Type: text/html; charset=utf-8');
Никаких изменений =((

Как с этим можно бороться?

попробывал utf8_encode и utf8_decode ... Похоже на правду, но все равно иероглифы.

Понял =) ... все нормально после utf8_encode, но показывает в ISO-8859-1 осталось перевести в Windows-1251
256
21 декабря 2007 года
foxweb
1.0K / / 27.07.2005
iconv. На реальных серверах обычно нормально всё настроено, такое не глючит.
364
21 декабря 2007 года
Xupypr
148 / / 20.04.2000
iconv не хочет работать ...
Call to undefined function: iconv()

=((

При этом PHP Version 4.4.4
256
21 декабря 2007 года
foxweb
1.0K / / 27.07.2005
Подключить php_iconv.dll в pnp.ini
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог