avatar_Игорь

Весовой калькулятор

Автор Игорь, 02-08-2018, 07:45:11

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

ИгорьTopic starter

Спробував зламати ID. Отримав відповідь від сервера. Аналогічну відповідь сервер передасть застосунку якщо буде зламаний ID. Користувач це побачить та зможе прийняти заходи.
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

ИгорьTopic starter

ЦитатаТак, щось у мене не сходиться. Зараз я отримую 10 повідомлень зі сервера. По якому визначаємо терміновість?
По останньому.Якщо проблема не зикне, вона буде бублюватись доки не виправиш ситуацию, або пока не вимкнеш живлення пристрою. Якщо проблема зниклка, то можна й не турбувати хазяїна.
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

ИгорьTopic starter

Бачу деякі проблеми з обслуговуванням декількох пристроїв. Оптимістичні повідомлення з одного пристрою можуть перекрити термінові з іншого. Щоб цьому запобігти...
Всі повідомлення мають попадати в список з десяти строк.
Термінове повідомлення, якщо з'явилось, має попасти у віконце особливих повідомленьта лишатись там доти, доки хазяїн не натисне кнопку підтвердження. Всі повідомлення, що будуть надходити до натискання кнопки, просто записуються в загальний список з 10 повідомлень.
Коли кнопка буде натиснута та особливе віконце звільниться, воно одрузу буде зайняте новим особливим повидомленням якщо таке прийде.
Якщо не приходить, то й не треба, навіть якщо раніше було.
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

ИгорьTopic starter

Доречі, якщо зараз подивитись на застосунку що робиться на "протезі" FFFFFF-3465, то там йде інфа про те, що пристрій не на зв'язку. Бо "Протез" давно нічого не надсилав.
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

ivan_fd

Тобто, зараз з сервера буде йти тільки по одному повідомленню і саму історію повідомлень зберігати на стороні додатку телефона?

ИгорьTopic starter

Ні. В цьому нічого не змінилось. Сервер отримує від пристрою повідомлення по одному, та зберігає останні 10 з них. Незалежно від того, з якою періодичністю застосунок звернеться до сервера, він отримає 10 останніх отриманих повдомлень
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

ИгорьTopic starter

Тобто все лишилось без змін.
Якщо останнє повідомлення має знак оклику, воно повинно продублюватися у віконці важливих та викликати на телефоні звуковий сигнал. Все решту я реалізую на сервері.
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

ИгорьTopic starter

Треба лишити кнопку для отримання позачервогої порції повідомлень.
Або... якщо кожен запит на сервер завершиться зміною, оновленням списку повідомлень, то чи потрібна кнопка позачергового оновлення?
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

ivan_fd

Цитата: Игорь від 26-01-2022, 20:24:17Ні. В цьому нічого не змінилось. Сервер отримує від пристрою повідомлення по одному, та зберігає останні 10 з них.

То, що на сервері просто ще не дороблено? Бо зараз при GET запиті http://labspirt.club/warning/?PHPSESSID=FFFFFF-3465, у відповіді тільки одна строка.

ИгорьTopic starter

Сервер сам не народжує строк. Для того, щоб на сервері з'явились додаткові строки, пристрій з ID, що співпадає з ID запросу, має залишити строки. Залишити строки може або пристрій, або симулятор. Якщо строк немае, сервер поверне  повідомлення, що пристрій не на зв'язку.
Час зберігання інформації на сервері співпадае с часом життя сесій - це 20 хвилин після останнього входу з тим самим ID.
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

ivan_fd

#100
Поки писав, бачу, що ви вже виправили на сервері. Тепер все ОК.  Є 10 строк.



добавлено: 26-01-2022, 23:28:37

Обновив додаток.
Змінив вікно вводу ID.
Добавив зміну сервера.
......

Скачати ТУТА.

Ігор - давати доступ до файлу всім охочим?

ИгорьTopic starter

#101
То ти вже дав доступ :) 
Це ПХП файл з сервера, що обслуговує як пристрій, так і застосунок. Я його гарно закоментував. Подивись, може буде корисним. До комментування там було 70 строк. Лаконічно.
<?php
   session_id
($_GET["PHPSESSID"]);
   
session_start();  
   
error_reporting(-1);
   
header('Content-Type: text/plain; charset=utf-8');
   if(!isset(
$_GET["PHPSESSID"])){
      
//Якщо в звпросы нема ідентифікатору, відповідаємо, що так справа не піде та зупиняємось 
      
echo 'Параметр "PHPSESSID" відсутній.\r\nТелефонуйте +380674846964, Ігор.';
      exit();
   }
//Якщо ID є, перевіряємо його валідність.   
// Тут я видалив блок коду, що вираховує валідність ID.
// Замість нього вставив декілька конкретних прикладів
//**********************************************
        
if(substr($_GET["PHPSESSID"], 0,6)=="AAAAAA")$pass='2310';
   else if(
substr($_GET["PHPSESSID"], 0,6)=="BBBBBB")$pass='2541';
   else if(
substr($_GET["PHPSESSID"], 0,6)=="CCCCCC")$pass='2772';
   else if(
substr($_GET["PHPSESSID"], 0,6)=="DDDDDD")$pass='3003';
   else if(
substr($_GET["PHPSESSID"], 0,6)=="EEEEEE")$pass='3300';
   else if(
substr($_GET["PHPSESSID"], 0,6)=="999999")$pass='2079';
   else if(
substr($_GET["PHPSESSID"], 0,6)=="888888")$pass='1848';
//**********************************************
    //якщо нема відповідності між лівою та правою частинами ІD, 
   // повідомляємо про це та виходимо
   
if($pass!=substr($_GET["PHPSESSID"],strpos($_GET["PHPSESSID"],"-")+1)){  
      echo 
"Iдентифiкатор сесiї не є дейсний.\r\nТелефонуйте +380674846964, Ігор." ;
      exit();
   }
   
// Якщо відповідність є, перевіряємо що саме прийшло
   // Якщо запрос має строку "text", то це пристрій
   
if(isset($_GET["text"])){ 
      echo 
$_GET["text"];  //Повертаємо цей текст назад (використовується в симуляторі)
     //та зберігаемо поточний час останнього зв'язку з пристроєм
      
$_SESSION["last_time"]=$_SERVER["REQUEST_TIME"];
     
//Зсуваємо на один пункт 10 строк, що будуть передані смартфону при запиті.
     //Якщо попередня строка не існує, замість неї вставляємо пусту строку (тільки час)
      
if(isset($_SESSION["nr8"])) $_SESSION["nr9"]=$_SESSION["nr8"]; else $_SESSION["nr9"]=date('d.m.Y '$_SERVER["REQUEST_TIME"]).'--:--:-- -›  ----';  
      if(isset(
$_SESSION["nr7"])) $_SESSION["nr8"]=$_SESSION["nr7"]; else $_SESSION["nr8"]=date('d.m.Y '$_SERVER["REQUEST_TIME"]).'--:--:-- -›  ----';  
      if(isset(
$_SESSION["nr6"])) $_SESSION["nr7"]=$_SESSION["nr6"]; else $_SESSION["nr7"]=date('d.m.Y '$_SERVER["REQUEST_TIME"]).'--:--:-- -›  ----';  
      if(isset(
$_SESSION["nr5"])) $_SESSION["nr6"]=$_SESSION["nr5"]; else $_SESSION["nr6"]=date('d.m.Y '$_SERVER["REQUEST_TIME"]).'--:--:-- -›  ----';  
      if(isset(
$_SESSION["nr4"])) $_SESSION["nr5"]=$_SESSION["nr4"]; else $_SESSION["nr5"]=date('d.m.Y '$_SERVER["REQUEST_TIME"]).'--:--:-- -›  ----';  
      if(isset(
$_SESSION["nr3"])) $_SESSION["nr4"]=$_SESSION["nr3"]; else $_SESSION["nr4"]=date('d.m.Y '$_SERVER["REQUEST_TIME"]).'--:--:-- -›  ----';  
      if(isset(
$_SESSION["nr2"])) $_SESSION["nr3"]=$_SESSION["nr2"]; else $_SESSION["nr3"]=date('d.m.Y '$_SERVER["REQUEST_TIME"]).'--:--:-- -›  ----';  
      if(isset(
$_SESSION["nr1"])) $_SESSION["nr2"]=$_SESSION["nr1"]; else $_SESSION["nr2"]=date('d.m.Y '$_SERVER["REQUEST_TIME"]).'--:--:-- -›  ----';  
      if(isset(
$_SESSION["last"]))$_SESSION["nr1"]=$_SESSION["last"];else $_SESSION["nr1"]=date('d.m.Y '$_SERVER["REQUEST_TIME"]).'--:--:-- -›  ----';  
      
//На останню позицію (last) ставимо останню отриману строку
     
$_SESSION["last"]=date('d.m.Y H:i:s'$_SERVER["REQUEST_TIME"]).' -›  '.$_GET["text"];
   }
   else{ 
// Якшо в запросі строки "text" нема, то це прийшов пристрій
      // Якщо інформації про останній звєязок з пристроєм не існує, 
      // народжуємо його на 1000 секунд назад
      
if(!isset($_SESSION["last_time"])) $_SESSION["last_time"]=$_SERVER["REQUEST_TIME"]-1000;
     
//Якщо пристрій не з'являлся більш ніж 600 секунд (це більше 10 хвилин),
     // вважаємо, що він не на зв'язку.
      
if($_SERVER["REQUEST_TIME"] - $_SESSION["last_time"]>600){
       
//в такому випадку перевіряємо останнє повідомлення. 
       //Якщо там на дев'ятий позиціі з кінця не стоїть апостроф,
      // то це не інформація про "не на зв'язку".         
         
if(substr($_SESSION["last"], -9,1)!="'"){
         
// тоді зсуваємо всі повідомлення, остання строка звільняється
            
if(isset($_SESSION["nr8"])) $_SESSION["nr9"]=$_SESSION["nr8"]; else $_SESSION["nr9"]=date('d.m.Y '$_SERVER["REQUEST_TIME"]).'--:--:-- -›  ----';  
            if(isset(
$_SESSION["nr7"])) $_SESSION["nr8"]=$_SESSION["nr7"]; else $_SESSION["nr8"]=date('d.m.Y '$_SERVER["REQUEST_TIME"]).'--:--:-- -›  ----';  
            if(isset(
$_SESSION["nr6"])) $_SESSION["nr7"]=$_SESSION["nr6"]; else $_SESSION["nr7"]=date('d.m.Y '$_SERVER["REQUEST_TIME"]).'--:--:-- -›  ----';  
            if(isset(
$_SESSION["nr5"])) $_SESSION["nr6"]=$_SESSION["nr5"]; else $_SESSION["nr6"]=date('d.m.Y '$_SERVER["REQUEST_TIME"]).'--:--:-- -›  ----';  
            if(isset(
$_SESSION["nr4"])) $_SESSION["nr5"]=$_SESSION["nr4"]; else $_SESSION["nr5"]=date('d.m.Y '$_SERVER["REQUEST_TIME"]).'--:--:-- -›  ----';  
            if(isset(
$_SESSION["nr3"])) $_SESSION["nr4"]=$_SESSION["nr3"]; else $_SESSION["nr4"]=date('d.m.Y '$_SERVER["REQUEST_TIME"]).'--:--:-- -›  ----';  
            if(isset(
$_SESSION["nr2"])) $_SESSION["nr3"]=$_SESSION["nr2"]; else $_SESSION["nr3"]=date('d.m.Y '$_SERVER["REQUEST_TIME"]).'--:--:-- -›  ----';  
            if(isset(
$_SESSION["nr1"])) $_SESSION["nr2"]=$_SESSION["nr1"]; else $_SESSION["nr2"]=date('d.m.Y '$_SERVER["REQUEST_TIME"]).'--:--:-- -›  ----';  
            if(isset(
$_SESSION["last"]))$_SESSION["nr1"]=$_SESSION["last"];else $_SESSION["nr1"]=date('d.m.Y '$_SERVER["REQUEST_TIME"]).'--:--:-- -›  ----';  
         }
       
//На останню позицію ставимо повідомлення про "не на зв'язку" з поточним часом. 
         
$_SESSION["last"]=date('d.m.Y H:i:s'$_SERVER["REQUEST_TIME"]).' -›  '."! ПРИСТРІЙ НЕ НА ЗВ'ЯЗКУ";
       
//тобто якщо таке повідомлення вже є, то зміниться тільки час останнього повідомлення, всі попередні збережуться.
      
}
     
//Видаемо строку з десятком строк
      
echo $_SESSION["nr9"] . PHP_EOL .
      
$_SESSION["nr8"] . PHP_EOL .
      
$_SESSION["nr7"] . PHP_EOL .
      
$_SESSION["nr6"] . PHP_EOL .
      
$_SESSION["nr5"] . PHP_EOL .
      
$_SESSION["nr4"] . PHP_EOL .
      
$_SESSION["nr3"] . PHP_EOL .
      
$_SESSION["nr2"] . PHP_EOL .
      
$_SESSION["nr1"] . PHP_EOL .
      
$_SESSION["last"];
   }
   
//ліквідуєио строку "text@
   
if(isset($_GET["text"]));unset($_GET["text"]);
   
// В файл "1.txt" зберігаємо IP, останню строку та ID. 
   
file_put_contents('1.txt'$_SERVER["REMOTE_ADDR"]. ' ' .$_SESSION["last"]. '-›' .$_GET["PHPSESSID"].PHP_EOL,FILE_APPEND);
   exit();  
?>


Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

ivan_fd

Цитата: Игорь від 26-01-2022, 23:50:14То ти вже дав доступ

Доступ маєте тільки ви.

ИгорьTopic starter

Файл - твоя iндивідуальна інтелектуальна власність. Кому та на яких умовах давати до неї доступ - твоя справа. Вважаю, що це не має бути безкоштовним. Це додаткові можливості, що не впливають на працеспроможніть пристроїв, але дають додаткові зручності.
Зручності не мають бути безкоштовними. Але це моя суб'єктивна думка, рішення за тобою.


Станом на сьогодні ніхто не може скористатися цими можливостями. Завтра - післязавтра до трьох власників поїдуть перші 5 пристроїв, що здатні спілкуватись зі смартфоном крізь сервер.
Хай попрацюють декілька днів, може вилізуть якись вила :)

Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

ivan_fd

Протестувати з вашим симулятором може кожен бажаючий, вірно?

Хто буде давати запит на скачування файлу, буду давати доступ, хай тестують.
Додаток - безкоштовний! Ну хіба що комусь дуже сподобається і схоче віддячити.
Всім удачі!

SMF spam blocked by CleanTalk