Вверх ↑
Этот топик читают: Гость
Ответов: 134
Рейтинг: 0
#1: 2025-02-26 11:50:04 ЛС | профиль | цитата
Приветствую!
Не могли бы вы поделиться примером - схемой работы веб сервера, созданного в HiAsm? Хочу разобраться на примере готовых схем, как-чего правильно делать...

Я нашел некий пример, и только начинаю его осваивать.

Add(MainForm,3006772,105,112)
{
Left=20
Top=105
Width=1206
Height=781
link(onCreate,4557003:##open,[])
}
Add(TCP_ServerEx,4557003,175,126)
{
link(onEvent2,5619286:doCharset,[])
link(onEvent21,9026241:doAdd,[(226,139)(226,186)])
}
BEGIN_SDK
Add(EditMultiEx,9971778,3,3)
{
WorkCount=#6:##open|
EventCount=#8:onEvent2|9:onEvent21|
Width=916
Height=389
}
Add(TCP_Connection,916654,42,56)
{
link(onRead,6368625:doEvent1,[(96,62)(96,13)])
}
Add(FormatStr,14028257,683,231)
{
Mask="%2Content-Length: %1\n\r\n\r"
link(onFString,5832223:doWork2,[])
link(Str1,6544603:Size,[(689,216)(650,216)])
link(Str2,2893471:Text,[])
}
Add(Convertor,8776093,637,273)
{
Mode=11
link(onResult,5832223:doWork3,[(739,279)])
link(Data,6544603:Stream,[])
}
Add(StrList,2893471,690,162)
{
Strings=#15:HTTP/1.1 200 OK|32:Server: mywebserver/1.0.0(Win32)|
}
Add(BlockFind,6091776,203,56)
{
IncludeBlock=1
StartBlock="GET "
EndBlock=" HTTP"
link(onSearch,12312877:doReplace,[])
}
Add(Hub,2110309,553,168)
{
OutCount=4
link(onEvent1,6544603:doOpen,[])
link(onEvent2,14028257:doString,[(618,181)(618,237)])
link(onEvent3,8776093:doConvert,[(611,188)(611,279)])
link(onEvent4,6544603:doClose,[(626,195)(626,181)])
}
Add(HubEx,2954087,735,112)
{
Angle=3
link(onEvent,916654:doSend,[(739,37)(30,37)(30,69)])
}
Add(Replace,12312877,245,56)
{
SubStr="/"
DestStr="\\"
link(onReplace,8984929:doStrCat,[])
}
Add(StrCat,8984929,287,56)
{
Str1="www"
link(onStrCat,15918594:doEvent1,[])
}
Add(Memory,14307555,378,56)
{
link(onData,2500498:doFileExists,[(422,62)(422,83)])
}
Add(FileStream,6544603,637,168)
{
link(FileName,14307555:Value,[(643,152)(384,152)])
}
Add(HubEx,5832223,735,231)
{
Angle=3
link(onEvent,2954087:doWork3,[])
}
Add(FileTools,2500498,434,56)
{
link(onEnd,12755746:doEvent,[])
}
Add(IndexToChanel,12755746,483,56)
{
link(onEvent1,10876968:doData,[(576,62)(576,118)])
link(onEvent2,2110309:doEvent1,[(534,69)(534,174)])
}
Add(DoData,10876968,637,112)
{
link(onEventData,2954087:doWork2,[])
link(Data,7685006:Text,[])
}
Add(StrList,7685006,637,49)
{
Strings=#15:‹!DOCTYPE html›|0:|6:‹head›|0:|30: ‹title›Форма входа‹/title›|576: ‹style› body { font-family: Arial, sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; } form { border: 1px solid #ccc; padding: 20px; border-radius: 10px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } label { display: block; margin-bottom: 10px; } input { width: 200px; padding: 10px; margin-bottom: 15px; border: 1px solid #ccc; border-radius: 5px; } button { background-color: #4CAF50; color: white; padding: 12px 20px; border: none; border-radius: 5px; cursor: pointer; } button:hover { background-color: #45a049; } ‹/style›|7:‹/head›|6:‹body›|40: ‹form action="/login" method="post"›|28: ‹h2›Форма входа‹/h2›|43: ‹label for="firstName"›Имя:‹/label›|68: ‹input type="text" id="firstName" name="firstName" required›|8: |46: ‹label for="lastName"›Фамилия:‹/label›|66: ‹input type="text" id="lastName" name="lastName" required›|8: |48: ‹button type="submit"›Отправить‹/button›|11: ‹/form›|7:‹/body›|7:‹/html›|
}
Add(Hub,6368625,119,7)
{
link(onEvent1,6091776:doSearch,[(168,13)(168,62)])
link(onEvent2,9971778:onEvent2,[(536,20)(536,9)])
}
Add(Hub,15918594,329,56)
{
link(onEvent1,14307555:doValue,[])
link(onEvent2,9971778:onEvent21,[(597,69)(597,16)])
}
END_SDK
Add(RichEdit,13943924,343,126)
{
Left=5
Top=5
Width=255
Height=735
}
Add(RichEdit,9026241,348,180)
{
Left=265
Top=-5
Width=275
Height=735
}
Add(Hub,7211714,294,126)
{
link(onEvent1,13943924:doClear,[(326,132)(326,139)])
link(onEvent2,13943924:doAdd,[(326,139)(326,132)])
}
Add(Charset,5619286,245,126)
{
Type=11
link(onCharset,7211714:doEvent1,[])
}
Add(WebBrowser,12805476,602,161)
{
Left=545
Top=15
Width=640
Height=540
URL="192.168.1.39"
}
Add(Timer,737055,518,161)
{
Interval=50
AutoStop=1
link(onTimer,11335578:doIPByHost,[])
}
Add(Host,11335578,560,154)
{
link(onIPByHost,12805476:doNavigate,[])
}



Цель: создать в локальной сети веб страничку с формой авторизации. Что то типа личного кабинета. И в этом личном кабинете нужно будет заполнить несколько полей и отправить на сервер.
карма: 0

0
Ответов: 865
Рейтинг: 186
#2: 2025-02-26 14:24:19 ЛС | профиль | цитата
Пример поправил. Нужно что-то типа этого?
https://forum.hiasm.com/getfile/39719
карма: 18

1
файлы: 1Веб сервер станица с запросом.zip [1.5KB] [48]
Голосовали:Gitarist
Ответов: 4639
Рейтинг: 755
#3: 2025-02-26 21:08:26 ЛС | профиль | цитата
Глянь ещё это: /topic/65739
карма: 26

1
Голосовали:Gitarist
Ответов: 134
Рейтинг: 0
#4: 2025-02-28 03:41:32 ЛС | профиль | цитата
Gunta писал(а):
Пример поправил. Нужно что-то типа этого?
https://forum.hiasm.com/getfile/39719

Ну почти))

Извиняюсь за нубство заранее)
Вот мне нужно создать страничку с авторизацией, вводим логин и пароль 11 и 22 , попадаем в личный кабинет. Я так понимаю всю логику можно прописывать в HiAsm, а клиенту в браузер можно только HTML код посылать, не подключая PHP Javascript итд... ?
Посмотрите пожалуйста, почему всё друг на друга накладывается при входе в ЛК, в моем примере?

Add(MainForm,3006772,154,112)
{
Left=20
Top=105
Width=322
Height=350
Point(Handle)
link(onCreate,11860321:doEvent1,[])
}
Add(TCP_ServerEx,4557003,252,133)
{
}
BEGIN_SDK
Add(EditMultiEx,9971778,3,3)
{
WorkCount=#6:##open|
EventCount=#8:onEvent2|9:onEvent21|
Width=734
Height=291
}
Add(TCP_Connection,916654,98,91)
{
link(onRead,15067877:doCharset,[])
link(onConnect,800713:doDeferredEvent,[(146,104)(146,118)])
}
Add(Replace,2887183,210,112)
{
SubStr="\r"
link(onReplace,2607208:doWork1,[(256,118)])
link(Str,7685006:Text,[])
}
Add(DeferredEvent,800713,161,112)
{
link(onDeferredEvent,2887183:doReplace,[])
}
Add(StrList,2903559,602,35)
{
Strings=#15:<!DOCTYPE html>|6:<head>|0:|74: <meta name="viewport" content="width=device-width, initial-scale=1.0">|31: <title>Привет, мир!</title>|192: <style> body { display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; font-family: Arial, sans-serif; } h1 { font-size: 48px; text-align: center; } </style>|7:</head>|6:<body>|48: <h1>Привет, мир! Это личный кабинет! ))</h1>|65: <label for="numberSelect">Выберите номер:</label><br>|54: <select id="numberSelect" name="numberSelect">|40: <option value="1">1</option>|40: <option value="2">2</option>|40: <option value="3">3</option>|40: <option value="4">4</option>|40: <option value="5">5</option>|25: </select><br><br>|7:</body>|7:</html>|
}
Add(DoData,13791398,602,91)
{
link(onEventData,2607208:doWork2,[(655,97)(655,169)])
link(Data,2903559:Text,[])
}
Add(If_else,15130690,511,91)
{
link(onTrue,13791398:doData,[])
link(Op2,1789332:Text,[])
}
Add(Charset,15067877,315,91)
{
Type=11
link(onCharset,3784438:doExec,[])
}
Add(RE_Search,3784438,364,91)
{
Expression="login=\S+&password=\S+"
link(onMatch,11726913:doReplace,[])
}
Add(Replace,11726913,413,91)
{
SubStr="login="
link(onReplace,10812837:doReplace,[])
}
Add(Replace,10812837,455,91)
{
SubStr="password="
link(onReplace,15130690:doCompare,[])
}
Add(VisualStrings,1789332,518,49)
{
Lines=#5:11&22|
Width=60
}
Add(HubEx,2607208,252,163)
{
Angle=2
link(onEvent,916654:doSend,[(65,169)(65,104)])
}
Add(StrList,7685006,210,42)
{
Strings=#0:|0:|6:<head>|0:|30: <title>Форма входа</title>|576: <style> body { font-family: Arial, sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; } form { border: 1px solid #ccc; padding: 20px; border-radius: 10px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } label { display: block; margin-bottom: 10px; } input { width: 200px; padding: 10px; margin-bottom: 15px; border: 1px solid #ccc; border-radius: 5px; } button { background-color: #4CAF50; color: white; padding: 12px 20px; border: none; border-radius: 5px; cursor: pointer; } button:hover { background-color: #45a049; } </style>|7:</head>|6:<body>|40: <form action="/login" method="post">|28: <h2>Форма входа</h2>|41: <label for="login">Логин:</label>|60: <input type="text" id="login" name="login" required>|8: |45: <label for="password">Пароль:</label>|66: <input type="text" id="password" name="password" required>|8: |44: <button type="submit">Войти</button>|11: </form>|7:</body>|7:</html>|
}
END_SDK
Add(Timer,737055,294,273)
{
AutoStop=1
link(onTimer,11335578:doIPByHost,[])
}
Add(Host,11335578,343,266)
{
link(onIPByHost,7742432:doStrCat,[])
}
Add(WinExec,9198756,462,266)
{
}
Add(StrCat,7742432,406,273)
{
Str1="http://"
link(onStrCat,9198756:doShellExec,[])
}
Add(Hub,11860321,196,126)
{
link(onEvent1,7407180:doPopup,[(221,132)(221,153)(144,153)(144,188)])
link(onEvent2,4557003:##open,[])
}
Add(WinTools,7407180,154,175)
{
link(Handle,3006772:Handle,[])
}

карма: 0

0
Ответов: 865
Рейтинг: 186
#5: 2025-02-28 05:25:04 ЛС | профиль | цитата
Gitarist писал(а):
Посмотрите пожалуйста, почему всё друг на друга накладывается при входе в ЛК, в моем примере?

Нужно скрывать форму принудительно.
https://forum.hiasm.com/getfile/39720
карма: 18

1
файлы: 1Веб сервер станица с авторизацией.zip [1.7KB] [29]
Голосовали:Gitarist
Ответов: 134
Рейтинг: 0
#6: 2025-02-28 07:24:09 ЛС | профиль | цитата
Gunta писал(а):
Gitarist писал(а):
Посмотрите пожалуйста, почему всё друг на друга накладывается при входе в ЛК, в моем примере?

Нужно скрывать форму принудительно.
https://forum.hiasm.com/getfile/39720


Спасибо.
это вот этой строкой, я так понимаю, делается <style> form { visibility:hidden; } </style>?
карма: 0

0
Ответов: 865
Рейтинг: 186
#7: 2025-02-28 23:52:57 ЛС | профиль | цитата
Gitarist писал(а):
это вот этой строкой, я так понимаю, делается <style> form { visibility:hidden; } </style>?

Да
карма: 18

0
Ответов: 202
Рейтинг: 2
#8: 2025-03-08 18:22:58 ЛС | профиль | цитата
В Firefox 136.0 (64-разрядный) у меня не работает веб страница не открывается пока не закроешь окно формы.(После закрытия вебстраница отображается, но потом соответсвенно тоже не работает так как сервер закрыт.

В Microsoft Edge Версия 133.0.3065.92 (Официальная сборка) (64-разрядная версия) веб страница с формой авторизации открывается и все вроде нормально работает.

в яндекс браузере Версия 25.2.1.887 (64-bit) работает
Интересно с чем связано что в фаирфоксе не работает.
карма: 0

0
Ответов: 865
Рейтинг: 186
#9: 2025-03-08 19:05:10 ЛС | профиль | цитата
zhorik5 писал(а):
В Firefox 136.0 (64-разрядный) у меня не работает веб страница не открывается пока не закроешь окно формы.(После закрытия вебстраница отображается, но потом соответсвенно тоже не работает так как сервер закрыт.

Да действительно не хочет работать в Firefox. Пока не понятно почему.
карма: 18

0
9
Сообщение
...
Прикрепленные файлы
(файлы не залиты)