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
Форумы портала PHP.SU :: Версия для печати :: Многоразовый сертификат
Форумы портала PHP.SU » » Вопросы новичков » Многоразовый сертификат

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

1. LanikSKy - 09 Октября, 2017 - 21:19:14 - перейти к сообщению
Всем привет!
Ребят, подскажите пожалуйста, у меня на сайте есть сертификаты, которые работают следующим образом:
пользователь вводит определенный код, ему начисляется игровая валюта, после этого код становится недоступен, потому что стоит в базе проверка на 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. }

Заранее большое спасибо за помощь!
2. LIME - 10 Октября, 2017 - 06:36:17 - перейти к сообщению
убрать поле активности
создать таблицу 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
3. LanikSKy - 10 Октября, 2017 - 10:13:39 - перейти к сообщению
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


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

 

Powered by ExBB FM 1.0 RC1