PHP.SU

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

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

> Найдено сообщений: 4
LanikSKy Отправлено: 10 Октября, 2017 - 10:13:39 • Тема: Многоразовый сертификат • Форум: Вопросы новичков

Ответов: 2
Просмотров: 169
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


Огого! Спасибо огромное!
LanikSKy Отправлено: 09 Октября, 2017 - 21:19:14 • Тема: Многоразовый сертификат • Форум: Вопросы новичков

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

Заранее большое спасибо за помощь!
LanikSKy Отправлено: 10 Апреля, 2017 - 15:21:31 • Тема: Подмена одного значения другим • Форум: Напишите за меня, пожалуйста

Ответов: 2
Просмотров: 50
Добрый день!
Подскажите, пожалуйста, а то я совсем запуталась Растерялся
Мне надо реализовать вот какую штуку:
Когда пользователь вводит код в форму, ему на счет зачисляется n-сумма и этот код срабатывает только 1 раз.
Так вот в админке я создала форму, которая в базе в таблицу sert добавляет значения
sert_id
2

sert_name
jsyehfe22

sert_summa
200

Теперь мне надо чтобы пользователь при вводе jsyehfe22 получал на счет, а именно в таблицу user в колонку user_balance к его уже существующему балансу +200 и еще сделать так чтобы после активации этот код больше ни у кого не срабатывал.

Подскажите, пожалуйста, что дописать сюда:
<div class="col-md-4 col-md-offset-4">
<label>Сертификат</label>
<input type="text" class="form-control" name="sum"><br/>
<input type="submit" class="btn btn-success" value="Активировать"/>
</div>
(это форма ввода в личном кабинете в файле tpl)

И какой php код надо прописать, чтобы это всё заработало?
LanikSKy Отправлено: 15 Марта, 2017 - 09:54:56 • Тема: Выборочный вывод логов • Форум: Напишите за меня, пожалуйста

Ответов: 0
Просмотров: 33
Добрый день!
Подскажите, пожалуйста, что и куда надо добавить в код

<?php
require_once '../core.php';
$tpl->assign("page", "log");
if (!$_SESSION['logged_in']) {
header("Location: login.php");
die();
}
if (isset($_GET['logout'])) {
session_destroy();
header("Location: index.php");
die();
}

$q = mysql_query("SELECT * FROM log l
LEFT JOIN users u ON l.log_user = u.user_id
LEFT JOIN games g ON l.log_game = g.game_id
LEFT JOIN tasks t ON l.log_task = t.task_id
ORDER BY l.log_id DESC LIMIT 100
");
while ($d = mysql_fetch_array($q)) {
$res[] = $d;
}
$tpl->assign("res", $res);

$tpl->display("../template/admin/log2.html");
?>

Чтобы вывод логов был не из всей таблицы, а только если значение
game_id равно 6?
Я чтот совсем запуталась=((
(Добавление)
всё решение найдено! Спасибо=)

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB