Автор Тема: [Время, дата] чтение значений с сайта или локально  (Прочитано 584 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн retwyware [?]

  • Новичок
  • *
  • Сообщений: 10
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Версия AutoIt: 3.
3.3.14.5
Описание:
Всем привет. Мне нужно, чтобы таймер обратного брал значения времени с моего сайта из файла .ini и сохранял при закрытии эти значения на сервере, а после повторного запуска, считывал данные и продолжал отсчет с этого же значения времени.

Ну и чтобы это время выводилось в label и после истечения этого времени показывался бы messagebox
Примечания:
Если невозможно так сделать, то хотя бы локально, чтобы брались значения из ini файла рядом со скриптом

Русское сообщество AutoIt


Оффлайн retwyware [?]

  • Новичок
  • *
  • Сообщений: 10

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Мне кто-нибудь поможет? :(

Помечен как лучший ответ пользователем retwyware Отправлен Июль 15, 2018, 06:43:41

Оффлайн alex33 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1419
  • Репутация: 177
  • Пол: Мужской
    • alekssamos ВКонтакте
    • Награды
  • Версия AutoIt: 3.3.12.0
Код: AutoIt [Выделить]
Local $iMaxTime = 10, $sIniPath = @ScriptDir & "\timer.ini"
Local $hGUI = GUICreate("timer", 100, 50)
Opt("GUIOnEventMode", 1)
$hLabel = GUICtrlCreateLabel($iMaxTime, 5, 5, 25, 25)
GUISetOnEvent(-3, "_onclose")
GUISetState(@SW_SHOW, $hGUI)
$iMaxTime = Int(IniRead($sIniPath, "timer", "sec", $iMaxTime))
While 1
    IniWrite($sIniPath, "timer", "sec", $iMaxTime)
    GUICtrlSetData($hLabel, $iMaxTime)
    If $iMaxTime <= 0 Then ExitLoop
    Sleep(1000)
    $iMaxTime = $iMaxTime - 1
WEnd
GUIDelete($hGUI)
MsgBox(0, "таймер", "время вышло!", 30)

Func _onclose()
    Exit
EndFunc
 


Доступ к сайту как осуществляться будет, через FTP или через API скрипт, например, на PHP?
« Последнее редактирование: Июль 14, 2018, 19:23:40 от alex33 »

Оффлайн retwyware [?]

  • Новичок
  • *
  • Сообщений: 10

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Код: AutoIt [Выделить]
Local $iMaxTime = 10, $sIniPath = @ScriptDir & "\timer.ini"
Local $hGUI = GUICreate("timer", 100, 50)
Opt("GUIOnEventMode", 1)
$hLabel = GUICtrlCreateLabel($iMaxTime, 5, 5, 25, 25)
GUISetOnEvent(-3, "_onclose")
GUISetState(@SW_SHOW, $hGUI)
$iMaxTime = Int(IniRead($sIniPath, "timer", "sec", $iMaxTime))
While 1
    IniWrite($sIniPath, "timer", "sec", $iMaxTime)
    GUICtrlSetData($hLabel, $iMaxTime)
    If $iMaxTime <= 0 Then ExitLoop
    Sleep(1000)
    $iMaxTime = $iMaxTime - 1
WEnd
GUIDelete($hGUI)
MsgBox(0, "таймер", "время вышло!", 30)

Func _onclose()
    Exit
EndFunc
 


Доступ к сайту как осуществляться будет, через FTP или через API скрипт, например, на PHP?
Я не знаю, если вам не трудно, то сделайте вариант, который по вашему мнению проще. И спасибо за локальный вариант =)


Добавлено: Июль 15, 2018, 06:52:02
Код: AutoIt [Выделить]
Local $iMaxTime = 10, $sIniPath = @ScriptDir & "\timer.ini"
Local $hGUI = GUICreate("timer", 100, 50)
Opt("GUIOnEventMode", 1)
$hLabel = GUICtrlCreateLabel($iMaxTime, 5, 5, 25, 25)
GUISetOnEvent(-3, "_onclose")
GUISetState(@SW_SHOW, $hGUI)
$iMaxTime = Int(IniRead($sIniPath, "timer", "sec", $iMaxTime))
While 1
    IniWrite($sIniPath, "timer", "sec", $iMaxTime)
    GUICtrlSetData($hLabel, $iMaxTime)
    If $iMaxTime <= 0 Then ExitLoop
    Sleep(1000)
    $iMaxTime = $iMaxTime - 1
WEnd
GUIDelete($hGUI)
MsgBox(0, "таймер", "время вышло!", 30)

Func _onclose()
    Exit
EndFunc
 


Доступ к сайту как осуществляться будет, через FTP или через API скрипт, например, на PHP?
Наверно через ftp, я просто не хочу много вашего времени тратить
« Последнее редактирование: Июль 15, 2018, 07:15:39 от retwyware »

Русское сообщество AutoIt

Re: [Время, дата] чтение значений с сайта или локально
« Ответ #3 Отправлен: Июль 15, 2018, 06:48:45 »

Оффлайн alex33 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1419
  • Репутация: 177
  • Пол: Мужской
    • alekssamos ВКонтакте
    • Награды
  • Версия AutoIt: 3.3.12.0
Цитировать
Цитировать
Цитировать
Да что ж вы все цитируете по нескольку раз!!

Через FTP будет не безопасно, т.е. логин и пароль для доступа будут, по сути, в открытом доступе и каждый может этим воспользоваться, даже если скрипт скомпилирован, и нанести вред сайту. Так что лучше через скрипт. Самый распространенный - это PHP. Для этого, для сохранения значения можно будет использовать не ini файл, а просто обычный файл, иначе придется еще парсер ini прикручивать (PHP таких удобных Ini* функций не имеет).
Короче. Создаете у себя на сайте файл timer.php со следующим кодом: форум заменяет [ на &#91; это [
Код: (PHP) [Выделить]
  1. <?php
  2. $sPath = __DIR__ . '/timer_sec1.txt';
  3. if(isset($_GET&#91;'sec'])&&is_numeric($_GET&#91;'sec'])) {
  4.     $hFile = fopen($sPath, 'c') or die('error1');
  5.     flock($hFile, LOCK_EX) or die('error2');
  6.     ftruncate($hFile, 0) or die('error3');
  7.     fwrite($hFile, $_GET&#91;'sec']) or die('error3');
  8.     flock($hFile, LOCK_UN) or die('error5');
  9.     fclose($hFile) or die('error6');
  10.     print('ok');
  11. } else {
  12.     if(!file_exists($sPath)){
  13.         print('0');
  14.         exit();
  15.     }
  16.     print(file_get_contents($sPath));
  17. }
  18.  
Теперь у себя на компьютере  .au3 скрипт: (test.ru на свой сайт замени)
Код: AutoIt [Выделить]
Global $sTimerUrl = "http://test.ru/timer.php"
Global $iMaxTime
Local $bData = InetRead($sTimerUrl, 3) ; получаем (читаем) текущее значение
If @error Then Exit MsgBox(16, "", "Нет доступа к Интернет / к сайту", 30)
$iMaxTime = Int(BinaryToString($bData))

OnAutoItExitRegister("_saveTimer")
Local $hGUI = GUICreate("timer", 100, 50)
Opt("GUIOnEventMode", 1)
$hLabel = GUICtrlCreateLabel($iMaxTime, 5, 5, 25, 25)
GUISetOnEvent(-3, "_onclose")
GUISetState(@SW_SHOW, $hGUI)
While 1
    GUICtrlSetData($hLabel, $iMaxTime)
    If $iMaxTime <= 0 Then ExitLoop
    Sleep(1000)
    $iMaxTime = $iMaxTime - 1
WEnd
GUIDelete($hGUI)
MsgBox(0, "таймер", "время вышло!", 30)

Func _saveTimer()
    Local $bData = InetRead($sTimerUrl&"?sec="&$iMaxTime, 3) ; сохранение при выходе
    If @error Or BinaryToString($bData) <> "ok" Then MsgBox(16, "", "Ошибка сохранения. Нет доступа к Интернет / к сайту"&@CRLF&BinaryToString($bData), 30)
EndFunc
Func _onclose()
    Exit
EndFunc
 


Оффлайн retwyware [?]

  • Новичок
  • *
  • Сообщений: 10

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0


Всё работает, но таймер почему то показывает диалог через 1 секунду, не реагируя на изменение максимального времени

Оффлайн alex33 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1419
  • Репутация: 177
  • Пол: Мужской
    • alekssamos ВКонтакте
    • Награды
  • Версия AutoIt: 3.3.12.0
Ну как это не реагируя. Время максимальное установили? /timer.php?sec=60 , например?


Добавлено: Июль 15, 2018, 20:41:39
Или нужно чтобы прямо во время отсчёта можно было менять макс. время?

Оффлайн retwyware [?]

  • Новичок
  • *
  • Сообщений: 10

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Ну как это не реагируя. Время максимальное установили? /timer.php?sec=60 , например?


Добавлено: Июль 15, 2018, 20:41:39
Или нужно чтобы прямо во время отсчёта можно было менять макс. время?

Все, все. Я накосячил, спасибо)

Русское сообщество AutoIt

Re: [Время, дата] чтение значений с сайта или локально
« Ответ #7 Отправлен: Июль 15, 2018, 20:42:43 »

Оффлайн alex33 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1419
  • Репутация: 177
  • Пол: Мужской
    • alekssamos ВКонтакте
    • Награды
  • Версия AutoIt: 3.3.12.0
Я уж видел ваше письмо на почту. Только адрес, скорее всего, временный tempmail?


Добавлено: Июль 15, 2018, 20:44:46
А зачем Вам такой таймер? Как и где хотите его использовать? Почему не подошел локальный вариант?

Оффлайн retwyware [?]

  • Новичок
  • *
  • Сообщений: 10

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Я уж видел ваше письмо на почту. Только адрес, скорее всего, временный tempmail?


Добавлено: Июль 15, 2018, 20:44:46
А зачем Вам такой таймер? Как и где хотите его использовать? Почему не подошел локальный вариант?

Типо для того, чтобы дать по тестировать свою программу людям. Глупо конечно использовать такой механизм защиты, но все же

Русское сообщество AutoIt

Re: [Время, дата] чтение значений с сайта или локально
« Ответ #9 Отправлен: Июль 15, 2018, 20:56:07 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
10 Ответов
6561 Просмотров
Последний ответ Апрель 01, 2011, 01:12:20
от Kaster
4 Ответов
6099 Просмотров
Последний ответ Август 30, 2011, 12:26:13
от at
4 Ответов
3646 Просмотров
Последний ответ Октябрь 27, 2011, 21:08:58
от Zaramot
3 Ответов
3541 Просмотров
Последний ответ Февраль 07, 2012, 14:29:11
от joiner
3 Ответов
5379 Просмотров
Последний ответ Сентябрь 26, 2012, 17:41:07
от madmasles
4 Ответов
2714 Просмотров
Последний ответ Март 10, 2013, 01:33:20
от erlik
2 Ответов
2035 Просмотров
Последний ответ Октябрь 01, 2014, 07:19:33
от Tuner
2 Ответов
1327 Просмотров
Последний ответ Февраль 06, 2015, 14:27:18
от kristow13
6 Ответов
2282 Просмотров
Последний ответ Ноябрь 15, 2015, 17:46:47
от dexter987
5 Ответов
1981 Просмотров
Последний ответ Июнь 26, 2016, 17:49:34
от deep-north