Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 14.02.2015
Сообщений: 2
MySQL

Регистрация аккаунта из 2-х запросов

14.02.2015, 09:32. Показов 1039. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток.
Народ, помогите разобраться, для регистрации аккаунта нужно делать запросы в две таблицы, тут у меня штопор.
По порядку.
Вот таблицы:
Кликните здесь для просмотра всего текста
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE TABLE `battlenet_accounts` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Identifier',
  `email` VARCHAR(320) NOT NULL,
  `sha_pass_hash` VARCHAR(64) NOT NULL DEFAULT '',
  `v` VARCHAR(256) NOT NULL DEFAULT '',
  `s` VARCHAR(64) NOT NULL DEFAULT '',
  `sessionKey` VARCHAR(128) NOT NULL DEFAULT '',
  `joindate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `last_ip` VARCHAR(15) NOT NULL DEFAULT '127.0.0.1',
  `failed_logins` INT(10) UNSIGNED NOT NULL DEFAULT '0',
  `locked` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  `lock_country` VARCHAR(2) NOT NULL DEFAULT '00',
  `last_login` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
  `online` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  `locale` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  `os` VARCHAR(4) NOT NULL DEFAULT '',
  `LastCharacterUndelete` INT(10) UNSIGNED NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='Account System';
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
CREATE TABLE `account` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Identifier',
  `username` VARCHAR(32) NOT NULL DEFAULT '',
  `sha_pass_hash` VARCHAR(40) NOT NULL DEFAULT '',
  `sessionkey` VARCHAR(80) NOT NULL DEFAULT '',
  `v` VARCHAR(64) NOT NULL DEFAULT '',
  `s` VARCHAR(64) NOT NULL DEFAULT '',
  `token_key` VARCHAR(100) NOT NULL DEFAULT '',
  `email` VARCHAR(255) NOT NULL DEFAULT '',
  `reg_mail` VARCHAR(255) NOT NULL DEFAULT '',
  `joindate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `last_ip` VARCHAR(15) NOT NULL DEFAULT '127.0.0.1',
  `last_attempt_ip` VARCHAR(15) NOT NULL DEFAULT '127.0.0.1',
  `failed_logins` INT(10) UNSIGNED NOT NULL DEFAULT '0',
  `locked` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  `lock_country` VARCHAR(2) NOT NULL DEFAULT '00',
  `last_login` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
  `online` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  `expansion` tinyint(3) UNSIGNED NOT NULL DEFAULT '5',
  `mutetime` BIGINT(20) NOT NULL DEFAULT '0',
  `mutereason` VARCHAR(255) NOT NULL DEFAULT '',
  `muteby` VARCHAR(50) NOT NULL DEFAULT '',
  `locale` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  `os` VARCHAR(4) NOT NULL DEFAULT '',
  `recruiter` INT(10) UNSIGNED NOT NULL DEFAULT '0',
  `battlenet_account` INT(10) UNSIGNED DEFAULT NULL,
  `battlenet_index` tinyint(3) UNSIGNED DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_username` (`username`),
  UNIQUE KEY `uk_bnet_acc` (`battlenet_account`,`battlenet_index`),
  CONSTRAINT `fk_bnet_acc` FOREIGN KEY (`battlenet_account`) REFERENCES `battlenet_accounts` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='Account System';


Вот фрагмент кода в PHP:
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$email = ($_POST['email']);
$pass1 = ($_POST['password']); 
$username = ($_POST['account']); 
$result = mysql_query("SELECT * FROM account WHERE username='$username' AND sha_pass_hash='$pass1'", $realmd); 
if (mysql_num_rows($result) != 0) { 
echo "<center><p><font color=#CC0000><b>Такой аккаунт уже есть!</b></font></p></center>"; 
} else { 
if (
!mysqli_multi_query("INSERT INTO `account` (`username`, `sha_pass_hash`, `email`, `expansion`) VALUES ('$username', SHA1(CONCAT(UPPER('$username'),':',UPPER('$pass1'))), '$email', '$tbc'); INSERT INTO `battlenet_accounts` (`email`, `sha_pass_hash`) VALUES ('$email', SHA1(CONCAT(UPPER('$email'),':',UPPER('$pass1'))))", $realmd)
) 
{
echo "<center><p><font color=#CC0000><b>Ошибка</b></font></p></center>";
} else {
echo "<center><p><font color=#00CC00><b>Аккаунт успешно зарегестрирован!</b></font></p></center>";
} 
} 
} else { 
echo "<center><p><font color=#CC0000><b>Проверьте правильность ввода!</b></font></p></center>"; 
} 
}

Попробовал сделать через mysqli_multi_query, но есть одно НО. Нужно еще что бы поле `battlenet_account` в таблице `account` совпадало с `id` в таблице `battlenet_accounts`. Да этот код что выше всеравно выдает ошибку.
Подскажите как правильно тут организовать этот запрос и как правильно его вставить в PHP код, так как я понимаю это на уровне пользователя.
Заранее спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.02.2015, 09:32
Ответы с готовыми решениями:

Регистрация аккаунта разработчика
Товарищи! Такой вопрос. Регистрирую аккаунт разработчика. Заполняю необходимые данные и вот этот проклятый гугл требует информацию о моем...

Регистрация аккаунта разработчика
Здравствуйте! Обращаюсь ко всем кто регистрировал аккаунт разработчика. Скажите, пожалуйста, карта для оплаты нужна в долларах или...

Регистрация аккаунта разработчика после блокировки
В общем мне полгода назад прилетел бан. Доступа к панели разработчика нет. Подумываю на другого человека зарегать новый аккаунт. И тут...

4
91 / 91 / 13
Регистрация: 14.07.2012
Сообщений: 539
15.02.2015, 12:35
Цитата Сообщение от Antiment Посмотреть сообщение
для регистрации аккаунта нужно делать запросы в две таблицы
Для чего и почему?
0
171 / 153 / 67
Регистрация: 11.02.2015
Сообщений: 450
15.02.2015, 16:53
Цитата Сообщение от Antiment Посмотреть сообщение
что бы поле `battlenet_account` в таблице `account` совпадало с `id` в таблице `battlenet_accounts`
Тогда придется делать 2 запроса: сначала в battlenet_accounts, с помощью mysqli_insert_id получить ID и записать в account.
0
0 / 0 / 0
Регистрация: 14.02.2015
Сообщений: 2
16.02.2015, 09:58  [ТС]
Цитата Сообщение от pyramida Посмотреть сообщение
Для чего и почему?
Ну для того, что так в базе создается аккаунт ) вносятся данные в 2 таблицы.
Цитата Сообщение от nrobert Посмотреть сообщение
Тогда придется делать 2 запроса: сначала в battlenet_accounts, с помощью mysqli_insert_id получить ID и записать в account.
Частично решили этот вопрос, методом нескольких инсертов и одного апдейта, но тут встал другой вопрос:
Все данные вносятся нормально, но пароль захеширован как-то не так, как, например создаватьаккаунт через игровой клиент(прямо в игре) и поэтому зайти не получается.
Надо копать уже в самом коде от серверного ядра, как там хешируется пароль и тогда уже смотреть.
0
171 / 153 / 67
Регистрация: 11.02.2015
Сообщений: 450
16.02.2015, 10:47
Цитата Сообщение от Antiment Посмотреть сообщение
Надо копать уже в самом коде от серверного ядра, как там хешируется пароль
Сервер тут ни при чем. Смотрите код сохранения в БД или проверки при авторизации.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.02.2015, 10:47
Помогаю со студенческими работами здесь

Реализовать регистрацию аккаунта на примере аккаунта почты
Добрый день уважаемый форумчане! Дошел до такого дела как регистрация аккаунтов программными средствами есть сайт outlook.com....

Создание запросов и дополнительных запросов MS Access. Как првильно делать.
Здрасте всем. Может кто-то может мне тупому объяснить что-нибудь по запросам и дополнительным запросам в MS Access, мат. часть читал, не...

Хранение текста запросов в таблице. Как реализовать выполнение запросов с параметрами и Select?
День добрый! По тексту кода часто встречаются одни и те же фиксированные запросы, бывает длинные. Организовал их хранение в таблице, и по...

Запуск нескольких запросов на обновление кодом VBA (часть запросов пустые т.е. без отобранных записей)
Форумчане, доброго времени суток! Прошу Вашей помощи! есть таблица со списком Заказчиков. Этот список пополняют несколько человек,...

Брутфорс аккаунта
Расскжаите поподробней про брутфорс аккаунтов, есть ли от него защита на серверах. Актуален ли он для взлома вконтакте например. Какова...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru