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


Просмотров: 6

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


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

Разберём по-строчно.
1. $url = fopen (“https://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. Кириллица в латиницу.


Просмотров: 12

Потихоньку начинаем работать в рамках практики , как видите появилась новая рубрика “по заявкам.” Первая просьба оказалась довольно простой – нужно сделать перекодировщик русских букв в латинские. При этом никаких особых условий обговорено не было,а стало быть рассмотрим наиболее простой вариант, состоящий из маленькой 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, поскольку не меняется адресная строка.

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

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


Просмотров: 14

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