Ответы пользователя по тегу MySQL
  • Как можно хранить в базе данных полные и неполные даты с возможностью поиска?

    Насколько знаю, таких встроенных возможностей у mysql нет. Поэтому остаётся вариант несколькими столбцами или хранение даты в виде строки 'YYYY-mm-dd'. Тогда сможете естественным образом сравнивать строки "2020", "2020-04" и "2020-04-05". Искать вхождение подстроки в строке через LIKE "2020%". Но скорее всего будут просадки по производительности. Тем не менее, если пользователей у вас немного и/или этот функционал не так часто будет запрашиваться, то такой вариант имеет право на существование. Только индекс на столбец не забудьте.
    Ответ написан
  • Как организовать безопасную работу MySQL + PHP для игры на Unity?

    Если злоумушленник, декомпилировав игру получит прямые ссылки к скриптам PHP, может ли он в теории чего нибудь натворить плохого?

    Эти скрипты PHP должны быть выполнимыми не должны быть скачиваемыми (обычно дефолтно настроенный веб-сервер так и делает). То есть при запрос скрипта, веб-сервер не отдаст его как текстовый файл, а выполнит все инструкции пхп и потом вернёт только то, что пхп выведет. Например, всё, что заключено в <?php .... ?> будет скрыто, кроме того, что выводится функциями echo, print и подобными.

    Вы не скинули файл register.php целиком, но подозреваю, что он весь внутри <?php тега, поэтому можно не переживать, что обратившийся к скрипту пользователь увидит параметры коннекта к базе.

    По безопасности в целом — есть два подхода:
    1) Сделать обычную регистрацию и авторизацию внутри Юнити приложения. Как я понимаю, у вас сейчас так и сделано. После регистрации Юнити получает токен и использует его для всех последующих запросов. Токен желательно делать протухающим со временем.
    2) Сделать регистрацию и авторизацию на сайте, пройдя которую человек может получить доступ к странице, в которую встроено Юнити приложение. И при рендеринге приложения ему сразу же передаётся такой же токен для запросов, что и в пункте выше.

    Вопрос лишь в том, хотите вы давать доступ в приложение только зареганным у вас на сайте людям или хотите распространять приложение самостоятельно, а сайт будет невидимым бэкендом для него.
    Ответ написан
    5 комментариев
  • Как сделать сортировку по значениям поля с приоритетом?

    https://dev.mysql.com/doc/refman/5.6/en/enum.html#...
    Если используется кошерное enum поле, то сортировка идёт в порядке объявления значений в ENUM. Если поменяете порядок, то и сортировка изменится. Другого прямого способа нет.
    Ответ написан
    Комментировать
  • Как проверить существует ли такой пользователь в базе данных, чтобы можно было валидировать регистрацию пользователей на сайте?

    Ещё один запрос перед вставкой:

    $stmt = $pdo->prepare('SELECT COUNT(id) FROM users WHERE email=:email OR login=:login');
    $stmt->execute([
      'email' => $email,
      'login' => $login,
    ]);
    if ($stmt->fetch() > 0) {
      // Такой пользователь уже существует.
    }


    Вопрос: зачем вам юзернейм и логин.
    Ответ написан
    Комментировать