Network: HTML, HTTP разные хинты

HTTP
HTTP Response Content-Type
В ответе http лучше всего выставлять Content-Type: text/http; charset=utf-8
  • Charset – без него в мобильного браузере могут быть кракозябры т.к. по умолчанию кодировка в cp1251.
  • test/http – если указать text/plain может не работать выгрузка страницы разными утилитами типа PHP file_get_contents, PHP stream_get_contents (в том числе, как я понимаю, поисковыми).
HTTP versions
HTTP 1.0/1.1 по разному себя ведут (1.0 требует 3WHS для каждого запроса с разрывом, а 1.1 в рамках одного соединения позволяет передать несколько запросов). Поэтому пропускная способность для этих протоколов отличается. Большая часть серверов давно уже поддерживает и работает по HTTP 1.1.
$ curl --head weril.me HTTP/1.1 200 OK Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.3.13 X-Powered-By: PHP/7.3.13 Link: <https://weril.me/wp-json/>; rel="https://api.w.org/" Content-Type: text/html; charset=UTF-8
  • будущее за HTTP 2.0 (HTTP/2) и HTTP 3.0 (HTTP/3). Facebook уже начинает использовать HTTP/3 совместно с QUIC – заменой TCP!
  • наиболее расспространена версия HTTP 1.1
  • в версии HTTP 1.1 добавлена
    • http persistent connection – возможность последовательной отправки нескольких транзакций в рамках одного tcp connection (не нужно устанавливать tcp для каждой транзакции)
    • http pipleined connection – возможность одновременной отправки нескольких транзакций в рамках одного tcp connection
http CODES

http 304 not modified – браузер из кеша показывает странице т.к. он не изменена по сравнению с содержимым на сервере. Браузер передает строку (hash), по этой строке сервер сравнивает текущее содержимое и то, которое было у клиента – если ничего не поменялось, значит выдаем http 304.

HTTP get/post

Передача

Для GET не обязательно указывать метод. Если не указывать action, то будет вызвана повторно текущая страница и на нее будут передан запрос выбранным методом.

Примеры:

echo "<form action=test2.php>";
echo "<input type=submit name=s_button value=\"Выгрузить\" id=\"submit\">";
echo "<input type=\"hidden\" name=\"test\" value=\"$test\"/>";
echo "</form>";

echo "<form action=test2.php method=\"post\">";
echo "<input type=submit name=s_button value=\"Выгрузить\" id=\"submit\">";
echo "<input type=\"hidden\" name=\"test\" value=\"$test\"/>";
echo "</form>";

И то что прямо наболело – не нужно передавать SQL-запросы, особенно с помощью GET, даже в корпоративной сети. Это жесть.

http://<site>/<script><variable=><SQL statement типо SELECT id FROM table WHERE type = blablabla>

Прием и вывод

Выводим на экран весь POST/GET:

print_r($_POST);
print_r($_GET);

Выводим на экран конкретную переменную в POST/GET:

print_r($_POST['data']);

print_r($_GET['data']);

Передача массива

см. в примере по генерации xlsx

Сохранение формы запроса

При приеме данных на странице, можно заполнить форму этими данными путем провески условия. Причем все данные можно так заполнить – и чекбоксы и меню и просто поля для ввода.

  // CHECKBOX
 if (isset($_POST['test']))
 {
 echo "<input type=checkbox name=test value=yes checked></td>";
 }
 else
 {
 echo <input type=checkbox name=test value=yes></td>";
 }
// select
echo "<option selected value=\"$val\">$val</option>";
echo "<option value=\"$val\">$val</option>";
// text
echo "<input type='text' name=fd size=11 value=\"$val\";
echo "<input type='text' name=fd size=11> </td>";

 

HTML

Tags

<hr> – нарисовать прямую на весь экран

 

Ссылки (a href) 

  • target=\”_new\” – открывает новую страницу, но если сделаны несколько _new, то открытие будет в одной вкладке
  • target=\”_blank\” – открывает новую страницу и если сделаны несколько _blank, то открытие будет в разных вкладках

 

Границы для блока

Правильный способ делать отступы для блока текста/таблиц и прочего не через жесткие backspace в html коде или формирование таблиц, а через блоки div и установки для них margin.

<div style="margin: 10px;">
   ТУТ БЛОК ТЕКСТА/ТАБЛИЦ
</div>

 

Тип текстового поля

В html можно разные типы текстового поля указать помимо text, например password, email, number (HTML5), search.

  • В случае password все вводимые данные будут закрываться звездочками.
<input type="password" name="password" class="form-control"/>
  • В случае number на мобильных устройствах открывается цифровая клавиатура.
<input type="number" name="sms-code" class="form-control"/>
  • В случае email браузерами зачастую проверяется формат.
  • Удобное для большого по объему текста окно делается через textarea
<textarea class=\"text\" cols = 60 rows = 3 wrap = soft name=\"comment\">$comments</textarea>

Leave a Reply