Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Многоразовый сертификат

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
LanikSKy
Отправлено: 09 Октября, 2017 - 21:19:14
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Март 2017  


Помог: 0 раз(а)




Всем привет!
Ребят, подскажите пожалуйста, у меня на сайте есть сертификаты, которые работают следующим образом:
пользователь вводит определенный код, ему начисляется игровая валюта, после этого код становится недоступен, потому что стоит в базе проверка на status active или passive, ну и соответственно они получаются одноразовыми.
А что нужно сделать, чтобы код становился недоступен для повторного использования только этому пользователю, а остальные могли им продолжать пользоваться, но тоже единоразово?
Код у сертификатов вот такой:
PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['sert'])) {
  2. $sert = mysql_real_escape_string($_POST['sert']);
  3. $q = mysql_query("SELECT * FROM sert WHERE sert_name = '$sert' AND sert_task = '".$task['task_id']."' AND `status` = 1");
  4. if (mysql_num_rows($q)) {
  5. $res = mysql_fetch_object($q);
  6. $sert_summa = $res->sert_summa;
  7. mysql_query("UPDATE users SET user_balance = (user_balance + $sert_summa) WHERE user_id = '" . $userdata['user_id'] . "'");
  8. }
  9.  
  10. else {
  11. $tpl->assign("error", "Ваш сертификат не найден");
  12. }
  13.  
  14. mysql_query("UPDATE `sert` SET `status` = 'passive' WHERE `sert_name` = '$sert'");
  15. //После этой строки
  16. //Выбираем Id записи
  17. $sert = mysql_query("SELECT `sert_id` FROM `sert` WHERE `sert_name` = '$sert'");
  18. $stmt = mysql_fetch_object($sert); //получаем все данные
  19. $sert_id = $stmt->sert_id;
  20.  
  21. //Записываем логи
  22. mysql_query("INSERT INTO `sertlog` SET `slog_user` = ".$userdata['user_id'].",
  23. slog_datestamp = '".time()."',
  24. `slog_sert` = $sert_id");
  25. }

Заранее большое спасибо за помощь!
 
 Top
LIME
Отправлено: 10 Октября, 2017 - 06:36:17
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




убрать поле активности
создать таблицу user_sert:
user_id, sert_name - составной первичный ключ
в которую класть запись при использовании серта юзером
выборка:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM sert
  2. JOIN user_sert ON user_sert.user_id = $userId AND sert_name = '$sert'
  3.  WHERE sert_task = ...

тогда и sertlog отпадает

и лучше перестать читать устаревшие материалы где используется mysql_* или хотя бы их переделывать на
PDO
 
 Top
LanikSKy
Отправлено: 10 Октября, 2017 - 10:13:39
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Март 2017  


Помог: 0 раз(а)




LIME пишет:
убрать поле активности
создать таблицу user_sert:
user_id, sert_name - составной первичный ключ
в которую класть запись при использовании серта юзером
выборка:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM sert
  2. JOIN user_sert ON user_sert.user_id = $userId AND sert_name = '$sert'
  3.  WHERE sert_task = ...

тогда и sertlog отпадает

и лучше перестать читать устаревшие материалы где используется mysql_* или хотя бы их переделывать на
PDO


Огого! Спасибо огромное!

(Отредактировано автором: 10 Октября, 2017 - 10:14:38)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB