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

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

14.02.2015, 09:32. Показов 1061. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru