Одно из главнейших достоинств ObjectScript - то, как он работает с формами HTML. Здесь основным является то, что каждый элемент формы автоматически становится доступным программам на OS. Для подробной информации об использовании форм в ObjectScript читайте раздел Переменные извне OS.

Cтраница с формой HTML

<%
  require "../../framework/components/webcore"
%><!DOCTYPE html>
<html>
<head>
  <title>Dealing with Forms in ObjectScript</title>
</head>
<body>
  <% if(_POST.name != ""){ %> 
  <p>Hi <%=html.encode(_POST.name)%>. 
     You are <%=toNumber(_POST.age)%> years old.</p>
  <hr />
  <% } /* if */ %>
  <form action="" method="post">
    <p>Enter your name: <input type="text" name="name" /></p>
    <p>Enter your age: <input type="text" name="age" /></p>
    <p><input type="submit" /></p>
  </form>
</body>
</html>

В начале страницы мы подключаем библиотеку webcore с помощью функции require.

Замечание

Библиотека webcore содержит базовые функции для веб-разработки, такие как header, setCookie, буферизованный вывод ob, а также механизм автоматической подгрузки файлов используемых классов.

Далее на странице есть форма HTML с двумя полями для ввода. Когда пользователь заполнит форму и нажмет кнопку отправки, будет вызван обработчик в виде этой же страницы.

Код программы, который обрабатывает данные формы, у нас следующий:

  <% if(_POST.name != ""){ %> 
   <p>Hi <%=html.encode(_POST.name)%>.
      You are <%=toNumber(_POST.age)%> years old.</p>
   <hr />
  <% } /* if */ %>

Обратите внимание, как чередуются вставки ObjectScript и HTML.

Пример вывода нашей программы

Hi Evgeniy. You are 35 years old.

Если не принимать во внимание куски кода с html.encode и toNumber, то принцип работы данного кода должен быть прост и понятен. html.encode обеспечивает правильную кодировку особых HTML-символов так, чтобы вредоносный HTML или Javascript не был вставлен на нашу страницу. Поле age, о котором нам известно, что оно должно быть числом, мы можем просто преобразовать в число, вызвав функцию toNumber, что автоматически избавит нас от нежелательных символов.

Переменные _POST.name и _POST.age автоматически установлены для нас средствами OS. Ранее мы использовали глобальную переменную _SERVER, здесь же мы точно так же используем глобальную переменную _POST, которая содержит все POST-данные. Заметим, что метод отправки (method) нашей формы - POST. Если бы мы использовали метод GET, то информация нашей формы была бы в глобальной переменной _GET.

Мы можем использовать следующие специальные глобальные переменные при веб-разработке на OS: _SERVER, _POST, _GET, _COOKIE и _FILES.

Fork me on GitHub