HTTP
HTTP Response Content-Type
- Charset – без него в мобильного браузере могут быть кракозябры т.к. по умолчанию кодировка в cp1251.
- test/http – если указать text/plain может не работать выгрузка страницы разными утилитами типа PHP file_get_contents, PHP stream_get_contents (в том числе, как я понимаю, поисковыми).
HTTP versions
$ 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>