<?php
include ("block/bd.php");
$login = mysql_query ('SELECT login FROM user',$db);
$existing_users = mysql_fetch_array($login);
$user_login = $_POST['user_login'];
if ($user_login == $existing_users)
{
//юзер недоступен
echo "no";
}
else
{
//доступен
echo "yes";
}
?>
Трабла такая , введённый логин в текстовом поле не сравнивается с базой и всегда выдаёт что он доступен хотя логин ввожу который существует , неподскажите что над изменить ?
Спустя 5 минут, 32 секунды (17.01.2010 - 14:39) ApuktaChehov написал(а):
А ты посмотри что возвращает $existing_users
И если $user_login содержит то, что ввел пользователь, то почему она не фигурирует в запросе?
И если $user_login содержит то, что ввел пользователь, то почему она не фигурирует в запросе?
Спустя 1 минута, 49 секунд (17.01.2010 - 14:41) Гость666 написал(а):
Domin
Оптимальный способ не смогу подсказать, но проблема в регистрах. Например сравнить - Логин и логин! При поиске они не являются равными, так как регистры у них разные. Для начало попробуй вытащить все логины и проверить их без учета регистра со своим логином
Оптимальный способ не смогу подсказать, но проблема в регистрах. Например сравнить - Логин и логин! При поиске они не являются равными, так как регистры у них разные. Для начало попробуй вытащить все логины и проверить их без учета регистра со своим логином
Спустя 7 минут, 16 секунд (17.01.2010 - 14:48) Domin написал(а):
Было изначально
мне нужно проверить не из $existing_users=array('roshan','mike','jason'); а из базы , пробывал 2 часа мудрил так и ничего не сделал .
<?php
//это переменная содержит имена существующих пользователей
$existing_users=array('roshan','mike','jason');
$user_name=$_POST['user_name'];
//проверка существует ли пользователь в массиве $existing_users
if (in_array($user_name, $existing_users))
{
//юзер недоступен
echo "no";
}
else
{
//доступен
echo "yes";
}
?>
мне нужно проверить не из $existing_users=array('roshan','mike','jason'); а из базы , пробывал 2 часа мудрил так и ничего не сделал .
Спустя 4 минуты, 30 секунд (17.01.2010 - 14:53) ApuktaChehov написал(а):
Смотри как можно делать:
Вот твой запрос:
Если $user_login содержит логин пользователей, то можно сделать так:
Вот твой запрос:
$login = mysql_query ('SELECT login FROM user',$db)
Если $user_login содержит логин пользователей, то можно сделать так:
$login = mysql_query ("SELECT * FROM user WHERE login = '".mysql_real_escape_string($user_login)."'",$db)
Спустя 1 минута, 15 секунд (17.01.2010 - 14:54) sergeiss написал(а):
Domin - где-то я этот код уже видел... Наверное, тут на форуме, приходили люди и спрашивали, что тут "не так"
А "не так" тут всё:
1. Ты выбираешь все строки из таблицы, и для сравнения берешь только первую из них. Где у тебя в запросе ограничения, связанные именно с определенным юзером?
2. mysql_fetch_array возвращает вовсе не то, что ты думаешь. Потому что там есть целый массив, даже если он состоит из одного элемента. И ты пытаешься сравнить некую величину с массивом. Естественно, это сравнение всегда будет ложным, и у тебя будет выбираться блок ELSE.
3. И просьба - при создании темы давать более осмысленное название! Прочитай Правила форума!
PS. Пока писал, на часть проблем указали уже. Но не на все.
А "не так" тут всё:
1. Ты выбираешь все строки из таблицы, и для сравнения берешь только первую из них. Где у тебя в запросе ограничения, связанные именно с определенным юзером?
2. mysql_fetch_array возвращает вовсе не то, что ты думаешь. Потому что там есть целый массив, даже если он состоит из одного элемента. И ты пытаешься сравнить некую величину с массивом. Естественно, это сравнение всегда будет ложным, и у тебя будет выбираться блок ELSE.
3. И просьба - при создании темы давать более осмысленное название! Прочитай Правила форума!
PS. Пока писал, на часть проблем указали уже. Но не на все.
Спустя 3 минуты, 3 секунды (17.01.2010 - 14:57) Domin написал(а):
Цитата |
$login = mysql_query ("SELECT * FROM user WHERE login = '".mysql_real_escape_string($user_login)."'",$db) |
Некатит всеравно выдаёт что логин доступен для реги !
Скажу проще нужно $user_name=$_POST['user_name']; (что было введено в форму ) проверить существует ли такой логин в базе .
Спустя 3 минуты, 44 секунды (17.01.2010 - 15:01) arlamar написал(а):
пока писал ответ, уже тему раскрыли
поэтому кратко)
mysql_real_escape_string($user_login) это хорошо
но делал ли он это когда заливал в базу?
да и вообще по моему тут нужна не помощь а полностью готовый скрипт...
поэтому кратко)
mysql_real_escape_string($user_login) это хорошо
но делал ли он это когда заливал в базу?
да и вообще по моему тут нужна не помощь а полностью готовый скрипт...
Спустя 1 минута (17.01.2010 - 15:02) sergeiss написал(а):
Цитата (Domin @ 17.01.2010 - 15:57) |
Некатит всеравно выдаёт что логин доступен для реги ! |
А ты для этого перенёс определение переменной $user_login выше строки, формирующей запрос к БД?
Спустя 2 минуты, 1 секунда (17.01.2010 - 15:04) Domin написал(а):
Цитата |
А ты для этого перенёс определение переменной $user_login выше строки, формирующей запрос к БД? |
Перенёс , толку нет !
<?php
include ("block/bd.php");
$user_login = $_POST['user_login'];
$login = mysql_query ("SELECT * FROM user WHERE login = '".mysql_real_escape_string($user_login)."'",$db)
//это переменная содержит имена существующих пользователей
$existing_users = mysql_fetch_array($login);
//проверка существует ли пользователь в массиве $existing_users
if ($user_login == $existing_users)
{
//юзер недоступен
echo "no";
}
else
{
//доступен
echo "yes";
}
?>
Спустя 2 минуты, 34 секунды (17.01.2010 - 15:06) sergeiss написал(а):
Перенёс - это хорошо.
Цитата (Domin @ 17.01.2010 - 16:04) |
if ($user_login == $existing_users) |
А вот это оставил, хотя я тебе чуть ранее прямым текстом сказал, что это - неверно!!!!!!!!!!!!!!!!!
Спустя 1 минута, 49 секунд (17.01.2010 - 15:08) arlamar написал(а):
думаю ты не использовал mysql_real_escape_string() при реге
поэтому следующий код должен работать
поэтому следующий код должен работать
include ("block/bd.php");
$user_login = $_POST['user_login'];
$login = mysql_query ("SELECT * FROM user WHERE login = '$user_login'",$db);
if (mysql_num_rows($login)) {
//юзер недоступен
echo "no";
} else {
//доступен
echo "yes";
}
Спустя 38 секунд (17.01.2010 - 15:09) Platinum написал(а):
А если так?
или если не прокатит попробуй в цикле выведи все логины из базы и сравни их, может правда регистр разный
$existing_users = mysql_fetch_array($login);
$user_login = "your_login"; // существующий логин
или если не прокатит попробуй в цикле выведи все логины из базы и сравни их, может правда регистр разный
Спустя 3 минуты, 44 секунды (17.01.2010 - 15:12) Domin написал(а):
Походу некто ничего непонял , это проверка доступности имени пользователя после ввода логина , там скрипт обращяется к этому PHP файлу в нём надо сравнить введённый логин со всеми логинами в базе и выдать сразу результат !
Спустя 3 минуты, 24 секунды (17.01.2010 - 15:16) Domin написал(а):
arlamar большое тебе спасибо , всё заработало . Спасибо всем что помогли !!! Огромное !!!
Спустя 2 минуты, 47 секунд (17.01.2010 - 15:19) sergeiss написал(а):
Цитата (Domin @ 17.01.2010 - 16:12) |
Походу некто ничего непонял |
"Некто" - это кто?
arlamar правильно сказал, что можно просто количество строк посмотреть. Можно даже сразу в запросе получить это количество, а не сами строки.
Но я так и не понял: ты видишь ту ошибку, про которую я говорил, про некоректность сравнения? Если ты ее поймешь сейчас, то не будешь делать в дальнейшем.
Спустя 2 минуты, 15 секунд (17.01.2010 - 15:21) arlamar написал(а):
без проблем)
только вот тебе совет:
в скрипте регистрации сделай что бы перед тем как занести в базу login
он обработался mysql_real_escape_string()
и при проверке надо будет изменить
$user_login = $_POST['user_login'];
на
$user_login = mysql_real_escape_string($_POST['user_login']);
иначе ввод например такого логина: log'in вышибет твой скрипт))
только вот тебе совет:
в скрипте регистрации сделай что бы перед тем как занести в базу login
он обработался mysql_real_escape_string()
и при проверке надо будет изменить
$user_login = $_POST['user_login'];
на
$user_login = mysql_real_escape_string($_POST['user_login']);
иначе ввод например такого логина: log'in вышибет твой скрипт))
Спустя 10 минут, 30 секунд (17.01.2010 - 15:31) cyberx написал(а):
Domin
Просто в место
укажи
если писать $existing_users то он возвращает array. Укажи что тебе логин нужен
Просто в место
if ($user_login == $existing_users)
укажи
if ($user_login == $existing_users['login'])
если писать $existing_users то он возвращает array. Укажи что тебе логин нужен
Спустя 3 минуты, 44 секунды (17.01.2010 - 15:35) Domin написал(а):
Я ток недавно начал пхп изучать делаю всё по урокам разным ! arlamar мне не для реги надо , регу я ещё не писал !
Мне просто над было сделать вот так
И теперь обратно лажа теперь уже со вторым полем (((
Мне просто над было сделать вот так
И теперь обратно лажа теперь уже со вторым полем (((
Спустя 3 минуты, 38 секунд (17.01.2010 - 15:39) Domin написал(а):
cyberx некатит так ((
Вобще мне просто надо было сравнить введённый логин со всеми логинами в базе и всё .
Вобще мне просто надо было сравнить введённый логин со всеми логинами в базе и всё .
Спустя 2 минуты, 17 секунд (17.01.2010 - 15:41) Adil написал(а):
Цитата (Domin @ 17.01.2010 - 16:35) |
И теперь обратно лажа теперь уже со вторым полем ((( |
Эмммм.. а в чем проблема то?
Спустя 4 минуты, 37 секунд (17.01.2010 - 15:46) cyberx написал(а):
Значит еще где то ошибка. После этого
сделай echo $existing_users; и получишь array, если так echo $existing_users['login']; то сам логин
$login = mysql_query ('SELECT login FROM user',$db);
$existing_users = mysql_fetch_array($login);
сделай echo $existing_users; и получишь array, если так echo $existing_users['login']; то сам логин
Спустя 1 минута, 44 секунды (17.01.2010 - 15:47) arlamar написал(а):
не надо путать человека))
Domin, как называются те 2 поля в базе и как они в пост приходят?
Domin, как называются те 2 поля в базе и как они в пост приходят?
Спустя 5 секунд (17.01.2010 - 15:47) Domin написал(а):
Так вроде норм всё щя буду дальше делать , туплю уже чучуть (((
Спустя 2 минуты, 21 секунда (17.01.2010 - 15:50) Domin написал(а):
Цитата |
Domin, как называются те 2 поля в базе и как они в пост приходят? |
1 поле login
2 поле name
Спустя 4 минуты, 45 секунд (17.01.2010 - 15:55) arlamar написал(а):
я имел ввиду все поля которые нужно проверить на уникальность... первое поле уже проверили ещё 2 ты сказал вроде
и как они в пост приходят тоже напиши
и как они в пост приходят тоже напиши
Спустя 3 минуты, 29 секунд (17.01.2010 - 15:58) Domin написал(а):
Второе поле сделал так-же
всё начало работать , теперь делаю Email также
и тупит чёто обратно .
include ("block/bd.php");
$user_name = $_POST['user_name'];
$name = mysql_query ("SELECT * FROM user WHERE name = '$user_name'",$db);
if (mysql_num_rows($name)) {
//юзер недоступен
echo "no";
}
else {
//доступен
echo "yes";
}
всё начало работать , теперь делаю Email также
include ("block/bd.php");
$user_email = $_POST['user_email'];
$email = mysql_query ("SELECT * FROM user WHERE email = '$user_email'",$db);
if (mysql_num_rows($email)) {
//юзер недоступен
echo "no";
}
else {
//доступен
echo "yes";
}
и тупит чёто обратно .
Спустя 7 минут, 42 секунды (17.01.2010 - 16:06) Domin написал(а):
Вот сам скрипт
<script language="javascript">
$(document).ready(function()
{
$("#user_email").blur(function()
{
$("#2msgbox").removeClass().addClass('messagebox').text('Проверка...').fadeIn("slow");
//Проверить существует ли имя
$.post("user_availability2.php",{ user_email:$(this).val() } ,function(data)
{
if(data=='no') //если имя не доступно
{
$("#2msgbox").fadeTo(200,0.1,function() //начнет появляться сообщение
{
$(this).html('Этот E-mail уже занят').addClass('messageboxerror').fadeTo(900,1);
});
}
else
{
$("#2msgbox").fadeTo(200,0.1,function()
{
//тут прописывается сообщение о доступности имени
$(this).html('E-mail доступен для регистрации').addClass('messageboxok').fadeTo(900,1);
});
}
});
});
});
</script>
Спустя 1 час, 21 минута, 9 секунд (17.01.2010 - 17:27) Domin написал(а):
Всё разобрался ! Ещё раз спасибо всем что помогли !