Заявка №2. Простейший анонимайзер

Вторая просьба была такова — описать работу простейшего анонимайзера. Ну-с приступим. Сначала теория. Сайт для браузера — это последовательность всяких символов, именуемых html-кодом. В самом простом случае мы должны эту последовательность символов считать и куда-то записать. Что-то типа такого:


<?php
$url = fopen ("http://makson.ru", "r");
$file = fopen ("site.html", "w");
$k = "";
while (!feof($url)) {
$i = fgets ($url);
$k = $k.$i;
}
fputs ($file,$k);
?>

Разберём по-строчно.
1. $url = fopen («http://makson.ru», «r»); — функция fopen открывает файл или url. Режим ‘r’ открывает файл только для чтения и помещает указатель в начало файла.

2. $file = fopen («site.html», «w»); — аналогично, но режим ‘w‘ открывает файл только для записи; помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует — пробует его создать.

3. Переменной $k пока задаём пустое значение.

4. while (!feof($url)) { — указывает PHP выполнять вложенные выражения повторно до тех пор, пока выражение в самом while является TRUE. Функция feof() проверяет, достигнут ли конец файла. Знак ‘!‘ в php является знаком отрицания, то есть цикл будет работать пока не будет достигнут конец файла.

5. $i = fgets ($url); — функция fgets читает строку из файлового указателя. В нашем случае указатель на файл — переменная $url. Указатель на файл должен быть корректным и указывать на файл, успешно открытый функциями fopen() или fsockopen() (и все еще не закрытым функцией fclose()).

6. $k = $k.$i; — переменная $k равняется самой себе плюс значение переменной $i (строка). То есть цикл накладывает содержимое строк файла друг на друга.

8. fputs ($file,$k); — функция известна также, как fwrite. Записывает содержимое в файловый поток. То есть в site.html будет записано значение переменной $k.

Простейший анонимайзер готов, конечно, для динамических сайтов оно не годится.
А вот для отображения в браузере нужно этот самый браузер сэмулировать путём передачи заголовков (HTTP/1.1 — RFC 2068). Как-нибудь напишу об этом.

Заявка №1. Кириллица в латиницу.

Потихоньку начинаем работать в рамках практики , как видите появилась новая рубрика «по заявкам.» Первая просьба оказалась довольно простой — нужно сделать перекодировщик русских букв в латинские. При этом никаких особых условий обговорено не было,а стало быть рассмотрим наиболее простой вариант, состоящий из маленькой web-формы и функции. Начнём с web-формы.

<!DOCTYPE html>
<html>
<head>
<title>Конвертер CYR-LAT</title>
</head>
<body>
 <form action="" method="post">
 <p>
 <textarea name="src" cols="50" rows="10"></textarea>
 </p>
 <p><input type="submit" value="Перекодировать">
 </form>
</body>
</html>

Здесь всё предельно просто, право не знаю стоит ли подробно описывать формочку. Хотя повторение — мать учения — так что кратко описываем по строкам.

1. <!DOCTYPE html> — доктайп (doctype) не является html-тегом в чистом виде. Это инструкция браузеру, указывающая версию языка разметки. В данном случае мы используем HTML 5.

2. <html> — ну тут всё понятно, тег-контейнер, содержащий в себе всё содержимое.

3. <head> — тег предназначен для хранения метатегов, использующихся для хранения информации, предназначенной поисковым системам и браузерам (например, заголовок страницы, ключевые слова, описание страницы и т.д.).

4.<title>Конвертер CYR-LAT</title> — здесь храним заголовок страницы.

5. </head> — соответственно закрываем тег «головы»

6. <body> — предназначен для хранения содержимого веб-страницы. «Тело» страницы.

7. <form action= » » method= «post» > — начало формы, action (действие) содержит в себе пустое строку, поскольку у нас скрипт в одном и том же файле, если бы мы передавали данные в какой-то другой файл,строка выглядела бы примерно так: form action= «myfile.php» . Ну а method = «post» указывает на то, как именно мы передаём данные, методом post или методом get. Само собой в данном случае предпочтительней post, поскольку не меняется адресная строка.

Читать дальше …

Нужна практика!

PHPВзялся за один крупные проект, а знаний не хватает для реализации. Поэтому в качестве практики предлагаю всем желающим оставлять в комментариях описания простеньких программок, которые Вам бы пригодились. Попробую что-нибудь изобразить на PHP. 🙂