• Система автоматизации с открытым исходным кодом на базе 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
Всё, решил проблему тем, что сравниваю первый элемент полученного кода из страницы.
 
Сверху Снизу