<?php
//this varible contains the array of existing users
$existing_users=array('');
//value got from the get metho
$user_name=$_POST['user_name'];
//checking weather user exists or not in $existing_users array
if (in_array($user_name, $existing_users))
{
//user name is not availble
echo "no";
}
else
{
//user name is available
echo "yes";
}
?>
тут он берет из массива я так понял, а мне надо чтобы брал из базы помогли поправить в итоге стало вот так
<?php
$sql="SELECT username FROM modx_web_users";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result)) {
$return[] = $row;
}
$existing_users=$return;
//value got from the get metho
$user_name=$_POST['user_name'];
//checking weather user exists or not in $existing_users array
if (in_array($user_name, $existing_users))
{
//user name is not availble
echo "no";
}
else
{
//user name is available
echo "yes";
}
?>
и есть еще скрипт который вызывает этот пхп код
<script language="javascript">
$(document).ready(function()
{
$("#username").blur(function()
{
$("#msgbox").removeClass().addClass('messagebox').text('Проверка...').fadeIn("slow");
$.post("scripts/user_availability.php",{ user_name:$(this).val() } ,function(data)
{
if(data=='no')
{
$("#msgbox").fadeTo(200,0.1,function()
{
$(this).html('Этот логин занят').addClass('messageboxerror').fadeTo(900,1);
});
}
else
{
$("#msgbox").fadeTo(200,0.1,function()
{
$(this).html('Логин доступен для регистрации').addClass('messageboxok').fadeTo(900,1);
});
}
});
});
});
</script>
и в итоге все равно ничего не работает((( в чем может быть проблема?
Спустя 5 минут, 46 секунд (21.06.2011 - 19:02) Xander написал(а):
может надо указать еще путь к базе название ее и пароль , но как это сделать?
Спустя 1 минута, 16 секунд (21.06.2011 - 19:04) Renden написал(а):
Xander
Цитата |
и в итоге все равно ничего не работает((( в чем может быть проблема? |
В чем угодно, ты скажи что конкретно не работает? В php коде проблем не вижу, ты его запускал, отдельно без javascript он работает?
Если он не работает, он должен писать ошибки. Какие тебе выдаются?
Спустя 23 минуты, 13 секунд (21.06.2011 - 19:27) Xander написал(а):
у меня ошибок не выдается просто у меня есть список логинов в базе и он должен проверять поле с логином на лету и выдавать сообщение что то типо логин свободен или занят, а он всегда выдает что свободен, не смотря на то что должен быть занят!
Спустя 1 минута, 12 секунд (21.06.2011 - 19:28) Xander написал(а):
http://captainpolo.mysmartidea.ru/registraciya.html вот страница с регистрацией , логин admin занят а пишет что свободно(
Спустя 27 секунд (21.06.2011 - 19:29) Renden написал(а):
Напиши в конце скрипта
что выведется на экран?
UP: мне пишет "Пользователь с введенным вами логином уже зарегистрирован" все ок.
print_r($existing_users);
что выведется на экран?
UP: мне пишет "Пользователь с введенным вами логином уже зарегистрирован" все ок.
Спустя 1 минута, 39 секунд (21.06.2011 - 19:30) Xander написал(а):
хм , сейчас гляну!
Спустя 2 минуты, 56 секунд (21.06.2011 - 19:33) Xander написал(а):
совсем ничего не пишет!
Спустя 1 минута, 13 секунд (21.06.2011 - 19:34) Xander написал(а):
и писать должен не сверху а справа про занятость логина)
Спустя 2 минуты, 12 секунд (21.06.2011 - 19:37) Renden написал(а):
Xander
Говоришь ошибок php срипта нет http://captainpolo.mysmartidea.ru/scripts/...vailability.php
UP: отредактировал, вот весь код:
Еще раз отредатировал :)
Говоришь ошибок php срипта нет http://captainpolo.mysmartidea.ru/scripts/...vailability.php
UP: отредактировал, вот весь код:
$dbhost = "localhost"; //Хост
$dbuser = "root"; //Пользователь
$dbpassword = "xz"; //Пароль
$dbname = "xz"; //База Данных
mysql_connect($dbhost,$dbuser,$dbpassword) or die(mysql_error());
mysql_select_db($dbname) or die(mysql_error());
$existing_users = array();
$user_name=$_POST['username'];
$query = mysql_query("SELECT username FROM modx_web_users");
while($row=mysql_fetch_array($query))
$existing_users[] = $row;
if (in_array($user_name, $existing_users))
echo "no";
else
echo "yes";
Еще раз отредатировал :)
Спустя 4 минуты, 50 секунд (21.06.2011 - 19:41) Xander написал(а):
так ну теперь он выдает
yesArray ( [0] => Array ( [0] => admin [username] => admin ) [1] => Array ( [0] => ant111 [username] => ant111 ) [2] => Array ( [0] => Phill [username] => Phill ) [3] => Array ( [0] => siteadmin [username] => siteadmin ) [4] => Array ( [0] => xander [username] => xander ) )
но то что надо все равно не работает!
yesArray ( [0] => Array ( [0] => admin [username] => admin ) [1] => Array ( [0] => ant111 [username] => ant111 ) [2] => Array ( [0] => Phill [username] => Phill ) [3] => Array ( [0] => siteadmin [username] => siteadmin ) [4] => Array ( [0] => xander [username] => xander ) )
но то что надо все равно не работает!
Спустя 2 минуты, 22 секунды (21.06.2011 - 19:44) Renden написал(а):
Xander
print_r() убери.
$user_name=$_POST['user_name'];
Замени на:
$user_name=$_POST['username'];
print_r() убери.
$user_name=$_POST['user_name'];
Замени на:
$user_name=$_POST['username'];
Спустя 2 минуты, 4 секунды (21.06.2011 - 19:46) Xander написал(а):
убрал заменил ,но результата никакого опять(
Спустя 1 минута, 13 секунд (21.06.2011 - 19:47) Xander написал(а):
он по какой то причине всегда выдает yes!
Спустя 1 минута, 30 секунд (21.06.2011 - 19:49) Renden написал(а):
Xander
В скрипте js у тя ошибка:
а надо наверно:
В скрипте js у тя ошибка:
$.post("scripts/user_availability.php",{ user_name:$(this).val() } ,function(data)
а надо наверно:
$.post("scripts/user_availability.php",{ username:$(this).val() } ,function(data)
Спустя 54 секунды (21.06.2011 - 19:49) Xander написал(а):
да и там я поправил(
Спустя 4 минуты (21.06.2011 - 19:53) Renden написал(а):
Чет неверится мне:
Вставь, отрой страницу и вбей админ, че будет?
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<form method="POST">
<input id="username" type="text" maxlength="30" size="30" name="username">
<input type="submit" value="Отправить">
</form>
<?php
$dbhost = "localhost"; //Хост
$dbuser = "root"; //Пользователь
$dbpassword = "xz"; //Пароль
$dbname = "xz"; //База Данных
mysql_connect($dbhost,$dbuser,$dbpassword) or die(mysql_error());
mysql_select_db($dbname) or die(mysql_error());
$existing_users = array();
$user_name=$_POST['username'];
$query = mysql_query("SELECT username FROM modx_web_users");
while($row=mysql_fetch_array($query))
$existing_users[] = $row;
if (in_array($user_name, $existing_users))
echo "no";
else
echo "yes";
?>
Вставь, отрой страницу и вбей админ, че будет?
Спустя 5 минут, 32 секунды (21.06.2011 - 19:59) Xander написал(а):
http://captainpolo.mysmartidea.ru/registraciya.html вот можешь посмотреть сам что вышло все равно пишет yes
Спустя 8 минут, 43 секунды (21.06.2011 - 20:08) Renden написал(а):
Xander
Замени
$existing_users[] = $row;
на
$existing_users[] = $row['username'];
Замени
$existing_users[] = $row;
на
$existing_users[] = $row['username'];
Спустя 1 минута, 56 секунд (21.06.2011 - 20:10) YVSIK написал(а):
/*проверка на существование пользователя с таким же логином*/
$result = mysql_query("SELECT `id` FROM `reg_li_ag` WHERE `loginl` = '$loginl'", $db);
$myrow = mysql_fetch_assoc($result);
if(!empty($myrow['id']))
{
unset($loginl);
echo 'Такой логин уже есть, Вам необходимо подобрать '
.'другой логин.<br>';
}
reg_li_ag=> это собственно таблица
то бишь складываеи ID в массив потом проверяем
есль конечно вы работаете с базой
Спустя 54 секунды (21.06.2011 - 20:11) Xander написал(а):
Урааа , работает спасибо тебе огроменное!
Спустя 1 минута, 35 секунд (21.06.2011 - 20:12) Renden написал(а):
YVSIK
Зачем кидать гавнокоды? С таким кодом его ломанут за 2 секунды.
Зачем кидать гавнокоды? С таким кодом его ломанут за 2 секунды.
Спустя 1 минута, 11 секунд (21.06.2011 - 20:13) Renden написал(а):
Xander
Незачто.
Убери из кода or die(mysql_error()); В 2- местах, если ты их добавлял, чтоб не выдавало лишнего.
Незачто.
Убери из кода or die(mysql_error()); В 2- местах, если ты их добавлял, чтоб не выдавало лишнего.
Спустя 6 минут, 10 секунд (21.06.2011 - 20:19) YVSIK написал(а):
Цитата (Renden @ 21.06.2011 - 20:12) |
YVSIK Зачем кидать гавнокоды? С таким кодом его ломанут за 2 секунды. |
стоппПП
а сэтого момента по подробней
Спустя 5 минут, 58 секунд (21.06.2011 - 20:25) Renden написал(а):
YVSIK,Xander
Вот так должно быть
Вот так должно быть
$dbhost = "localhost"; //Хост
$dbuser = "root"; //Пользователь
$dbpassword = "xz"; //Пароль
$dbname = "xz"; //База Данных
mysql_connect($dbhost,$dbuser,$dbpassword);
mysql_select_db($dbname);
$user_name = trim(mysql_real_escape_string($_POST['username']));
$query = mysql_query("SELECT username FROM users WHERE username='$user_name'");
if (mysql_num_rows($query))
echo "no";
else
echo "yes";
Спустя 5 минут, 11 секунд (21.06.2011 - 20:31) Админ написал(а):
Renden
ну да и обратные кавычки чтоб избежать совпадения с зарезервированными именами
да и двойные лучше заменить на одинарные
ну да и обратные кавычки чтоб избежать совпадения с зарезервированными именами
да и двойные лучше заменить на одинарные
Спустя 1 минута, 54 секунды (21.06.2011 - 20:32) YVSIK написал(а):
я же вам сказал по подробней а не просто так должно быть есль быть до конца точным вот это
должно быть так
а терь сравним с этим
Renden
буду ждать ваших ответов с нетерпением
$query = mysql_query("SELECT username FROM users WHERE username='$user_name'");
должно быть так
$query = mysql_query("SELECT `username` FROM `users` WHERE `username`='$user_name'");
а терь сравним с этим
$result = mysql_query("SELECT `id` FROM `reg_li_ag` WHERE `loginl` = '$loginl'", $db);
Renden
буду ждать ваших ответов с нетерпением
Спустя 2 минуты, 17 секунд (21.06.2011 - 20:35) Админ написал(а):
Цитата |
$myrow = mysql_fetch_assoc($result); |
ренден прав - нафига выдёргивать массив если нужно только проверить наличие ряда в таблице
Спустя 13 секунд (21.06.2011 - 20:35) Renden написал(а):
Админ
Я против обратных кавычек, я за нормальные названия таблиц и полей
YVSIK
Перед запросом ты не показал человеку как избежать sql иньекции в $loginl + остальной код неимеет смысла так делать.
Я против обратных кавычек, я за нормальные названия таблиц и полей
YVSIK
Перед запросом ты не показал человеку как избежать sql иньекции в $loginl + остальной код неимеет смысла так делать.
Спустя 3 минуты, 11 секунд (21.06.2011 - 20:38) Админ написал(а):
Renden
Цитата |
Я против обратных кавычек |
странно - ну да фиг с ними с кавычками.
Спустя 3 минуты, 5 секунд (21.06.2011 - 20:41) Renden написал(а):
Админ
Я даже где-то спор развивал на эту тему, часть за, чать против.
Я лично против т.к ОФИЦИАЛЬНАЯ документация MySQL не использует обратные кавычки, и меня напрягает ставить 100 ковычек если я собираюсь выбрать 50 полей
Я даже где-то спор развивал на эту тему, часть за, чать против.
Я лично против т.к ОФИЦИАЛЬНАЯ документация MySQL не использует обратные кавычки, и меня напрягает ставить 100 ковычек если я собираюсь выбрать 50 полей
Спустя 8 минут, 16 секунд (21.06.2011 - 20:50) YVSIK написал(а):
Renden
ну я дико извиняюсь а где тут инекции
это что, то что проверяеться через массив?
терь так
я же просил про по подробней в этом по моему весь смысл
а не отрицать что это не так и всё моё лучше
вижу сщас что оно таво лучше вот только почему лучше
так и дойдем до светлого будущего
ну я дико извиняюсь а где тут инекции
это что, то что проверяеться через массив?
терь так
я же просил про по подробней в этом по моему весь смысл
а не отрицать что это не так и всё моё лучше
вижу сщас что оно таво лучше вот только почему лучше
так и дойдем до светлого будущего
Спустя 2 минуты, 26 секунд (21.06.2011 - 20:52) Админ написал(а):
Renden
я ж говорю - тут дело каждого
я ж говорю - тут дело каждого
Спустя 1 минута, 33 секунды (21.06.2011 - 20:54) Админ написал(а):
YVSIK
иньекция там самая натуральная
иньекция там самая натуральная
Цитата |
а где тут инекции это что, то что проверяеться через массив? |
это я вообще не понял
Спустя 3 минуты, 1 секунда (21.06.2011 - 20:57) Renden написал(а):
YVSIK
По поводу остального кода помоему Админ тебе уже ответил, что незачем генерировать массив если нужно узнать присутствует 1 строка в базе или нет.
$loginl = $_POST['username']; //Ничем не проверяется, не убирает кавычки и не экранирует, так бы сделал Автор темы, тк. ты не показал ему что нужно сделать.
$result = mysql_query("SELECT `id` FROM `reg_li_ag` WHERE `loginl` = '$loginl'", $db); //И попадает в запрос.
//В итоге используя UNION можно получить спокойно логин-пароль.
//А добавив всего-лишь в форму вместе с именем кавычку можно раскрыть пути.
По поводу остального кода помоему Админ тебе уже ответил, что незачем генерировать массив если нужно узнать присутствует 1 строка в базе или нет.