X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Как запросить из бд проверку emaila
tigertrash
tigertrash
Topic Starter сообщение 18.4.2012, 23:12; Ответить: tigertrash
Сообщение #1


Как запросить из бд проверку emaila и свободности логина, и если ничего не введено не заносилось в базу, помогите разобраться пожалуйста


<? include('blocks/bd.php');

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Регистрация</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/JavaScript">
$(document).ready(function() {

$('.btn-submit').click(function(e){

// Declare the function variables:
// Parent form, form URL, email regex and the error HTML
var $formId = $(this).parents('form');
var formAction = $formId.attr('action');
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
var $error = $('<span class="error"></span>');

// Prepare the form for validation - remove previous errors
$('li',$formId).removeClass('error');
$('span.error').remove();

// Validate all inputs with the class "required"
$('.required',$formId).each(function(){
var inputVal = $(this).val();
var $parentTag = $(this).parent();
if(inputVal == ''){
$parentTag.addClass('error').append($error.clone().text('Введено неправильно'));
}

// Run the email validation using the regex for those input items also having class "email"
if($(this).hasClass('email') == true){
if(!emailReg.test(inputVal)){
$parentTag.addClass('error').append($error.clone().text('Email введен не правильно'));
}
}

// Check passwords match for inputs with class "password"
if($(this).hasClass('password') == true){
var password1 = $('#password-1').val();
var password2 = $('#password-2').val();
if(password1 != password2){
$parentTag.addClass('error').append($error.clone().text('Пароли не совпадают'));
}
}
});

// All validation complete - Check if any errors exist
// If has errors
if ($('span.error').length > 0) {

$('span.error').each(function(){

// Set the distance for the error animation
var distance = 5;

// Get the error dimensions
var width = $(this).outerWidth();

// Calculate starting position
var start = width + distance;

// Set the initial CSS
$(this).show().css({
display: 'block',
opacity: 0,
right: -start+'px'
})
// Animate the error message
.animate({
right: -width+'px',
opacity: 1
}, 'slow');

});
} else {
$formId.submit();
}
// Prevent form submission
e.preventDefault();
});

// Fade out error message when input field gains focus
$('.required').focus(function(){
var $parent = $(this).parent();
$parent.removeClass('error');
$('span.error',$parent).fadeOut();
});
});
</script>
</head>
<body>
<div id="wrapper">
<? include("blocks/header.php"); ?>
<? include("blocks/left.php"); ?>
<div id="center">
<form id="form-sign-up" class="styled" action="save_user.php" method="post">
<fieldset>
<div class="form-row"><label>Логин:</label>
<input name="login" type="text" class="text-input required" />
</div>
<div class="form-row"><label>Email:</label>
<input name="email" type="email" id="register-email" class="text-input required email" />
</div>
<div class="form-row"><label>Пароль:</label>
<input name="password" type="password" id="password-1" class="text-input required password" />
</div>
<div class="form-row"><label>Повторите пароль:</label>
<input name="password" type="password" id="password-2" class="text-input required password" />
</div>
<div class="button-row">
<input type="image" src="images/btn_sign_up_off.png" alt="Готово" value="OK" class="btn-submit img-swap" />
</div>
</fieldset>
</form>
</div><!--center END-->
<? include("blocks/right.php"); ?>
<? include("blocks/footer.php"); ?>
</div><!--wrapper END-->

</body>
</html>





save_user.php


<?php
if
(isset($_POST['login'])) { $login = $_POST['login'];}
if (isset($_POST['password'])) { $password=$_POST['password'];}
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
$login = trim($login);
$password = trim($password);
include ("blocks/bd.php");
$result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {
exit ("<html><head><meta http-equiv='Refresh' content='0; URL=reg.php'></head></html>");
}
$result2 = mysql_query ("INSERT INTO users (login,password) VALUES('$login','$password')");
// Проверяем, есть ли ошибки
if ($result2=='TRUE')
{
echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";
}
else {
echo "Ошибка! Вы не зарегистрированы.";
}
?>
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 18.4.2012, 23:54; Ответить: Arks
Сообщение #2


Да никак лучше не запрашивать - повесить на email и на логин уникальный индекс и если при вставке ошибка на уникальность значит занято. Это будет быстрее чем каждый раз сначала проверять отдельным запросом можно ли делать вставку.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
tigertrash
tigertrash
Topic Starter сообщение 19.4.2012, 8:20; Ответить: tigertrash
Сообщение #3


хм... логично. А как вешать "индекс" можешь подсказать?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
tigertrash
tigertrash
Topic Starter сообщение 20.4.2012, 22:56; Ответить: tigertrash
Сообщение #4


форум мертвый...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 20.4.2012, 22:59; Ответить: Arks
Сообщение #5


так ведь пятниццо!

http://dev.mysql.com/doc/refman/5.1/de/create-index.html

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON tbl_name (index_col_name,...) [WITH PARSER parser_name] index_col_name: col_name [(length)] [ASC | DESC]


читать это так - SQL пишем: CREATE + выбираем из необязательных параметров UNIQUE + пишем INDEX + пишем любое название(желательное уникальное для всей БД) + пишем USING BTREE(например) + пишем ON + пишем название таблицы(например `users`) + пишем ( + пишем через запятую email, login + пишем )

Либо если нужен уникальный email и уникальный login а не связка email+login Повторяем операцию отдельно для полей login и email
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Bugnet
Bugnet
сообщение 20.4.2012, 23:25; Ответить: Bugnet
Сообщение #6


Проверку можно делать после события .change (jQuery) поля логина и выводить информацию рядом с полем в span c id="infologin". То есть ввели логин и начинаем вводить пароль в это время идёт запрос к БД для проверки занятости логина. Работает $.ajax и PHP- скрипт с именем phpscriptchecklogin2.php(например)
Код где-то такой:
[JS]$('#login').change(function(){
var loginReg = $(this).val();
$.ajax({
type: "POST",
data: "login=" + loginReg,
url : 'phpscriptchecklogin2.php',
dataType: "json",
success: function(data)
{
var result2 = data.key;
if (result2!='true'){ // если логин занят
$('#login').val(''); //очищаем поле логина

$('#infologin').html('Это имя занято');
setTimeout("$('#infologin').html('');", 3000);//убираем информацию о занятости
}

}
}); //END $.ajax
});// END change[/JS]

phpscriptchecklogin2.php (подключение к БД и таблица Ваши)
[PHP]<?php
if (isset($_POST['login'])) {
$login = $_POST['login'];
$db = mysql_connect ("localhost","root","");
mysql_select_db ("mysql",$db);
$q = mysql_query("SELECT id FROM users WHERE login='$login'");
$res = mysql_fetch_assoc($q);
$id1=$res['id'];
if ($id1==''){$id1='true';$res['key']=$id1;}
else{$id1='false';$res['key']=$id1;}
}
echo json_encode($res);[/PHP]

Ну как-то так.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 21.4.2012, 0:18; Ответить: Arks
Сообщение #7


Bugnet, в любом случае подвешивание ajax-ов на keyup признак дурного тона, все постепенно от него отказываются в пользу проверки beforeSubmit. Да и потом, как я уже писал вставка с потенциальной ошибкой уникальности будет в сумме гораздо быстрее чем предварительная проверка на уникальность.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
tigertrash
tigertrash
Topic Starter сообщение 22.4.2012, 0:10; Ответить: tigertrash
Сообщение #8


Arks,спасибо bugnet переходить на пароль потом возвращатся если занят тыркать пользователя мне кажется глупо...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
James Raynor
James Raynor
сообщение 24.4.2012, 6:26; Ответить: James Raynor
Сообщение #9


(tigertrash @ 21.4.2012, 01:56) *
форум мертвый...

Сам ты мертвый. Форум камерный.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Большие ставки для кликов в Я.Директ. Как удешевить?
2 rownong27 1119 26.3.2024, 14:13
автор: knezevolk
Открытая тема (нет новых ответов) Как вы бросили работу и перешли на заработок с сайтов?
12 uahomka 2289 25.3.2024, 6:52
автор: Skyworker
Открытая тема (нет новых ответов) Как отозвать банковский платеж фрилансеру?
28 metvekot 3912 25.3.2024, 6:34
автор: Skyworker
Открытая тема (нет новых ответов) Как вывести деньги в Украине с заблокированного Юмани ?
23 freeax 3638 24.3.2024, 20:55
автор: Liudmila
Открытая тема (нет новых ответов) Через какой браузер и как можно найти в кэшэ браузера видео
10 Room 1929 23.3.2024, 7:41
автор: Room


 



RSS Текстовая версия Сейчас: 28.3.2024, 22:31
Дизайн