• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP8266 (NodeMCUv0.9)

RepaeR

New member
database-connect.php - подключение к бд, timeStamp.php - отвечает за проверку и отправку письма на почту.
PHP:
<?php
include "database-connect.php";
include "timeStamp.php";
$date = getdate();
     //if (isset($_POST['id'])) {
         $id = $_POST['id'];
         $sql = "SELECT `Admin`, `IsParked` FROM `parking_employee` WHERE `ID` = $id";
         $res = $connectionDB->query($sql);
         $data = $res->fetch_assoc();
         if (!empty($data)) {
             if (($date["hours"] > 6 && $date["hours"] < 23) || ($data['Admin'] == 1)) {
                 try {
                     if (getTime($id, $connectionDB))
                         echo 1;
                     else
                         echo 0;
                 } catch (\PHPMailer\PHPMailer\Exception $e) {
                     echo 0;
                 }
             } else
                 echo 2;

         } else {
             if ($date["hours"] > 6 && $date["hours"] < 23)
                 echo 0;
             else
                 echo 2;
         }
     //}
$connectionDB->close();
 

CodeNameHawk

Moderator
Команда форума
Если полученный вывод вставить в файл и посмотреть PN, то показывает кодировку UTF-8, скорее всего тут собака зарыта.
1645443524837.png
1645443468286.png
 

RepaeR

New member
Если полученный вывод вставить в файл и посмотреть PN, то показывает кодировку UTF-8, скорее всего тут собака зарыта.
Посмотреть вложение 11900
Посмотреть вложение 11899
Я не совсем понимаю, что за собака закрыта? Примерно, что оно обозначает?
 

Сергей_Ф

Moderator
Команда форума
Решение в лоб, сравнивать полученный ответ посимвольно.
необязательно

@RepaeR
попробуйте так
Код:
long pay = atoi(strpbrk(payloads.c_str(), (const char*)F("0123456789")));
если ожидаете только цифры от 0 до 2, то константу можно сократить до
Код:
F("012")
 

CodeNameHawk

Moderator
Команда форума
Я так понимаю пройдет любой ответ сервера содержащий 1.
Наверное надежней сравнивать с константой, такой, какую может выдать сервер.
 

Сергей_Ф

Moderator
Команда форума
Я так понимаю пройдет любой ответ сервера содержащий 1.
Если комментарий мне, то вы не правы. Будут отброшены все символы, кроме перечисленных (цифры). Затем будет выполнено преобразование в int.
Если нужны двузначный числа, то надо усложнить, добавить рекурсию или цикл.
 

Сергей_Ф

Moderator
Команда форума
Допустим сервер ответил "1.Не пускать его". Или как ожидается "1" в другой кодировке.
Отловите разницу?
Я исходил из исходника
Код:
if (payloads.toInt() == 1) {
          Serial.println("Access Granted");
          access = 1;
         }
При чём тут "1.Не пускать его"? Такой вариант и в оригинале отработает некорректно.
 

RepaeR

New member
Всё, решил проблему тем, что сравниваю первый элемент полученного кода из страницы.
 
Сверху Снизу