Назад

Рега

Автор: gmden: Дата: 06.07.2011

Подскажите где ошибка в коде. Дела в том что при регистрации не проверяется логин и создает в базе одинаковые логин. В остальном всё в порядке работает.



if(!$id) {
header('Location: index.php');
die();
}
//$key = rand(10, 10000);
//mysql_query('insert into `'.$db_site.'`.`register`(`date`, `key`) values('.time().', '.$key.');');
//mysql_query('delete from `'.$db_site.'`.`register` where `date` < '.(time() - 600));


require_once("include/recaptchalib.php");
$publickey = "6Le5E8ASAAAAALAcO6FDq8WJXLagfWSwwxuYFQ5b"; // get it on http://www.google.com/recaptcha
$privatekey = "6Le5E8ASAAAAAAf_ARJhNl2NLcdZE9SOuXFPBsbh"; // get it on http://www.google.com/recaptcha



$a = false;
$err = '';
if($_POST['username'] || $_POST['pass1'] || $_POST['pass2'] || $_POST['email'] || $_POST['gender'] ||$_POST['regcode']) {
$a = true;
if($_POST['rules'] != "on")
$err .= 'Вы должны согласиться с правилами сервера!
';
if(!$_POST['username'])
$err .= 'Пожалуйста, введите логин.
';
if(!$_POST['pass1'])
$err .= 'Пожалуйста, введите пароль.
';
if(!$_POST['email'])
$err .= 'Пожалуйста, введите e-mail.
';
if(!$_POST['gender'])
$err .= 'Вы не указали пол.
';



if(!ctype_alnum($_POST['username']) || strlen($_POST['username']) < 4 || strlen($_POST['username']) > 12)
$err .= 'Логин должен состоять только из латинских букв и цифр и быть длиной не менее 4 и не более 12 символов.
';
elseif(mysql_num_rows(mysql_query('select 1 from `login` where `userid` = \''.$_POST['username'].'\'')))
$err .= 'Этот логин уже кем то используется.
';
if($_POST['pass1'] != $_POST['pass2'])
$err .= 'Пароли различаются, пожалуйста, введите пароль еще раз.
';
if(!ctype_alnum($_POST['pass1']) || strlen($_POST['pass1']) < 4 || strlen($_POST['pass1']) > 12) $err .= 'Пароль должен состоять только из латинских букв и цифр и быть длиной не менее 4 и не более 12 символов.
';
if(!preg_match('/^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\..{1,4}$/', $_POST['email']))
$err .= 'Поле e-mail заполнено неверно.
';



$resp = recaptcha_check_answer(
$privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]
);

if (!$resp->is_valid)
{
$err .= 'Проверочный код неверен, попробуйте еще раз.
';
}

$db = mysql_connect ($service,$username,$password);
mysql_select_db($database,$db);
if(!$err)
mysql_query('insert into `login`(`userid`, `user_pass`, `sex`, `email`) values(\''.$_POST['username'].'\', \''.($use_md5_password ? md5($_POST['pass1']) : $_POST['pass1']).'\', \''.($_POST['gender'] == 'M' ? 'M' : 'F').'\', \''.$_POST['email'].'\');');
}
?>

Регистрация на сервере





if($err)
echo ''.$err.'

';
else if($a)
echo 'Регистрация завершена! Вы можете зайти в игру под своим логином и паролем.
';

?>


















Введите логин:

Введите пароль:

Повторите пароль:

Введите e-mail:

Выберите пол:
       





















Автор: gmden: Дата: 06.08.2011

Не помогло

Автор: Кеник: Дата: 06.08.2011

elseif(mysql_num_rows(mysql_query('select * from `login` where `userid` = \''.$_POST['username'].'\'')))
$err .= 'Этот логин уже кем то используется.
';


Как-то так, не?

Автор: Less: Дата: 06.08.2011

"SELECT count(*) from `login` where `userid`='".$_POST['username']."'" 


У меня с такими знаками написано
и вроде работает.

Автор: Кеник: Дата: 06.08.2011

А для чего count?

Автор: Less: Дата: 06.08.2011

для определения кол-ва логинов на сколько я наю
Ну мне каунт нравится куда больше чем селект * или еще что-то, оно логичнее как-то, мы ведь ищем кол-во акков с таким именем.

Автор: Кеник: Дата: 06.08.2011

Цитата Less;43107:
для определения кол-ва логинов на сколько я наю
Ну мне каунт нравится куда больше чем селект * или еще что-то, оно логичнее как-то, мы ведь ищем кол-во акков с таким именем.


Ам... Ну дак для этого там и стоит

mysql_num_rows

:lol:

Автор: Less: Дата: 06.08.2011

Ну там да, я это уже поняла :( у меня ее нет

может быть так? :)
`userid` = '\'.$_POST['username'].\'''

Автор: Кеник: Дата: 06.08.2011

Цитата Less;43110:
Ну там да, я это уже поняла :( у меня ее нет

может быть так? :)
`userid` = '\'.$_POST['username'].\'''


Надо первую экранировать, не:?

`userid` = \''.$_POST['username'].'\''

Автор: Less: Дата: 06.08.2011

`userid`=/''.$_POST['username'].'/''
хотя да, все верно, тогда крайне странно что не работает.

P.S. я не притендую на звание трупхпмастера и вообще ни на какие звания в этой области не притендую :) когда-то давным давно мучала его немного, но не более чем просто ради любопытства.

Автор: Кеник: Дата: 06.08.2011

Цитата Less;43113:
`userid`=/''.$_POST[/'username/'].'/''
хотя да, все верно, тогда крайне странно что не работает.


Не работало, потому что SELECT 1 FROM было, не? Я полагаю, что SELECT * будет нормально работать... Вон Ренегад читает темку, щас всем по шее за элементарные ляпы в мускуле надает :D

Автор: Less: Дата: 06.08.2011

селект 1 возвращает 1 если такое есть, если нет возвращает ноль.

Автор: Less: Дата: 06.08.2011

elseif(mysql_query('select count(*) from `login` where `userid` = \''.$_POST['username'].'\'')))

тогда может так?:D

На самом деле так заочно на расстоянии сложно, имея доступ к скрипту и возможности проверять было бы проще, но ставить себе этот скрипт крайне лениво, по большей части развлечение :)

Автор: Кеник: Дата: 06.08.2011

Цитата Less;43116:
elseif(mysql_query('select count(*) from `login` where `userid` = \''.$_POST['username'].'\'')))

тогда может так?:D

На самом деле так заочно на расстоянии сложно, имея доступ к скрипту и возможности проверять было бы проще, но ставить себе этот скрипт крайне лениво, по большей части развлечение :)


Мне тоже дико лень... Да и интереснее в теории все посчитать-посмотреть, а потом уже результат анализировать (:

Автор: Renegade: Дата: 06.08.2011

некогда пиздюлей раздавать, мне за 3 часа нужно сделать готовый интернетмагазин. Расплата за неделю распиздяйства.

В раздеел вебобвязка выложена готовая рабочая рега, юзайте, чо.

Автор: Кеник: Дата: 06.08.2011

Та не, мы же ошибку разбираем! Иди, допиливай магазин (: Я думал я один почти все на последний момент откладываю..

Автор: Renegade: Дата: 06.08.2011

Цитата Кеник;43132:
Та не, мы же ошибку разбираем! Иди, допиливай магазин (: Я думал я один почти все на последний момент откладываю..


До здачи проекта или дохуя, или один день :P

Автор: gmden: Дата: 06.08.2011

Цитата Less;43116:
elseif(mysql_query('select count(*) from `login` where `userid` = \''.$_POST['username'].'\'')))

тогда может так?:D

На самом деле так заочно на расстоянии сложно, имея доступ к скрипту и возможности проверять было бы проще, но ставить себе этот скрипт крайне лениво, по большей части развлечение :)


Так не работает вообще скрипт вешается.

Автор: Кеник: Дата: 06.08.2011

Цитата gmden;43181:
Так не работает вообще скрипт вешается.


а мой вариант?

Автор: Sanasol: Дата: 06.08.2011

Возьмите готовую регистрацию с этой ветки форума

гмден стукни в асю срочно :D

Автор: gmden: Дата: 06.08.2011

Спасибо Sanasol. Весь баг был в том что нужно было переместить стороки

$db = mysql_connect ($service,$username,$password);
mysql_select_db($database,$db);
перед проверками.

Автор: Кеник: Дата: 06.08.2011

А ларчик просто открывался!

Автор: obliged.act: Дата: 06.09.2011

код лол, за 5$ сделаю как нужно.

Автор: Cole McCormick: Дата: 06.09.2011

Его тут и без тебя бесплатно сделают.

Автор: Кеник: Дата: 06.09.2011

Цитата Naota;43224:
Его тут и без тебя бесплатно сделают.


Здесь в ход идет разница во времени. Если автору срочно нужно - не пожалеет и отдасть 5 баксов, если не к спеху - подождет и все (: Или возьмет другое решение из этой же ветки.

Автор: Cole McCormick: Дата: 06.09.2011

Цитата Кеник;43225:
Здесь в ход идет разница во времени. Если автору срочно нужно - не пожалеет и отдасть 5 баксов, если не к спеху - подождет и все (: Или возьмет другое решение из этой же ветки.


Я себе за 5 баксов возьму 3 литра охоты крепкой и мне никакая рега на нездалась.

Автор: Кеник: Дата: 06.09.2011

Охота крепкое - говно редкостное :( Уж лечше на регу потратить, чем на эту мочу :(

Автор: Cole McCormick: Дата: 06.09.2011

Цитата Кеник;43227]Охота крепкое - говно редкостное :( Уж лечше на регу потратить, чем на эту мочу :(


Это кокраз не моча=) это клинское махито моча) И Жигулевское, вот охота, велкопоповецкий, стелла, хайникен, гинес, бадвейшер, бад лайт, миллер, ну и думаю амстердам навигатор там почти 9 оборотов. Вот эт пиво я понимаю. А всякие балктики клинские и кароны, их местная гопота за горажами отл..разливает.
[IMG]http://www.leprastuff.ru/data/img/20090804/3928f9ae440af85ecc1e8cb60b0aa7d3.jpg[/IMG:

Автор: Кеник: Дата: 06.09.2011

О-дааа.. Сибирская корона по сравнению с Охотой конечно моча и напиток гопников. Туборг или корона - мой выбор.

Автор: kadze: Дата: 06.09.2011

Хольстен,Миллер!)

Автор: obliged.act: Дата: 06.09.2011

5$.

Автор: Cole McCormick: Дата: 06.09.2011

Амстердам навигатор!

Автор: kadze: Дата: 06.09.2011

пора во флейм переносить :D как то не рега уже. амстердам больно крепкий)) я кста не видел 11.6 оО

Автор: gmden: Дата: 06.09.2011

Чё вы тут разводите я изза вас пиво захотел. Всё пошел в пивнушку. Кстати насчёт проблемы я уже писал, что Sanasol помог. Яб 5$ далбы за спрайт моба на заказ.

Автор: kadze: Дата: 06.09.2011

спрайт моба 5$ ...квадрат?)

Автор: vixa2012: Дата: 06.09.2011

зделай свою регистрацию а когда будеш делать проверку на одинаковые логини пропиши скрипт типо такого

$query = "SELECT `account_id` FROM `login` WHERE `userid`='".$login."'";
$result = mysql_query($query) or die('немогу соединиться с базой данных');
if (mysql_num_rows($result) > 0)
{
$message= 'Такой аккаунт уже существует
';
} else {тут если проверка удачна пишешь скрипт внесения данных в базу}

так и тебе понятней будет и меньше мучаться будеш

или чуток измени свой скрипт в областе проверки и отдельно пропиши $переменная = mysql_num_rows($переменная) > 0

Автор: Sanasol: Дата: 06.09.2011

уже 2 раза написали что решена проблема

Автор: gmden: Дата: 06.10.2011

Цитата kadze;43235:
спрайт моба 5$ ...квадрат?)



Мне нужен спрайт ввиде танка готов заплатить от 5-20$