Викиучебник ruwikibooks https://ru.wikibooks.org/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0 MediaWiki 1.47.0-wmf.22 first-letter Медиа Служебная Обсуждение Участник Обсуждение участника Викиучебник Обсуждение Викиучебника Файл Обсуждение файла MediaWiki Обсуждение MediaWiki Шаблон Обсуждение шаблона Справка Обсуждение справки Категория Обсуждение категории Полка Обсуждение полки Импортировано Обсуждение импортированного Рецепт Обсуждение рецепта Задача Обсуждение задачи TimedText TimedText talk Модуль Обсуждение модуля Event Event talk PHP 0 2340 270186 265728 2026-10-06T06:02:40Z Или Редактор 79899 /* */ стилевые правки 270186 wikitext text/x-wiki {{Название учебника |Категория = Веб-разработка, Программирование |Тип = Многостраничный }} {{wikipedia}} '''PHP''' (произносится ''пи-эйч-пи́'')&nbsp;— [[w:скриптовый язык|скриптовый язык]] программирования, созданный для генерации [[w:HTML|HTML]]-страниц на [[w:веб-сервер|веб-сервере]] и работы с [[w:база данных|базами данных]]. На сегодняшний момент поддерживается на подавляющем большинстве [[w:хостинг|хостингов]]. Входит в [[w:LAMP|«LAMP»]] — «стандартный» набор для создания [[w:сайт|веб-сайтов]]. == Комментарии == '''PHP''' предоставляет несколько методов для вставки комментариев. Проще всего пользоваться двойной косой чертой (//), после чего '''PHP'''-машина игнорирует всё, что расположено до конца строки. Также можно пользоваться многострочными комментариями в стиле "C" / [[C++|"С++"]] (/*…*/). Для однострочных комментариев можно ещё пользоваться символом решётки (#) (комментарий сценарных языков операционной системы [[UNIX|"UNIX"]]). <syntaxhighlight lang="php"> <?php print '<p>Hello</p>'; // Комментарий print '<p>Hello</p>'; # Комментарий /* Комментарий ... и это тоже комментарии */ // Комментарии очень удобны в тех случаях, // когда необходимо исключить часть кода // для отладки программы; например: $uname = $_POST['uname']; // $uname = preg_replace('#[^a-zA-Z0-9\_\-\.]#', '', $uname); // Закомментировали часть кода, // так как не выводится желаемый результат; // возможно, дело в этой строке: echo $uname; # Изначально, комментарии создавались для того, // чтобы, не нарушая работы программы, // добавить описание к той или иной строке; // например: echo getUsersOnline(2, 1, 4); /* Аргументы функции: 0 - номер открытого соединения с базой данных; 1 - режим ответа ("0" - массив / "1" - строка); 2 - кол-во минут, прошедших с момента последней активности пользователя (необязательный) */ ?> </syntaxhighlight> Следует помнить о том, что стили комментариев '''PHP''' действуют только внутри ограничителей '''PHP'''. Если '''PHP''' встретит эти символы комментариев вне ограничителей, то они, как и любой текст, будут помещены на HTML-страницу. Например: <syntaxhighlight lang="php"> <?php print '<p>Hello</p>'; //Нормальный комментарий. ?> </syntaxhighlight> <syntaxhighlight lang="html5"> // А вот этот комментарий отобразится браузером. <!-- Комментарий HTML. Будет виден в исходном коде HTML, но не в браузере. --> </syntaxhighlight> == Переменные == В '''РНР''' переменные начинаются со знака доллара ($). За этим знаком может следовать любое количество буквенно-цифровых символов и символов подчёркивания, но первый символ не может быть цифрой. Следует также помнить, что имена переменных в '''РНР''' чувствительны к регистру, в отличие от ключевых слов. При объявлении переменных в '''РНР''' не требуется явно указывать тип переменной; при этом одна и та же переменная может иметь на протяжении программы разные типы. Переменная инициализируется в момент присвоения ей значения и существует до тех пор, пока выполняется программа (в случае ''web''-страницы — пока не завершён запрос) или она не будет удалена функцией <code>unset()</code>. === Функции вывода === В '''PHP''' существует несколько способов вывести что-либо в [[w:Веб-страница|веб-страницу]]: {| class="wikitable" !Средство !Результат |- |Операторы <code>echo</code> и <code>print</code> |Выводят значение аргумента, одним и тем же образом. Различие: <code>print</code> — всегда возвращает "1"; <code>echo</code> — ничего не возвращает. |- |Функция <code>print_r()</code> |Позволяет корректно выводить массивы. |- |Функция <code>var_dump()</code> |Выводит переменную вместе с типом. Очень удобный инструмент для отладки. |} ==== Вывод различных функций ==== {| class="wikitable" ! Аргумент ! <code>echo</code> ! <code>print_r()</code> ! <code>var_dump()</code> |- | <code>1</code> | <code>1</code> | <code>1</code> | <code>int(1)</code> |- | <code>1.1</code> | <code>1.1</code> | <code>1.1</code> | <code>double(1.1)</code> |- | <code>false</code> | style="background-color: lightred" | &nbsp; | style="background-color: lightred" | &nbsp; | <code>bool(false)</code> |- | <code>array( 1, 2, 3 )</code> | <code>Array</code> | <code>Array ( [0] => 1 [1] => 2 [2] => 3 ) </code> | <code>array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }</code> |- | <code>"Test"</code> | <code>Test</code> | <code>Test</code> | <code>string(4) "Test"</code> |} === Типы данных в РНР === Как уже было сказано, '''PHP''' предоставляет определённую гибкость в отношении типов переменных, — то есть, с одной и той же переменной на протяжении программы можно работать ''и как со строкой, и как с числом.'' Однако несмотря на это, в '''РНР''' существует набор основных типов данных, которые могут явно указываться при работе с переменными: {| class="wikitable" !Обозначение !Тип данных |- |integer |Целое число. |- |string |Строка символов. |- |boolean |Двоичное данное (либо «Истина», либо «Ложь»). |- |double |Десятичное число; 1—2 значащих разряда в дробной части. |- |float |Десятичное число с плавающей точкой. Более 2 значащих разрядов в дробной части. |- |[[PHP/Массивы|array]] |Массив объектов. |- |object |Объект. |- |NULL |Пустой тип. |- |Resource |Ресурс. |} Есть функция <code>gettype()</code>, возвращающая тип, который '''РНР''' назначил переменной: <syntaxhighlight lang="php"> <?php $var1 = '5'; $var2 = 5; echo gettype($var1) # Будет возвращено: "string". . '<br>' # Операция "." используется для склеивания строк. . gettype($var2); # Будет возвращено: "integer". ?> </syntaxhighlight> Существует также функция <code>settype()</code>, которая явно устанавливает тип: <syntaxhighlight lang="php"> <?php $var = '5'; echo gettype($var); # Будет возвращено: "string". settype($var, 'integer'); echo '<br />' . gettype($var); # Будет возвращено: "integer". ?> </syntaxhighlight> Кроме функции <code>settype()</code>, преобразование типов в '''РНР''' можно осуществлять при помощи операторов преобразования типов. Преобразование типов осуществляется путём указания перед переменной её нового типа, взятого в скобки:<syntaxhighlight lang="php"> $var = (integer)$var; </syntaxhighlight> Соответственно, выполнение следующего кода приведёт к тому, что '''РНР''' вернёт «''integer»'': <syntaxhighlight lang="php"> <?php $var = '5'; # Изначально, создаётся переменная типа "string" (строковая). $var = (integer)$var; # Преобразуем её тип в "integer" (целочисленный). echo gettype($var); # Отображаем окончательный тип переменной: "integer". ?> </syntaxhighlight> === Внешние переменные === После того, как запрос клиента проанализирован веб-сервером и передан '''РНР'''-интерпретатору, последний устанавливает ряд переменных, которые содержат данные запроса и доступны всё время его выполнения. Сначала '''PHP''' инициализирует массивы <code>$_ENV</code> (содержащий переменные среды-окружения; англ. ''environment'') и <code>$_SERVER</code><ref>. На самом деле порядок инициализации суперглобальных массивов зависит от настроек в файле ''php.ini''</ref>. Ассоциативный массив <code>$_SERVER</code> содержит следующие ключи (индексы массива): {| class="wikitable" !Ключ (индекс ячейки массива) !Полный путь к ячейке массива !Содержимое ячейки массива |- |<code>HTTP_USER_AGENT</code> |<code>$_SERVER['HTTP_USER_AGENT']</code> |Сведения о браузере клиента. |- |<code>HTTP_ACCEPT</code> |<code>$_SERVER['HTTP_ACCEPT']</code> |Принимаемые MIME-типы. Может служить для определения возможностей браузера. |- |<code>PHP_SELF</code> |<code>$_SERVER['PHP_SELF']</code> |Путь к файлу, содержащему выполняющийся скрипт, относительно корневого каталога (папки) сервера. Пример: <code>/w/index.php</code>. |} Затем '''РНР''' заполняет переменную <code>$_GET[]</code>, являющуюся ассоциативным массивом, которая создаётся при анализе строки запроса. Строка запроса хранится в элементе массива <code>$_SERVER['QUERY_STRING']</code> и представляет собой информацию, следующую за символом «?» в запрошенном URL. '''РНР''' разбивает строку запроса по символам «&»<ref>Символ разделения также может меняться в файле ''php.ini''. Часто используется символ «;».</ref> на отдельные элементы, а затем ищет в каждом из этих элементов знак «=». Если знак «=» найден, то создаётся переменная с именем из символов, стоящих слева от знака равенства. Рассмотрим следующую форму: <syntaxhighlight lang="html5"> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title> Введите данные. </title> </head> <body> <form action="http://localhost/PHP/test.php" method="get"> <p> HDD: </p> <input type="text" name="HDD" /> <br /> <p> CD-ROM: </p> <input type="text" name="CD-ROM" /> <br /> <input type="submit" value="Отправить" /> </form> </body> </html> </syntaxhighlight> Если Вы сохраните этот фрагмент кода в виде HTML-файла и откроете его в веб-браузере, то увидите форму ввода. Если в строке «HDD» набрать какой-либо текст (к примеру, ''«''Maxtor»), и также в строке «CD-ROM» (например, «Nec»), то по нажатию на '''«Отправить»''' будет составлен запрос: <code>[http://localhost/PHP/test.php?HDD=Maxtor&CDROM=Nec http://localhost/PHP/test.php?HDD=Maxtor&CD-ROM=Nec]</code> — и при этом '''РНР''' создаст следующие элементы массива с соответствующими индексами (ключами): <code>$_GET['HDD'] = 'Maxtor'</code> и <code>$_GET['CDROM'] = 'Nec'</code>. Вы можете работать с ними (т.е. с этими переменными) из Вашего скрипта (у нас — "test.php") как с обычными переменными; в нашем случае — они просто выводятся на экран: <syntaxhighlight lang="php"> <?php echo "<p>HDD is " . $_GET['HDD'] . "</p>"; echo "<p>CDROM is " . $_GET['CDROM'] . "</p>"; ?> </syntaxhighlight> Если запрос страницы выполняется при помощи метода <code>POST</code>, то появляется группа ''POST''-переменных, которые интерпретируются так же и помещаются в массив <code>$_POST[]</code>. == Константы == Константы объявляются в '''РНР''' при помощи функции <code>define()</code>: <syntaxhighlight lang="php"> define('CONSTANT', value) </syntaxhighlight> Первый параметр этой функции — имя константы, второй — её значение. При использовании константы на неё ссылаются по имени: <syntaxhighlight lang="php"> <?php define('CONSTANT1', 15); define('CONSTANT2', "\x20"); //Шестнадцатеричный код символа пробела define('CONSTANT3', 'Hello'); echo CONSTANT1; echo CONSTANT2; echo CONSTANT3; ?> </syntaxhighlight> По традиции имена констант пишут буквами верхнего регистра. И хотя это только традиция, мы рекомендуем Вам следовать ей, поскольку «плохие» программисты получаются в том числе и из тех, кто не следовал хорошим традициям. Существует функция <code>defined()</code>, которая проверяет, определена ли константа: <syntaxhighlight lang="php"> <?php define('CONSTANT', 'Hello'); if(defined('CONSTANT')) echo '<p>CONSTANT is defined</p>'; ?> </syntaxhighlight> == Операторы == === Математические операторы === В '''PHP''', как и в любом другом языке программирования, есть базовый набор математических операторов: {| class="wikitable" !Оператор !Операция !Примечания |- |<code>-</code> |Смена знака числа. | |- |<code>-</code> |Вычитание. | |- |<code>+</code> |Сложение. | |- |<code>*</code> |Умножение. | |- |<code>/</code> |Деление. |Всегда возвращает тип <code>float</code>, вне зависимости от результата. |- |<code>%</code> |Деление по модулю. |Возвращает остаток от деления. |} === Инкремент и декремент === *Возвращают старое значение $a: **<code>$a++</code> — увеличить $a на 1; **<code>$a--</code> — уменьшить $a на 1. *Возвращают новое значение $a: **<code>++$a</code> — увеличить $a на 1; **<code>--$a</code> — уменьшить $a на 1. === Операторы сравнения === Существуют следующие операторы сравнения: {| |'''Оператор''' |'''Проверка''' |'''Условие истинности''' (возвращается <code>true</code>) |- | <code>$a == $b</code> |Равно | '''$a''' равно '''$b'''. |- | <code>$a === $b</code> |Идентично | '''$a''' равно '''$b''' и они одного и того же типа. |- | <code>$a != $b</code> или <code>$a <> $b</code> |Не равно | '''$a''' не равно '''$b'''. |- | <code>$a > $b</code> |Строго больше | '''$a''' строго больше '''$b'''. |- | <code>$a < $b</code> |Строго меньше | '''$a''' строго меньше '''$b'''. |- | <code>$a >= $b</code> |Больше или равно | '''$a''' или больше, или равно '''$b'''. |- | <code>$a <= $b</code> |Меньше или равно | '''$a''' или меньше, или равно '''$b'''. |} === Операторы присвоения === Для присвоения переменной нового значения используется оператор «<code>=</code>»: <syntaxhighlight lang="php"> $a = $b + $c - 127; </syntaxhighlight> Также существуют сокращённые операторы присвоения: <code>+=</code>, <code>-=</code>, <code>.=</code>, <code>/=</code>, <code>*=</code>, <code>%=</code>. Пример: <syntaxhighlight lang="php"> $a = $a + 1; #равносильно $a += 1; </syntaxhighlight> === Поразрядные операторы === Эта группа операторов работает с битовыми представлениями значений целочисленных операндов. В основном эти операторы применяются для создания набора булевых флагов: {| class="wikitable" |'''Оператор''' |'''Операция''' |- | <code>&</code> || Поразрядная конъюнкция (AND). |- | <code><nowiki>|</nowiki></code> || Поразрядная дизъюнкция (OR). |- | <code>^</code> || Поразрядное исключающее ИЛИ (XOR). |- | <code>~</code> || Поразрядное отрицание (NOT). |- | <code><nowiki><<</nowiki></code> || Битовое представления значения левого целочисленного операнда сдвигается влево, на количество разрядов, равное значению правого целочисленного операнда. |- | <code><nowiki>>></nowiki></code> || Битовое представление значения левого целочисленного операнда сдвигается вправо, на количество разрядов, равное значению правого целочисленного операнда. |} <syntaxhighlight lang="php"> <?php echo (4<<2); //16 echo "<br />"; echo (5>>1); //2 echo "<br />"; echo (6&5); //4 echo "<br />"; echo (6|5); //7 echo "<br />"; echo (6^5); //3 ?> </syntaxhighlight> === Операторы ветвления алгоритмов (if… elseif… else…) === Оператор <code>if</code> позволяет выполнять определённый код только при выполнении определённого условия: <syntaxhighlight lang="php"> <?php $a = 1; $b = null; $c = 2 * 3; $d = true; if($a) echo "if(\$a);<br />"; if($b) echo "if(\$b);<br />"; if($c) echo "if(\$c);<br />"; if(!$d) echo "if(!\$d);<br />"; if($a < $c) echo "\$a < \$c;<br />"; ?> </syntaxhighlight> Этот код выводит следующие строки: <pre>if($a); if($c); $a < $c; </pre> Чтобы выполнять код, только если условие не выполнилось — можно использовать блок <code>else</code>: <syntaxhighlight lang="php"> <?php if(isset($_GET['test'])) echo 'Query contains "test" parameter'; else echo 'Query doesn\'t contain "test" parameter'; ?> </syntaxhighlight> Можно использовать инструкцию <code>elseif</code> (англ. «иначе, если»): <syntaxhighlight lang="php"> <?php if($_GET['test'] == "foo") echo 'test = "foo"'; elseif(isset( $_GET['test'])) echo 'Query contains "test" parameter, but it isn\'t "foo"'; else echo 'Query doesn\'t contain "test" parameter'; ?> </syntaxhighlight> === Переключатель (switch) === <syntaxhighlight lang="php"> <?php $a = "A"; switch($a) { case 'A': echo 'Переменная имеет значение "А"'; break; case 'B': echo 'Переменная имеет значение "B"'; break; default: echo 'Ответ не найден'; } ?> </syntaxhighlight> Вышенаписанный пример выведет: «Переменная имеет значение „A“» — и то же выведет следующий пример: <syntaxhighlight lang="php"> <?php $a = "A"; if($a == "A") echo "Переменная имеет значение \"A\""; elseif($a == "B") echo "Переменная имеет значение \"B\""; else echo "Ответ не найден"; ?> </syntaxhighlight> === Операторы цикла === Операторы цикла задают многократное исполнение операторов в теле цикла. В '''PHP''' определены 4 разных оператора цикла: *Цикл с предусловием: <code>while(condition) { statements; }</code> *Цикл с постусловием: <code>do { statements; } while(condition);</code> *Итерационный цикл: <code>for(expression1; expression2; expression3) { statements; }</code> *Итерационный цикл <code>foreach</code> (т.е. перебор элементов массива): <code>foreach(array as [$key =>] $value) { statements; }</code> Если 3 первых оператора цикла берут своё начало от "[[C++|С]]"-подобных языков, то последний оператор позаимствован у языка "[[Perl]]". ==== while ==== Оператор <code>while</code> называется оператором цикла с предусловием. При входе в цикл вычисляется выражение условия, и, если его значение отлично от нуля, выполняется тело цикла. Затем — вычисления выражения условия и операторов тела цикла выполняется до тех пор, пока значение выражения условия не станет равным нулю. Оператором <code>while</code> удобно пользоваться для просмотра всевозможных последовательностей, если в конце них находится заранее известный символ. (Это очень удобно в "[[C++]]", — к примеру, для определения длины строки, — поскольку в "[[C++|С++]]", по определению, строка есть последовательность символов типа "char", заканчивающаяся нулевым символом: <code>\0</code>). Пример простейшего цикла <code>while</code>: <syntaxhighlight lang="php"> <?php $var = 5; $i = 0; while(++$i <= $var) echo $i . '<br />'; ?> </syntaxhighlight> Этот код выдает в окне браузера цифры от одного до пяти. Для выхода из цикла применяется оператор <code>break</code>. При обнаружении этого оператора все итерации прекращаются. Пример: при выполнении нижеприведённого цикла — несмотря на то, что переменная <code>$var = 7</code> — в окне браузера появятся цифры «1»—«5», исключая «6» и «7»: <syntaxhighlight lang="php"> <?php $var = 7; $i = 0; while(++$i <= $var) { echo $i . '<br />'; if($i == 5) break; } ?> </syntaxhighlight> Чтобы перейти в следующую итерацию применяется <code>continue</code>: <syntaxhighlight lang="php"> <?php $var = 7; $i = 0; while (++$i <= $var) { if($i == 5) continue; echo $i . '<br />'; } ?> </syntaxhighlight> В этом примере выводятся цифры «1»—«7», за исключением «5». Заметим, что если Вы расположите условный оператор после операторов <code>echo</code> — код будет ошибочным (т.к. выведутся все цифры, включая «5»), поскольку проверка условия выхода из итерации будет происходить уже после полного выполнения этой итерации. Бесконечный цикл реализуется при помощи оператора <code>while</code> следующим образом: <syntaxhighlight lang="php"> while(true) { ... } </syntaxhighlight> ''Примечание:'' в '''PHP''' стандартное время исполнения скрипта — 30 секунд (эту настройку можно изменить в файле "php.ini"); по его прошествии с начала выполнения скрипта действие скрипта будет прервано. Таким образом, наибольшее время выполнения «бесконечного» цикла (без изменения настроек) — полминуты. ==== do… while… ==== Этот оператор называется оператором цикла с пост-условием. При входе в цикл в любом случае выполняется тело цикла (то есть цикл ''всегда'' будет выполнен хотя бы один раз); затем — вычисляется условие, и если оно не равно «0», то вновь выполняется тело цикла и проверка условия. В нижеследующем примере — «нуль» всегда будет добавлен в список, независимо от условия <code>(++$i <= $var)</code>: <syntaxhighlight lang="php"> <?php $var = 5; $i = 0; do { echo $i . '<br />'; } while(++$i <= $var); ?> </syntaxhighlight> Результат: <syntaxhighlight lang="html5"> 0<br />1<br />2<br />3<br />4<br />5<br /> </syntaxhighlight> Цикл с постусловием бывает полезен при обработке некоторых последовательностей — когда обработку нужно заканчивать не «до», а «после» появления концевого признака. Бесконечный цикл реализуется так: <syntaxhighlight lang="php"> do { ... } while(true); </syntaxhighlight> ==== for ==== Как уже говорилось, итерационный цикл имеет следующий формат: <syntaxhighlight lang="php"> for(expression1; expression2; expression3) { statements; } </syntaxhighlight> Здесь <code>expression1</code> (инициализация цикла) — последовательность определений и выражений, разделяемая запятыми. Все выражения, входящие в инициализацию, вычисляются только один раз, при входе в цикл. Как правило, здесь устанавливаются начальные значения счётчиков и параметров цикла. Смысл выражения-условия <code>expression2</code> — такой же как и у циклов с предусловиями; при отсутствии выражения-условия предполагается, что его значение всегда истинно. Выражения <code>expression3</code> вычисляются в конце каждой итерации после выполнения тела цикла. В следующем скрипте мы по традиции выведем числа от «0» до «5»: <syntaxhighlight lang="php"> <?php $var = 5; for($i = 0; $i <= $var; $i++) { echo $i . '<br />'; } ?> </syntaxhighlight> Результат аналогичен показанному для «do… while…». ==== foreach ==== Оператор цикла <code>foreach</code> предназначен для работы с элементами массива. Следующий код превратит все элементы массива в единицы: <syntaxhighlight lang="php"> <?php $arr = array(1, 2, 3, 4); $i = 0; foreach ($arr as &$a) { $a -= $i++; } ?> </syntaxhighlight> Также предусмотрена возможность работы с ассоциативными массивами. При обработке следующего кода в переменной <code>$name</code> будет храниться ассоциативный индекс элемента, а в переменной <code>$value</code> — его значение. Проще говоря, <code>($arr[$name] == $value)</code>. <syntaxhighlight lang="php"> <?php ... foreach ($arr as $name => $value) { //тело цикла } ?> </syntaxhighlight> === Тернарный оператор «?:» === Тернарный оператор «'''?:'''» — это вид условного оператора. В случае с записью вида <code>Выражение «1» ? Выражение «2» : Выражение «3»</code> — он проверяет Выражение «1», и если оно верно, то тернарный оператор возвращает значение Выражения «2»; иначе — Выражения «3». <syntaxhighlight lang="php"> <?php $a = true; $b = false; $c = 11; $d = 10; $f = $a ? $c : $d; # Переменной $f присвоится значение переменной $c, # т. к. значение выражения $a истинно. $g = $b ? $c : $d; # Здесь наоборот: $g будет присвоено значение $d, # т. к. значение выражения $b ложно. $h = (!empty($n)) ? $n : $c + $d; # Сперва проверится существование # переменной $n. Т. к. она не существует, # переменной $h присвоится # сумма $c и $d, т. е. "21". ?> </syntaxhighlight> == Строковые функции PHP == Грамотно работать со строками очень важно для программиста. Строковых функций в '''PHP''' немало, причем многие из них, так или иначе, просто дублируют друг друга. Однако, приёмы работы с основными блоками функций (функции поиска и замены в тексте, функции удаления пробельных символом (trim-функции), функции форматного вывода) надо представлять очень чётко. ''Вообще говоря, по определению, строка — это последовательность символов типа '''char''', которая заканчивается нулевым символом. Поэтому можно, конечно, радоваться тому, что при работе со строками нам не приходится жонглировать указателями в стиле "C"/"[[C++]]", однако не стоит забывать о том, что цена этому удобству — быстродействие. Поэтому некоторые приводимые здесь функции мы будем обсуждать в том числе и с точки зрения их быстродействия.'' === Функция "htmlspecialchars" === <code>string htmlspecialchars(string $str)</code> Эта функция преобразовывает некоторые специальные символы [[HTML]] в другой формат. При этом они будут отображаться без учёта их специального назначения. '''Пример''' Корректное формирование и вывод гиперссылки, содержащей определённые параметры: <syntaxhighlight lang="php"> $link_search_subject = "Экранирование"; $link_label = "Поиск по слову " . "$link_search_subject"; echo '<a href=' . htmlspecialchars("http://ru.wikibooks.org/wiki/Служебная:Search?search=".urlencode($link_search_subject) ."&go=".urlencode("Перейти")).'">'.htmlspecialchars($link_label). '</a>'; </syntaxhighlight> Заметьте, что следующий (ниже представленный) код содержит грубое нарушение, так как формирует гиперссылку с атрибутом, содержащим незаконченную (не закрытую) ссылку на сущность (&…;) : <syntaxhighlight lang="php"> $link_search_subject = "Экранирование"; echo '<a href="http://ru.wikibooks.org/wiki/Служебная:Search?search='.urlencode($link_search_subject) .'&go='.urlencode("Перейти").'">'. // НАРУШЕНИЕ!! "Поиск по слову Экранирование". '</a>'; </syntaxhighlight> Это довольно часто встречаемая ошибка. === Функции поиска в тексте === ==== substr() ==== Функция '''<code>substr()</code>''' возвращает часть строки. Например: <syntaxhighlight lang="php"> echo substr('Simple text', 3, 7); </syntaxhighlight> Где «3» — точка отсчёта, а «7» — длина изымаемой строки. Если же требуется вести отсчёт от конца строки — используйте отрицательное значение. '''Пример''' Эта функция разобьёт число по трём разрядам: <syntaxhighlight lang="php"> <?php function my_int($value) { $len = strlen($value); if ($len <= 3) return $value; else return my_int(substr($value, 0, $len-3)) . ' ' . substr($value, $len-3, 3); } echo my_int(12345678); //=> 12 345 678 </syntaxhighlight> Для работы с разными кодировками используется функция: <code>string mb_substr ( string $str , int $start [, int $length [, string $encoding ]] )</code> ==== strpos() ==== <code>int strpos (string haystack, string needle [, int offset])</code> Возвращает позицию первого вхождения подстроки <code>needle</code> (в переводе с английского — «иголка») в строку <code>haystack</code> (в переводе с английского, как вы уже догадались, — «стог сена»). Необязательный аргумент <code>offset</code> позволяет указать, с какого по счёту символа строки <code>haystack</code> начинать поиск. Если подстрока <code>needle</code> не найдена — <code>strpos()</code> возвращает '''<code>FALSE</code>'''. '''Пример:''' Эта функция определяет модель браузера: <syntaxhighlight lang="php"> <?php function get_current_browser() { $browser = strtoupper($_SERVER['HTTP_USER_AGENT']); if(strpos($browser, 'MSIE') !== false) $browser = 'Internet Explorer'; elseif(strpos($browser, 'FIREFOX') !== false) $browser = 'Firefox'; elseif(strpos($browser, 'KONQUEROR') !== false) $browser = 'Konqueror'; elseif(strpos($browser, 'LYNX') !== false) $browser = 'Lynx'; else { $browser = $_SERVER['HTTP_USER_AGENT'];} return $browser; } get_current_browser(); ?> </syntaxhighlight> ==== strrpos() ==== Возвращает позицию последнего вхождения символа: <code>int strrpos (string haystack, string needle [, int offset])</code> Возвращает позицию последнего вхождения <code>needle</code> в строку <code>haystack</code>. В «'''PHP 4»''' используется только первый символ строки <code>needle</code>. Начиная с «'''PHP 5»''' необязательный аргумент <code>offset</code> позволяет указать, с какого по счету символа строки <code>haystack</code> начинать поиск. Отрицательное значение предписывает прекратить поиск при достижении определенной позиции до конца строки. Если подстрока <code>needle</code> не найдена — возвращает <code>FALSE</code>. '''Пример:''' Эта функция достаёт из [[w:URL|URL]] имя файла ('''только пример;''' в жизни, можно использовать функцию <code>basename()</code>): <syntaxhighlight lang="php"> function getfname($url) { $filename = ''; // Переменная для хранения результата обработки. // Ведём поиск первого слеша, // отделяющего путь к файлу // от имени домена: $pos = strrpos($url, '/', 8); // Начинаем с 8 символа (после "http://"). if ($pos === false) { return false; // Ошибка: неподходящий URL (нет слеша). } else { $filename = substr($url, $pos + 1); // Выделяем часть URL после слеша. } return $filename; // Возвращаем: или результат обработки, или ''. } </syntaxhighlight> ==== strstr(), stristr() ==== <code>string strstr (string $haystack, string $needle [, bool $before_needle = false ])</code> Возвращает подстроку строки <code>haystack</code>: начиная с индекса ''первого'' вхождения подстроки <code>needle</code> — до конца строки. Функция <code>stristr()</code> выполняет ту же функцию, но не чувствительна к регистру. '''Пример:''' <syntaxhighlight lang="php"> <?php print strstr('www.wikibooks.org', '.'); // Результат: ".wikibooks.org". ?> </syntaxhighlight> Для работы с разными кодировками используются функции: <code>string mb_strstr (string $haystack , string $needle [, bool $before_needle = false [, string $encoding ]])</code> <code>string mb_stristr (string $haystack , string $needle [, bool $before_needle = false [, string $encoding ]])</code> где параметр <code>encoding</code> — название используемой кодировки символов (например «'''UTF-8»'''); если этот параметр опущен — используется внутренняя кодировка. ==== strchr() ==== Эта функция является псевдонимом функции <code>strstr()</code>. ==== strrchr() ==== <code>string strrchr (string $haystack, char $needle)</code> Возвращает подстроку строки <code>haystack</code>: начиная с ''последнего'' вхождения <code>needle</code> — до конца строки. Если подстрока <code>needle</code> не найдена — возвращает <code>FALSE</code>. Если <code>needle</code> состоит более чем из одного символа — используется только первый символ. Если <code>needle</code> не является строкой — он приводится к целому и трактуется как код символа. '''Пример:''' <syntaxhighlight lang="php"> <?php print = strrchr('www.wikibooks.org', '.'); // Результат: ".org". ?> </syntaxhighlight> ==== substr_count() ==== <code>int substr_count (string $haystack, string $needle)</code> Возвращает число вхождений подстроки <code>needle</code> в строку <code>haystack</code>. Можно использовать или текст в кавычках (или апострофах), или переменные. '''Пример:''' <syntaxhighlight lang="php"> <?php print substr_count('www.wikibooks.org', 'o'); // Результат: "3". ?> </syntaxhighlight> ==== strspn() ==== Находит длину начального сегмента маски. <code>int strspn (string $str1, string $str2)</code> Возвращает длину начального сегмента <code>$str1</code>, состоящего полностью из символов строки <code>$str2</code>. '''Пример:''' <syntaxhighlight lang="php"> <?php return strspn("42 is the answer; what is the question?", "1234567890"); // Результат: "2". // (Т. к. в начале первой строки-аргумента // самым длинным сегментом, // состоящим только из символов, содержащихся во втором аргументе, // является сегмент "42", -- длиной в 2 символа.) ?> </syntaxhighlight> ==== strcspn() ==== Обратная к функции <code>strspn()</code>. Определяет отсутствие начальных символов в строке. Возвращает длину начального фрагмента строки <code>$str1</code>, состоящего полностью '''не''' из символов, которые есть в строке <code>$str2</code>. == Система пользователей == В этой статье будет описаны алгоритмы системы пользователей и их коды на языке '''PHP'''. === Регистрация === Алгоритм регистрации — самый простой из тех, что мы будем здесь использовать. Серверу предстоит записать: # Введённые пользователем данные; # Результат хеш-функции от пароля. <syntaxhighlight lang="html5"> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title> Регистрация </title> </head> <body> </syntaxhighlight> <syntaxhighlight lang="php"> <?php // Register // Подключение к "MySQL"-серверу // (с выводом ошибки в случае неудачи): mysql_connect("localhost", "root", "") or die(mysql_error); // Подключение к базе данных "deskside" // (с выводом ошибки в случае неудачи): mysql_select_db("deskside") or die(mysql_error); // Запрос на получение списка всех пользователей из таблицы "users", // упорядоченного по возрастанию значений поля "id": $find_id_sql = mysql_query("SELECT * FROM users ORDER BY id ASC"); $find_id_row = mysql_num_rows($find_id_sql); // Получение списка пользователей из таблицы "users", // чьи логины совпадают со значением, полученным в "POST"-запросе: $find_names = mysql_query("SELECT * FROM users " ."WHERE login='" .$_POST['login']."'"); $find_row = mysql_num_rows($find_names); $id_counter = 1; // Вычисление последнего ID: while ($find_id_row = mysql_fetch_assoc($find_id_sql)){ $id_counter += 1; } $user_already = false; // Булевская переменная для сохранения результатов // проверки: есть ли уже такой пользователь, // с данным "login". if ($_POST['register']) // Если дан запрос именно что на регистрацию. { while($find_row == mysql_fetch_assoc($find_names)) { // Поиск пользователя с данным "login". if ($find_row['login'] == $_POST['login']){ // Если нашёлся... $user_already = true; // ...то отмечаем это как результат break; // ...и выходим из цикла. } } // Если пользователь с таким "login" уже есть. if($user_already){ // Уведомляем отправителя запроса об этом. echo " <p> Такой пользователь уже есть. <br /> <a href=\"http://localhost/register.htm\"> Пройти регистрацию заново... </a> </p> "; } else { // Если пользователя с таким "login" всё-таки нет, // то регистрируем данный "login" для нового пользователя. // Проверка совпадения паролей: if ($_POST['password'] == $_POST['second_password']) { // Если совпали: // 1. Хэширование пароля для базы данных. $md5_password = md5($_POST['password']); // 2. Запрос "MySQL"-серверу на сохранение регистрационных данных // в соответствующую таблицу ("users"): mysql_query("INSERT INTO users " ."(`id`, `login`, `password`, `e-mail`, `name`) " ."VALUES ('" .$id_counter ."', '" .$_POST['login'] ."', '" .$md5_password ."', '" .$_POST['e-mail'] ."', '" .$_POST['name'] ."')"); // 3. Уведомляем отправителя запроса: echo "Регистрация проведена успешно."; } else { echo " <p> Ошибка регистрации: пароли не совпадают! <br /> <a href=\"http://localhost/register.htm\"> Пройти регистрацию заново... </a> </p> "; } } } if ($_POST['register']) { // Если пользователь уже нажал кнопку "РЕГИСТРАЦИЯ", // то зачем ему заново показывать форму?! } else { // Если он уже кликнул, то мы не показываем форму, // а выводим либо сообщение о подтверждении, либо об ошибке: echo ' <form method=\"post\"> <p> Логин: <input type=\"text\" name=\"login\" /> </p> <p> Пароль: <input type=\"password\" name=\"password\"> </p> <p> Пароль ещё раз: <input type=\"password\" name=\"second_password\" /> </p> <p> E-mail: <input type=\"email\" name=\"e-mail\" /> </p> <p> Ваше имя: <input type=\"text\" name=\"name\" /> </p> <input type=\"submit\" name=\"register\" value=\"Зарегистрироваться\"> </form> '; } ?> </syntaxhighlight> <syntaxhighlight lang="html5"> </body> </html> </syntaxhighlight> === Авторизация пользователя === [[Файл:Алгоритм_входа_пользователя.png|thumbnail|180px|Алгоритм авторизации пользователя]] Вход пользователя будет производиться по следующему алгоритму: #Пользователь заполняет форму: «Логин», «Пароль»; #Данные запоминаются в переменной <code>$_POST</code>, после чего будут обрабатываться на сессии<ref>Преимущество сессий в том, что обычный пользователь даже не заметит, как его перенаправили на другую страницу, а значит будет сложнее взломать PHP-код. На странице входа отображается только перенаправление на session.php и форма входа. Если конечно не посмотрит внимательно на HTML-код, но это ему ничего не даст, по скольку он не сможет взять из файла session.php сам PHP-код</ref>; #Уже в сессии хешируется введённый пользователем пароль, алгоритмом [[w:MD5|MD5]]; #Выполняется подключение к базе данных «SQL» и импорт данных со строки пользователя ''admin'' (допустим, пользователь ввёл имя пользователя ''admin''). Затем вся строка записывается в массив <code>$table</code> — такой вариант поможет сократить много нервов и строк; #Сравнение зашифрованного пароля, который в базе данных, — с зашифрованным, введённым пользователем; #Если пароли совпадают, записываются «COOKIE» с информацией об авторизации пользователя. <code>("user_enter" & "user_login")</code>; #Закрытие сессии методом перенаправления на другую страницу. - <code>header (Location: ...)</code>; ===== '''Форма входа''' ===== <syntaxhighlight lang="php"> <?php session_start(); # Этот шаблон можно вставлять в любую часть сайта; # он будет работать в любом случае. ?> </syntaxhighlight> <syntaxhighlight lang="html5"> <form action="session.php" method="POST"> <p> Логин: <input type="text" name="login" /> </p> <p> Пароль: <input type="password" name="password" /> </p> <input type="submit" value="Вход" /> </form> </syntaxhighlight> ====='''Сессия (session.php)'''===== <syntaxhighlight lang="php"> <?php // Заметьте: Нет команд "echo" -- // эту команду можно использовать // только после того, как отправились все "куки". // // P.S.: Если на странице используются "куки" -- // лучше не использовать кодировку "UTF-8". session_start(); // Если пользователь кликнул "Выход": if ($_POST['exit']){ // ...то чистим "куки" // о его авторизации и логине: unset($_COOKIE['user_enter']); unset($_COOKIE['user_login']); } // Подключение к "MySQL"-серверу: // localhost - стандартный адрес сервера баз данных, // если тот запущен на локальном компьютере; // root - логин для пользователя "MySQL"; // 1234 - пароль для пользователя "MySQL". mysql_connect("localhost", "root", "1234") or die(mysql_error); // Подключение к базе данных: mysql_select_db("base") or die(mysql_error); // где "base" - имя базы данных. $check_password = mysql_query("SELECT * FROM `base`.`users`" ."WHERE (login='" .$_POST['login'] ."')"); // "SQL"-запрос для проверки пароля. $row_check_password = mysql_num_rows($check_password); // Получение данных о пользователе: while($row_check_password = mysql_fetch_assoc($check_password)){ // ID пользователя: $table['id'] = $row_check_password['id']; // Логин пользователя: $table['login'] = $row_check_password['login']; // Пароль (в зашифрованном виде) пользователя: $table['password'] = $row_check_password['password']; // Имя блога пользователя: $table['blog_name'] = $row_check_password['blog_name']; } // Проверка паролей: if ($_POST['enter']){ // Хеширование пользовательского пароля: $md5_password = md5($_POST['password']); // Если хеш пароля, введённого пользователем, и логин // совпадают с хешем пароля и с логином из базы данных: if ($md5_password == $table['password'] && $_POST['login'] == $table['login']){ // Пользователь вошёл в систему: setcookie("user_enter", true); // "Кука": пользователь авторизировался. setcookie("user_login", $_POST['login']); // "Кука": логин. setcookie("user_blog", $table['blog_name']); // "Кука": имя блога. }else{ // Пароль не подтвердился: setcookie("user_login", "no_enter"); // "Кука": Логин "не вошёл". setcookie("user_enter", false); // "Кука": Пользователь не вошёл. } } // Перенаправление на главную страницу: header('Location: http://deskside/main.php?page=home'); ?> </syntaxhighlight> === Вывод данных пользователя === Для вывода данных пользователя будут использоваться куки, но поскольку они могут содержать только латинские буквы и цифры — они будут использоваться только как идентификатор имени пользователя и подтверждения его авторизации. Пользователю нужно выводить максимум информации о его ошибках. Если Ваш проект будет очень большим и пользователь при входе будет вводить не только логин и пароль, а ещё 20 полей — то пользователю будет не очень удобно, при опечатке, смотреть на такое сообщение: <blockquote>Возможно, Вы ошиблись при заполнении данных... Попробуйте ещё раз.</blockquote>Ему будет гораздо приятнее, если ему выведут сообщение с возможным полем опечатки и самой опечаткой. Но в нашем варианте, будет рассматриваться только вариант с логином и паролем. Естественно, невозможно использовать один и тот же текст для вывода разной информации. Всего их три: * Если пользователь авторизировался; * Если пароли не совпадают; * Если пользователь ещё не авторизировался и хочет ввести свои данные. Проще всего будет просто выводить шаблон на страницу ('''$login_form''').<br /> ====='''Пользователь авторизировался'''===== <syntaxhighlight lang="php"> if ($_COOKIE['user_enter']){ $login_form =' <form method="post"> Вы вошли как <b>'.$login.'</b> <br> <br> <a href="http://deskside/main.php?page=register">Регистрация</a> <br> <a href="http://deskside/main.php?page=profile">Профиль</a> <br> <input type="submit" name="exit" value="Выход"> </form> '; } </syntaxhighlight> ====='''Пароли не совпали'''===== <syntaxhighlight lang="php"> if($_COOKIE['user_login'] == "no_enter" And $_COOKIE['user_enter'] == false){ $login_form = ' <form method="post"> Ошибка: Пароль неправильный! <br> <hr> <b><input type="submit" name="exit" value="Ввести снова"></b> <br> <a href="http://deskside/main.php?page=register">Регистрация</a> </form> '; } </syntaxhighlight> ====='''Форма авторизации'''===== <syntaxhighlight lang="php"> $login_form = ' <table> <tr> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr> <td>&nbsp;</td> <td class="style10"> <form action="session.php" method="POST"> Логин: <br> <input type="text" name="login"> <br> Пароль: <br> <input type="password" name="password"> <br> <hr> <input type="submit" name="enter" value="Войти"> <br> <br> <a href="http://deskside/main.php?page=register">Регистрация</a> </form> </td> <td>&nbsp;</td> </tr> <td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> </td> </table> '; </syntaxhighlight> == Примечания == {{примечания}} == См. также == * [[v:PHP|PHP]] — курс в Викиверситете == Ссылки == * [http://docs.php.net/manual/ru/ Руководство по PHP] (включая FAQ) * [http://www.php.net/docs.php Documentation] * [http://php.net/manual/en/index.php PHP Manual] (оригинал, англ.) * [http://www.php-s.ru/self-teacher/ Самоучитель (учебник) по PHP] 1wwh8cs7n5wyen5hu0qruxvlv8k67mn 270187 270186 2026-10-06T08:05:11Z Или Редактор 79899 /* Комментарии */ добавил разделы про начало работы и теги плюс стандартизировал форматирование 270187 wikitext text/x-wiki {{Название учебника |Категория = Веб-разработка, Программирование |Тип = Многостраничный }} {{wikipedia}} '''PHP''' (произносится ''пи-эйч-пи́'')&nbsp;— [[w:скриптовый язык|скриптовый язык]] программирования, созданный для генерации [[w:HTML|HTML]]-страниц на [[w:веб-сервер|веб-сервере]] и работы с [[w:база данных|базами данных]]. На сегодняшний момент поддерживается на подавляющем большинстве [[w:хостинг|хостингов]]. Входит в [[w:LAMP|«LAMP»]] — «стандартный» набор для создания [[w:сайт|веб-сайтов]]. == Начало работы == Для того чтобы начать работать с PHP, достаточно установить интерпретатор для вашей операционной системы и запустить встроенный веб-сервер, для чего открыть окно командной строки и набрать <code>php -S localhost:8080</code>. После этого текущая папка будет служить корневой папкой вашего веб-сервера и можно будет обратиться к любому файлу в ней через браузер, например http://localhost:8080/test.php. Кроме того, PHP-скрипты можно запускать прямо в командной строке, набрав <code>php test.php<code>. == Теги PHP == Поскольку '''PHP''' исходно задумывался как язык для создания динамических веб-страниц (т.е. таких, содержимое которых меняется в зависимости от запроса пользователя или содержимого базы данных), необходимо было научить интерпретатор языка отличать инструкции '''PHP''' от HTML-разметки. Для этого служат теги '''PHP''': открывающий, <code><?php</code> и закрывающий <code>?></code>. PHP-код будет исполняться только если заключен между ними. Есть ещё два вида открывающих тегов PHP: короткий тег <code><?</code> и тег вывода («укороченный <code>echo</code>»), <code><?=</code>. <syntaxhighlight lang="php"> <p>Этот текст PHP проигнорирует, он будет выведен как есть: 2+2</p> <?php echo "Эта строка будет обработана интерпретатором<br>\n", 2+2; ?> <p>Этот текст PHP тоже проигнорирует</p> <?= "чтобы не писать всё время php echo можно воспользоваться тегом вывода<br>\n"; ?> <p>И этот текст PHP проигнорирует</p> <? echo "эта строка может быть как обработана, так и проигнорирована, в зависимости от настроек<br>\n"; ?> </syntaxhighlight> Поскольку, в отличие от двух других, короткий открывающий тег <code><?</code> может быть отключен в конфигурации (что и сделано по умолчанию), он не рекомендуется к использованию. Самый последний закрывающий тег на странице ставить не обязательно. Если страница содержит только РНР код, то закрывающий тег ставить не рекомендуется. == Комментарии == '''PHP''' предоставляет несколько методов для вставки комментариев. Проще всего пользоваться двойной косой чертой (//), после чего '''PHP'''-машина игнорирует всё, что расположено до конца строки. Также можно пользоваться многострочными комментариями в стиле "C" / [[C++|"С++"]] (/*…*/). Для однострочных комментариев можно ещё пользоваться символом решётки (#) (комментарий сценарных языков операционной системы [[UNIX|"UNIX"]]). <syntaxhighlight lang="php"> <?php print '<p>Hello</p>'; // Комментарий print '<p>Hello</p>'; # Комментарий /* Комментарий ... и это тоже комментарии */ // Комментарии очень удобны в тех случаях, // когда необходимо исключить часть кода // для отладки программы; например: $uname = $_POST['uname']; // $uname = preg_replace('#[^a-zA-Z0-9\_\-\.]#', '', $uname); // Закомментировали часть кода, // так как не выводится желаемый результат; // возможно, дело в этой строке: echo $uname; # Изначально, комментарии создавались для того, // чтобы, не нарушая работы программы, // добавить описание к той или иной строке; // например: echo getUsersOnline(2, 1, 4); /* Аргументы функции: 0 - номер открытого соединения с базой данных; 1 - режим ответа ("0" - массив / "1" - строка); 2 - кол-во минут, прошедших с момента последней активности пользователя (необязательный) */ </syntaxhighlight> Следует помнить о том, что стили комментариев '''PHP''' действуют только внутри ограничителей '''PHP'''. Если '''PHP''' встретит эти символы комментариев вне ограничителей, то они, как и любой текст, будут помещены на HTML-страницу. Например: <syntaxhighlight lang="php"> <?php print '<p>Hello</p>'; //Нормальный комментарий. </syntaxhighlight> <syntaxhighlight lang="html5"> // А вот этот комментарий отобразится браузером. <!-- Комментарий HTML. Будет виден в исходном коде HTML, но не в браузере. --> </syntaxhighlight> == Переменные == В '''РНР''' переменные начинаются со знака доллара ($). За этим знаком может следовать любое количество буквенно-цифровых символов и символов подчёркивания, но первый символ не может быть цифрой. Следует также помнить, что имена переменных в '''РНР''' чувствительны к регистру, в отличие от ключевых слов. При объявлении переменных в '''РНР''' не требуется явно указывать тип переменной; при этом одна и та же переменная может иметь на протяжении программы разные типы. Переменная инициализируется в момент присвоения ей значения и существует до тех пор, пока выполняется программа (в случае ''web''-страницы — пока не завершён запрос) или она не будет удалена функцией <code>unset()</code>. === Функции вывода === В '''PHP''' существует несколько способов вывести что-либо в [[w:Веб-страница|веб-страницу]]: {| class="wikitable" !Средство !Результат |- |Операторы <code>echo</code> и <code>print</code> |Выводят значение аргумента, одним и тем же образом. Различие: <code>print</code> — всегда возвращает "1"; <code>echo</code> — ничего не возвращает. |- |Функция <code>print_r()</code> |Позволяет корректно выводить массивы. |- |Функция <code>var_dump()</code> |Выводит переменную вместе с типом. Очень удобный инструмент для отладки. |} ==== Вывод различных функций ==== {| class="wikitable" ! Аргумент ! <code>echo</code> ! <code>print_r()</code> ! <code>var_dump()</code> |- | <code>1</code> | <code>1</code> | <code>1</code> | <code>int(1)</code> |- | <code>1.1</code> | <code>1.1</code> | <code>1.1</code> | <code>double(1.1)</code> |- | <code>false</code> | style="background-color: lightred" | &nbsp; | style="background-color: lightred" | &nbsp; | <code>bool(false)</code> |- | <code>array( 1, 2, 3 )</code> | <code>Array</code> | <code>Array ( [0] => 1 [1] => 2 [2] => 3 ) </code> | <code>array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }</code> |- | <code>"Test"</code> | <code>Test</code> | <code>Test</code> | <code>string(4) "Test"</code> |} === Типы данных в РНР === Как уже было сказано, '''PHP''' предоставляет определённую гибкость в отношении типов переменных, — то есть, с одной и той же переменной на протяжении программы можно работать ''и как со строкой, и как с числом.'' Однако несмотря на это, в '''РНР''' существует набор основных типов данных, которые могут явно указываться при работе с переменными: {| class="wikitable" !Обозначение !Тип данных |- |integer |Целое число. |- |string |Строка символов. |- |boolean |Двоичное данное (либо «Истина», либо «Ложь»). |- |double |Десятичное число; 1—2 значащих разряда в дробной части. |- |float |Десятичное число с плавающей точкой. Более 2 значащих разрядов в дробной части. |- |[[PHP/Массивы|array]] |Массив объектов. |- |object |Объект. |- |NULL |Пустой тип. |- |Resource |Ресурс. |} Есть функция <code>gettype()</code>, возвращающая тип, который '''РНР''' назначил переменной: <syntaxhighlight lang="php"> <?php $var1 = '5'; $var2 = 5; echo gettype($var1) # Будет возвращено: "string". . '<br>' # Операция "." используется для склеивания строк. . gettype($var2); # Будет возвращено: "integer". ?> </syntaxhighlight> Существует также функция <code>settype()</code>, которая явно устанавливает тип: <syntaxhighlight lang="php"> <?php $var = '5'; echo gettype($var); # Будет возвращено: "string". settype($var, 'integer'); echo '<br />' . gettype($var); # Будет возвращено: "integer". ?> </syntaxhighlight> Кроме функции <code>settype()</code>, преобразование типов в '''РНР''' можно осуществлять при помощи операторов преобразования типов. Преобразование типов осуществляется путём указания перед переменной её нового типа, взятого в скобки:<syntaxhighlight lang="php"> $var = (integer)$var; </syntaxhighlight> Соответственно, выполнение следующего кода приведёт к тому, что '''РНР''' вернёт «''integer»'': <syntaxhighlight lang="php"> <?php $var = '5'; # Изначально, создаётся переменная типа "string" (строковая). $var = (integer)$var; # Преобразуем её тип в "integer" (целочисленный). echo gettype($var); # Отображаем окончательный тип переменной: "integer". ?> </syntaxhighlight> === Внешние переменные === После того, как запрос клиента проанализирован веб-сервером и передан '''РНР'''-интерпретатору, последний устанавливает ряд переменных, которые содержат данные запроса и доступны всё время его выполнения. Сначала '''PHP''' инициализирует массивы <code>$_ENV</code> (содержащий переменные среды-окружения; англ. ''environment'') и <code>$_SERVER</code><ref>. На самом деле порядок инициализации суперглобальных массивов зависит от настроек в файле ''php.ini''</ref>. Ассоциативный массив <code>$_SERVER</code> содержит следующие ключи (индексы массива): {| class="wikitable" !Ключ (индекс ячейки массива) !Полный путь к ячейке массива !Содержимое ячейки массива |- |<code>HTTP_USER_AGENT</code> |<code>$_SERVER['HTTP_USER_AGENT']</code> |Сведения о браузере клиента. |- |<code>HTTP_ACCEPT</code> |<code>$_SERVER['HTTP_ACCEPT']</code> |Принимаемые MIME-типы. Может служить для определения возможностей браузера. |- |<code>PHP_SELF</code> |<code>$_SERVER['PHP_SELF']</code> |Путь к файлу, содержащему выполняющийся скрипт, относительно корневого каталога (папки) сервера. Пример: <code>/w/index.php</code>. |} Затем '''РНР''' заполняет переменную <code>$_GET[]</code>, являющуюся ассоциативным массивом, которая создаётся при анализе строки запроса. Строка запроса хранится в элементе массива <code>$_SERVER['QUERY_STRING']</code> и представляет собой информацию, следующую за символом «?» в запрошенном URL. '''РНР''' разбивает строку запроса по символам «&»<ref>Символ разделения также может меняться в файле ''php.ini''. Часто используется символ «;».</ref> на отдельные элементы, а затем ищет в каждом из этих элементов знак «=». Если знак «=» найден, то создаётся переменная с именем из символов, стоящих слева от знака равенства. Рассмотрим следующую форму: <syntaxhighlight lang="html5"> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title> Введите данные. </title> </head> <body> <form action="http://localhost/PHP/test.php" method="get"> <p> HDD: </p> <input type="text" name="HDD" /> <br /> <p> CD-ROM: </p> <input type="text" name="CD-ROM" /> <br /> <input type="submit" value="Отправить" /> </form> </body> </html> </syntaxhighlight> Если Вы сохраните этот фрагмент кода в виде HTML-файла и откроете его в веб-браузере, то увидите форму ввода. Если в строке «HDD» набрать какой-либо текст (к примеру, ''«''Maxtor»), и также в строке «CD-ROM» (например, «Nec»), то по нажатию на '''«Отправить»''' будет составлен запрос: <code>[http://localhost/PHP/test.php?HDD=Maxtor&CDROM=Nec http://localhost/PHP/test.php?HDD=Maxtor&CD-ROM=Nec]</code> — и при этом '''РНР''' создаст следующие элементы массива с соответствующими индексами (ключами): <code>$_GET['HDD'] = 'Maxtor'</code> и <code>$_GET['CDROM'] = 'Nec'</code>. Вы можете работать с ними (т.е. с этими переменными) из Вашего скрипта (у нас — "test.php") как с обычными переменными; в нашем случае — они просто выводятся на экран: <syntaxhighlight lang="php"> <?php echo "<p>HDD is " . $_GET['HDD'] . "</p>"; echo "<p>CDROM is " . $_GET['CDROM'] . "</p>"; ?> </syntaxhighlight> Если запрос страницы выполняется при помощи метода <code>POST</code>, то появляется группа ''POST''-переменных, которые интерпретируются так же и помещаются в массив <code>$_POST[]</code>. == Константы == Константы объявляются в '''РНР''' при помощи функции <code>define()</code>: <syntaxhighlight lang="php"> define('CONSTANT', value) </syntaxhighlight> Первый параметр этой функции — имя константы, второй — её значение. При использовании константы на неё ссылаются по имени: <syntaxhighlight lang="php"> <?php define('CONSTANT1', 15); define('CONSTANT2', "\x20"); //Шестнадцатеричный код символа пробела define('CONSTANT3', 'Hello'); echo CONSTANT1; echo CONSTANT2; echo CONSTANT3; ?> </syntaxhighlight> По традиции имена констант пишут буквами верхнего регистра. И хотя это только традиция, мы рекомендуем Вам следовать ей, поскольку «плохие» программисты получаются в том числе и из тех, кто не следовал хорошим традициям. Существует функция <code>defined()</code>, которая проверяет, определена ли константа: <syntaxhighlight lang="php"> <?php define('CONSTANT', 'Hello'); if(defined('CONSTANT')) echo '<p>CONSTANT is defined</p>'; ?> </syntaxhighlight> == Операторы == === Математические операторы === В '''PHP''', как и в любом другом языке программирования, есть базовый набор математических операторов: {| class="wikitable" !Оператор !Операция !Примечания |- |<code>-</code> |Смена знака числа. | |- |<code>-</code> |Вычитание. | |- |<code>+</code> |Сложение. | |- |<code>*</code> |Умножение. | |- |<code>/</code> |Деление. |Всегда возвращает тип <code>float</code>, вне зависимости от результата. |- |<code>%</code> |Деление по модулю. |Возвращает остаток от деления. |} === Инкремент и декремент === *Возвращают старое значение $a: **<code>$a++</code> — увеличить $a на 1; **<code>$a--</code> — уменьшить $a на 1. *Возвращают новое значение $a: **<code>++$a</code> — увеличить $a на 1; **<code>--$a</code> — уменьшить $a на 1. === Операторы сравнения === Существуют следующие операторы сравнения: {| |'''Оператор''' |'''Проверка''' |'''Условие истинности''' (возвращается <code>true</code>) |- | <code>$a == $b</code> |Равно | '''$a''' равно '''$b'''. |- | <code>$a === $b</code> |Идентично | '''$a''' равно '''$b''' и они одного и того же типа. |- | <code>$a != $b</code> или <code>$a <> $b</code> |Не равно | '''$a''' не равно '''$b'''. |- | <code>$a > $b</code> |Строго больше | '''$a''' строго больше '''$b'''. |- | <code>$a < $b</code> |Строго меньше | '''$a''' строго меньше '''$b'''. |- | <code>$a >= $b</code> |Больше или равно | '''$a''' или больше, или равно '''$b'''. |- | <code>$a <= $b</code> |Меньше или равно | '''$a''' или меньше, или равно '''$b'''. |} === Операторы присвоения === Для присвоения переменной нового значения используется оператор «<code>=</code>»: <syntaxhighlight lang="php"> $a = $b + $c - 127; </syntaxhighlight> Также существуют сокращённые операторы присвоения: <code>+=</code>, <code>-=</code>, <code>.=</code>, <code>/=</code>, <code>*=</code>, <code>%=</code>. Пример: <syntaxhighlight lang="php"> $a = $a + 1; #равносильно $a += 1; </syntaxhighlight> === Поразрядные операторы === Эта группа операторов работает с битовыми представлениями значений целочисленных операндов. В основном эти операторы применяются для создания набора булевых флагов: {| class="wikitable" |'''Оператор''' |'''Операция''' |- | <code>&</code> || Поразрядная конъюнкция (AND). |- | <code><nowiki>|</nowiki></code> || Поразрядная дизъюнкция (OR). |- | <code>^</code> || Поразрядное исключающее ИЛИ (XOR). |- | <code>~</code> || Поразрядное отрицание (NOT). |- | <code><nowiki><<</nowiki></code> || Битовое представления значения левого целочисленного операнда сдвигается влево, на количество разрядов, равное значению правого целочисленного операнда. |- | <code><nowiki>>></nowiki></code> || Битовое представление значения левого целочисленного операнда сдвигается вправо, на количество разрядов, равное значению правого целочисленного операнда. |} <syntaxhighlight lang="php"> <?php echo (4<<2); //16 echo "<br />"; echo (5>>1); //2 echo "<br />"; echo (6&5); //4 echo "<br />"; echo (6|5); //7 echo "<br />"; echo (6^5); //3 ?> </syntaxhighlight> === Операторы ветвления алгоритмов (if… elseif… else…) === Оператор <code>if</code> позволяет выполнять определённый код только при выполнении определённого условия: <syntaxhighlight lang="php"> <?php $a = 1; $b = null; $c = 2 * 3; $d = true; if($a) echo "if(\$a);<br />"; if($b) echo "if(\$b);<br />"; if($c) echo "if(\$c);<br />"; if(!$d) echo "if(!\$d);<br />"; if($a < $c) echo "\$a < \$c;<br />"; ?> </syntaxhighlight> Этот код выводит следующие строки: <pre>if($a); if($c); $a < $c; </pre> Чтобы выполнять код, только если условие не выполнилось — можно использовать блок <code>else</code>: <syntaxhighlight lang="php"> <?php if(isset($_GET['test'])) echo 'Query contains "test" parameter'; else echo 'Query doesn\'t contain "test" parameter'; ?> </syntaxhighlight> Можно использовать инструкцию <code>elseif</code> (англ. «иначе, если»): <syntaxhighlight lang="php"> <?php if($_GET['test'] == "foo") echo 'test = "foo"'; elseif(isset( $_GET['test'])) echo 'Query contains "test" parameter, but it isn\'t "foo"'; else echo 'Query doesn\'t contain "test" parameter'; ?> </syntaxhighlight> === Переключатель (switch) === <syntaxhighlight lang="php"> <?php $a = "A"; switch($a) { case 'A': echo 'Переменная имеет значение "А"'; break; case 'B': echo 'Переменная имеет значение "B"'; break; default: echo 'Ответ не найден'; } ?> </syntaxhighlight> Вышенаписанный пример выведет: «Переменная имеет значение „A“» — и то же выведет следующий пример: <syntaxhighlight lang="php"> <?php $a = "A"; if($a == "A") echo "Переменная имеет значение \"A\""; elseif($a == "B") echo "Переменная имеет значение \"B\""; else echo "Ответ не найден"; ?> </syntaxhighlight> === Операторы цикла === Операторы цикла задают многократное исполнение операторов в теле цикла. В '''PHP''' определены 4 разных оператора цикла: *Цикл с предусловием: <code>while(condition) { statements; }</code> *Цикл с постусловием: <code>do { statements; } while(condition);</code> *Итерационный цикл: <code>for(expression1; expression2; expression3) { statements; }</code> *Итерационный цикл <code>foreach</code> (т.е. перебор элементов массива): <code>foreach(array as [$key =>] $value) { statements; }</code> Если 3 первых оператора цикла берут своё начало от "[[C++|С]]"-подобных языков, то последний оператор позаимствован у языка "[[Perl]]". ==== while ==== Оператор <code>while</code> называется оператором цикла с предусловием. При входе в цикл вычисляется выражение условия, и, если его значение отлично от нуля, выполняется тело цикла. Затем — вычисления выражения условия и операторов тела цикла выполняется до тех пор, пока значение выражения условия не станет равным нулю. Оператором <code>while</code> удобно пользоваться для просмотра всевозможных последовательностей, если в конце них находится заранее известный символ. (Это очень удобно в "[[C++]]", — к примеру, для определения длины строки, — поскольку в "[[C++|С++]]", по определению, строка есть последовательность символов типа "char", заканчивающаяся нулевым символом: <code>\0</code>). Пример простейшего цикла <code>while</code>: <syntaxhighlight lang="php"> <?php $var = 5; $i = 0; while(++$i <= $var) echo $i . '<br />'; ?> </syntaxhighlight> Этот код выдает в окне браузера цифры от одного до пяти. Для выхода из цикла применяется оператор <code>break</code>. При обнаружении этого оператора все итерации прекращаются. Пример: при выполнении нижеприведённого цикла — несмотря на то, что переменная <code>$var = 7</code> — в окне браузера появятся цифры «1»—«5», исключая «6» и «7»: <syntaxhighlight lang="php"> <?php $var = 7; $i = 0; while(++$i <= $var) { echo $i . '<br />'; if($i == 5) break; } ?> </syntaxhighlight> Чтобы перейти в следующую итерацию применяется <code>continue</code>: <syntaxhighlight lang="php"> <?php $var = 7; $i = 0; while (++$i <= $var) { if($i == 5) continue; echo $i . '<br />'; } ?> </syntaxhighlight> В этом примере выводятся цифры «1»—«7», за исключением «5». Заметим, что если Вы расположите условный оператор после операторов <code>echo</code> — код будет ошибочным (т.к. выведутся все цифры, включая «5»), поскольку проверка условия выхода из итерации будет происходить уже после полного выполнения этой итерации. Бесконечный цикл реализуется при помощи оператора <code>while</code> следующим образом: <syntaxhighlight lang="php"> while(true) { ... } </syntaxhighlight> ''Примечание:'' в '''PHP''' стандартное время исполнения скрипта — 30 секунд (эту настройку можно изменить в файле "php.ini"); по его прошествии с начала выполнения скрипта действие скрипта будет прервано. Таким образом, наибольшее время выполнения «бесконечного» цикла (без изменения настроек) — полминуты. ==== do… while… ==== Этот оператор называется оператором цикла с пост-условием. При входе в цикл в любом случае выполняется тело цикла (то есть цикл ''всегда'' будет выполнен хотя бы один раз); затем — вычисляется условие, и если оно не равно «0», то вновь выполняется тело цикла и проверка условия. В нижеследующем примере — «нуль» всегда будет добавлен в список, независимо от условия <code>(++$i <= $var)</code>: <syntaxhighlight lang="php"> <?php $var = 5; $i = 0; do { echo $i . '<br />'; } while(++$i <= $var); ?> </syntaxhighlight> Результат: <syntaxhighlight lang="html5"> 0<br />1<br />2<br />3<br />4<br />5<br /> </syntaxhighlight> Цикл с постусловием бывает полезен при обработке некоторых последовательностей — когда обработку нужно заканчивать не «до», а «после» появления концевого признака. Бесконечный цикл реализуется так: <syntaxhighlight lang="php"> do { ... } while(true); </syntaxhighlight> ==== for ==== Как уже говорилось, итерационный цикл имеет следующий формат: <syntaxhighlight lang="php"> for(expression1; expression2; expression3) { statements; } </syntaxhighlight> Здесь <code>expression1</code> (инициализация цикла) — последовательность определений и выражений, разделяемая запятыми. Все выражения, входящие в инициализацию, вычисляются только один раз, при входе в цикл. Как правило, здесь устанавливаются начальные значения счётчиков и параметров цикла. Смысл выражения-условия <code>expression2</code> — такой же как и у циклов с предусловиями; при отсутствии выражения-условия предполагается, что его значение всегда истинно. Выражения <code>expression3</code> вычисляются в конце каждой итерации после выполнения тела цикла. В следующем скрипте мы по традиции выведем числа от «0» до «5»: <syntaxhighlight lang="php"> <?php $var = 5; for($i = 0; $i <= $var; $i++) { echo $i . '<br />'; } ?> </syntaxhighlight> Результат аналогичен показанному для «do… while…». ==== foreach ==== Оператор цикла <code>foreach</code> предназначен для работы с элементами массива. Следующий код превратит все элементы массива в единицы: <syntaxhighlight lang="php"> <?php $arr = array(1, 2, 3, 4); $i = 0; foreach ($arr as &$a) { $a -= $i++; } ?> </syntaxhighlight> Также предусмотрена возможность работы с ассоциативными массивами. При обработке следующего кода в переменной <code>$name</code> будет храниться ассоциативный индекс элемента, а в переменной <code>$value</code> — его значение. Проще говоря, <code>($arr[$name] == $value)</code>. <syntaxhighlight lang="php"> <?php ... foreach ($arr as $name => $value) { //тело цикла } ?> </syntaxhighlight> === Тернарный оператор «?:» === Тернарный оператор «'''?:'''» — это вид условного оператора. В случае с записью вида <code>Выражение «1» ? Выражение «2» : Выражение «3»</code> — он проверяет Выражение «1», и если оно верно, то тернарный оператор возвращает значение Выражения «2»; иначе — Выражения «3». <syntaxhighlight lang="php"> <?php $a = true; $b = false; $c = 11; $d = 10; $f = $a ? $c : $d; # Переменной $f присвоится значение переменной $c, # т. к. значение выражения $a истинно. $g = $b ? $c : $d; # Здесь наоборот: $g будет присвоено значение $d, # т. к. значение выражения $b ложно. $h = (!empty($n)) ? $n : $c + $d; # Сперва проверится существование # переменной $n. Т. к. она не существует, # переменной $h присвоится # сумма $c и $d, т. е. "21". ?> </syntaxhighlight> == Строковые функции PHP == Грамотно работать со строками очень важно для программиста. Строковых функций в '''PHP''' немало, причем многие из них, так или иначе, просто дублируют друг друга. Однако, приёмы работы с основными блоками функций (функции поиска и замены в тексте, функции удаления пробельных символом (trim-функции), функции форматного вывода) надо представлять очень чётко. ''Вообще говоря, по определению, строка — это последовательность символов типа '''char''', которая заканчивается нулевым символом. Поэтому можно, конечно, радоваться тому, что при работе со строками нам не приходится жонглировать указателями в стиле "C"/"[[C++]]", однако не стоит забывать о том, что цена этому удобству — быстродействие. Поэтому некоторые приводимые здесь функции мы будем обсуждать в том числе и с точки зрения их быстродействия.'' === Функция "htmlspecialchars" === <code>string htmlspecialchars(string $str)</code> Эта функция преобразовывает некоторые специальные символы [[HTML]] в другой формат. При этом они будут отображаться без учёта их специального назначения. '''Пример''' Корректное формирование и вывод гиперссылки, содержащей определённые параметры: <syntaxhighlight lang="php"> $link_search_subject = "Экранирование"; $link_label = "Поиск по слову " . "$link_search_subject"; echo '<a href=' . htmlspecialchars("http://ru.wikibooks.org/wiki/Служебная:Search?search=".urlencode($link_search_subject) ."&go=".urlencode("Перейти")).'">'.htmlspecialchars($link_label). '</a>'; </syntaxhighlight> Заметьте, что следующий (ниже представленный) код содержит грубое нарушение, так как формирует гиперссылку с атрибутом, содержащим незаконченную (не закрытую) ссылку на сущность (&…;) : <syntaxhighlight lang="php"> $link_search_subject = "Экранирование"; echo '<a href="http://ru.wikibooks.org/wiki/Служебная:Search?search='.urlencode($link_search_subject) .'&go='.urlencode("Перейти").'">'. // НАРУШЕНИЕ!! "Поиск по слову Экранирование". '</a>'; </syntaxhighlight> Это довольно часто встречаемая ошибка. === Функции поиска в тексте === ==== substr() ==== Функция '''<code>substr()</code>''' возвращает часть строки. Например: <syntaxhighlight lang="php"> echo substr('Simple text', 3, 7); </syntaxhighlight> Где «3» — точка отсчёта, а «7» — длина изымаемой строки. Если же требуется вести отсчёт от конца строки — используйте отрицательное значение. '''Пример''' Эта функция разобьёт число по трём разрядам: <syntaxhighlight lang="php"> <?php function my_int($value) { $len = strlen($value); if ($len <= 3) return $value; else return my_int(substr($value, 0, $len-3)) . ' ' . substr($value, $len-3, 3); } echo my_int(12345678); //=> 12 345 678 </syntaxhighlight> Для работы с разными кодировками используется функция: <code>string mb_substr ( string $str , int $start [, int $length [, string $encoding ]] )</code> ==== strpos() ==== <code>int strpos (string haystack, string needle [, int offset])</code> Возвращает позицию первого вхождения подстроки <code>needle</code> (в переводе с английского — «иголка») в строку <code>haystack</code> (в переводе с английского, как вы уже догадались, — «стог сена»). Необязательный аргумент <code>offset</code> позволяет указать, с какого по счёту символа строки <code>haystack</code> начинать поиск. Если подстрока <code>needle</code> не найдена — <code>strpos()</code> возвращает '''<code>FALSE</code>'''. '''Пример:''' Эта функция определяет модель браузера: <syntaxhighlight lang="php"> <?php function get_current_browser() { $browser = strtoupper($_SERVER['HTTP_USER_AGENT']); if(strpos($browser, 'MSIE') !== false) $browser = 'Internet Explorer'; elseif(strpos($browser, 'FIREFOX') !== false) $browser = 'Firefox'; elseif(strpos($browser, 'KONQUEROR') !== false) $browser = 'Konqueror'; elseif(strpos($browser, 'LYNX') !== false) $browser = 'Lynx'; else { $browser = $_SERVER['HTTP_USER_AGENT'];} return $browser; } get_current_browser(); ?> </syntaxhighlight> ==== strrpos() ==== Возвращает позицию последнего вхождения символа: <code>int strrpos (string haystack, string needle [, int offset])</code> Возвращает позицию последнего вхождения <code>needle</code> в строку <code>haystack</code>. В «'''PHP 4»''' используется только первый символ строки <code>needle</code>. Начиная с «'''PHP 5»''' необязательный аргумент <code>offset</code> позволяет указать, с какого по счету символа строки <code>haystack</code> начинать поиск. Отрицательное значение предписывает прекратить поиск при достижении определенной позиции до конца строки. Если подстрока <code>needle</code> не найдена — возвращает <code>FALSE</code>. '''Пример:''' Эта функция достаёт из [[w:URL|URL]] имя файла ('''только пример;''' в жизни, можно использовать функцию <code>basename()</code>): <syntaxhighlight lang="php"> function getfname($url) { $filename = ''; // Переменная для хранения результата обработки. // Ведём поиск первого слеша, // отделяющего путь к файлу // от имени домена: $pos = strrpos($url, '/', 8); // Начинаем с 8 символа (после "http://"). if ($pos === false) { return false; // Ошибка: неподходящий URL (нет слеша). } else { $filename = substr($url, $pos + 1); // Выделяем часть URL после слеша. } return $filename; // Возвращаем: или результат обработки, или ''. } </syntaxhighlight> ==== strstr(), stristr() ==== <code>string strstr (string $haystack, string $needle [, bool $before_needle = false ])</code> Возвращает подстроку строки <code>haystack</code>: начиная с индекса ''первого'' вхождения подстроки <code>needle</code> — до конца строки. Функция <code>stristr()</code> выполняет ту же функцию, но не чувствительна к регистру. '''Пример:''' <syntaxhighlight lang="php"> <?php print strstr('www.wikibooks.org', '.'); // Результат: ".wikibooks.org". ?> </syntaxhighlight> Для работы с разными кодировками используются функции: <code>string mb_strstr (string $haystack , string $needle [, bool $before_needle = false [, string $encoding ]])</code> <code>string mb_stristr (string $haystack , string $needle [, bool $before_needle = false [, string $encoding ]])</code> где параметр <code>encoding</code> — название используемой кодировки символов (например «'''UTF-8»'''); если этот параметр опущен — используется внутренняя кодировка. ==== strchr() ==== Эта функция является псевдонимом функции <code>strstr()</code>. ==== strrchr() ==== <code>string strrchr (string $haystack, char $needle)</code> Возвращает подстроку строки <code>haystack</code>: начиная с ''последнего'' вхождения <code>needle</code> — до конца строки. Если подстрока <code>needle</code> не найдена — возвращает <code>FALSE</code>. Если <code>needle</code> состоит более чем из одного символа — используется только первый символ. Если <code>needle</code> не является строкой — он приводится к целому и трактуется как код символа. '''Пример:''' <syntaxhighlight lang="php"> <?php print = strrchr('www.wikibooks.org', '.'); // Результат: ".org". ?> </syntaxhighlight> ==== substr_count() ==== <code>int substr_count (string $haystack, string $needle)</code> Возвращает число вхождений подстроки <code>needle</code> в строку <code>haystack</code>. Можно использовать или текст в кавычках (или апострофах), или переменные. '''Пример:''' <syntaxhighlight lang="php"> <?php print substr_count('www.wikibooks.org', 'o'); // Результат: "3". ?> </syntaxhighlight> ==== strspn() ==== Находит длину начального сегмента маски. <code>int strspn (string $str1, string $str2)</code> Возвращает длину начального сегмента <code>$str1</code>, состоящего полностью из символов строки <code>$str2</code>. '''Пример:''' <syntaxhighlight lang="php"> <?php return strspn("42 is the answer; what is the question?", "1234567890"); // Результат: "2". // (Т. к. в начале первой строки-аргумента // самым длинным сегментом, // состоящим только из символов, содержащихся во втором аргументе, // является сегмент "42", -- длиной в 2 символа.) ?> </syntaxhighlight> ==== strcspn() ==== Обратная к функции <code>strspn()</code>. Определяет отсутствие начальных символов в строке. Возвращает длину начального фрагмента строки <code>$str1</code>, состоящего полностью '''не''' из символов, которые есть в строке <code>$str2</code>. == Система пользователей == В этой статье будет описаны алгоритмы системы пользователей и их коды на языке '''PHP'''. === Регистрация === Алгоритм регистрации — самый простой из тех, что мы будем здесь использовать. Серверу предстоит записать: # Введённые пользователем данные; # Результат хеш-функции от пароля. <syntaxhighlight lang="html5"> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title> Регистрация </title> </head> <body> </syntaxhighlight> <syntaxhighlight lang="php"> <?php // Register // Подключение к "MySQL"-серверу // (с выводом ошибки в случае неудачи): mysql_connect("localhost", "root", "") or die(mysql_error); // Подключение к базе данных "deskside" // (с выводом ошибки в случае неудачи): mysql_select_db("deskside") or die(mysql_error); // Запрос на получение списка всех пользователей из таблицы "users", // упорядоченного по возрастанию значений поля "id": $find_id_sql = mysql_query("SELECT * FROM users ORDER BY id ASC"); $find_id_row = mysql_num_rows($find_id_sql); // Получение списка пользователей из таблицы "users", // чьи логины совпадают со значением, полученным в "POST"-запросе: $find_names = mysql_query("SELECT * FROM users " ."WHERE login='" .$_POST['login']."'"); $find_row = mysql_num_rows($find_names); $id_counter = 1; // Вычисление последнего ID: while ($find_id_row = mysql_fetch_assoc($find_id_sql)){ $id_counter += 1; } $user_already = false; // Булевская переменная для сохранения результатов // проверки: есть ли уже такой пользователь, // с данным "login". if ($_POST['register']) // Если дан запрос именно что на регистрацию. { while($find_row == mysql_fetch_assoc($find_names)) { // Поиск пользователя с данным "login". if ($find_row['login'] == $_POST['login']){ // Если нашёлся... $user_already = true; // ...то отмечаем это как результат break; // ...и выходим из цикла. } } // Если пользователь с таким "login" уже есть. if($user_already){ // Уведомляем отправителя запроса об этом. echo " <p> Такой пользователь уже есть. <br /> <a href=\"http://localhost/register.htm\"> Пройти регистрацию заново... </a> </p> "; } else { // Если пользователя с таким "login" всё-таки нет, // то регистрируем данный "login" для нового пользователя. // Проверка совпадения паролей: if ($_POST['password'] == $_POST['second_password']) { // Если совпали: // 1. Хэширование пароля для базы данных. $md5_password = md5($_POST['password']); // 2. Запрос "MySQL"-серверу на сохранение регистрационных данных // в соответствующую таблицу ("users"): mysql_query("INSERT INTO users " ."(`id`, `login`, `password`, `e-mail`, `name`) " ."VALUES ('" .$id_counter ."', '" .$_POST['login'] ."', '" .$md5_password ."', '" .$_POST['e-mail'] ."', '" .$_POST['name'] ."')"); // 3. Уведомляем отправителя запроса: echo "Регистрация проведена успешно."; } else { echo " <p> Ошибка регистрации: пароли не совпадают! <br /> <a href=\"http://localhost/register.htm\"> Пройти регистрацию заново... </a> </p> "; } } } if ($_POST['register']) { // Если пользователь уже нажал кнопку "РЕГИСТРАЦИЯ", // то зачем ему заново показывать форму?! } else { // Если он уже кликнул, то мы не показываем форму, // а выводим либо сообщение о подтверждении, либо об ошибке: echo ' <form method=\"post\"> <p> Логин: <input type=\"text\" name=\"login\" /> </p> <p> Пароль: <input type=\"password\" name=\"password\"> </p> <p> Пароль ещё раз: <input type=\"password\" name=\"second_password\" /> </p> <p> E-mail: <input type=\"email\" name=\"e-mail\" /> </p> <p> Ваше имя: <input type=\"text\" name=\"name\" /> </p> <input type=\"submit\" name=\"register\" value=\"Зарегистрироваться\"> </form> '; } ?> </syntaxhighlight> <syntaxhighlight lang="html5"> </body> </html> </syntaxhighlight> === Авторизация пользователя === [[Файл:Алгоритм_входа_пользователя.png|thumbnail|180px|Алгоритм авторизации пользователя]] Вход пользователя будет производиться по следующему алгоритму: #Пользователь заполняет форму: «Логин», «Пароль»; #Данные запоминаются в переменной <code>$_POST</code>, после чего будут обрабатываться на сессии<ref>Преимущество сессий в том, что обычный пользователь даже не заметит, как его перенаправили на другую страницу, а значит будет сложнее взломать PHP-код. На странице входа отображается только перенаправление на session.php и форма входа. Если конечно не посмотрит внимательно на HTML-код, но это ему ничего не даст, по скольку он не сможет взять из файла session.php сам PHP-код</ref>; #Уже в сессии хешируется введённый пользователем пароль, алгоритмом [[w:MD5|MD5]]; #Выполняется подключение к базе данных «SQL» и импорт данных со строки пользователя ''admin'' (допустим, пользователь ввёл имя пользователя ''admin''). Затем вся строка записывается в массив <code>$table</code> — такой вариант поможет сократить много нервов и строк; #Сравнение зашифрованного пароля, который в базе данных, — с зашифрованным, введённым пользователем; #Если пароли совпадают, записываются «COOKIE» с информацией об авторизации пользователя. <code>("user_enter" & "user_login")</code>; #Закрытие сессии методом перенаправления на другую страницу. - <code>header (Location: ...)</code>; ===== '''Форма входа''' ===== <syntaxhighlight lang="php"> <?php session_start(); # Этот шаблон можно вставлять в любую часть сайта; # он будет работать в любом случае. ?> </syntaxhighlight> <syntaxhighlight lang="html5"> <form action="session.php" method="POST"> <p> Логин: <input type="text" name="login" /> </p> <p> Пароль: <input type="password" name="password" /> </p> <input type="submit" value="Вход" /> </form> </syntaxhighlight> ====='''Сессия (session.php)'''===== <syntaxhighlight lang="php"> <?php // Заметьте: Нет команд "echo" -- // эту команду можно использовать // только после того, как отправились все "куки". // // P.S.: Если на странице используются "куки" -- // лучше не использовать кодировку "UTF-8". session_start(); // Если пользователь кликнул "Выход": if ($_POST['exit']){ // ...то чистим "куки" // о его авторизации и логине: unset($_COOKIE['user_enter']); unset($_COOKIE['user_login']); } // Подключение к "MySQL"-серверу: // localhost - стандартный адрес сервера баз данных, // если тот запущен на локальном компьютере; // root - логин для пользователя "MySQL"; // 1234 - пароль для пользователя "MySQL". mysql_connect("localhost", "root", "1234") or die(mysql_error); // Подключение к базе данных: mysql_select_db("base") or die(mysql_error); // где "base" - имя базы данных. $check_password = mysql_query("SELECT * FROM `base`.`users`" ."WHERE (login='" .$_POST['login'] ."')"); // "SQL"-запрос для проверки пароля. $row_check_password = mysql_num_rows($check_password); // Получение данных о пользователе: while($row_check_password = mysql_fetch_assoc($check_password)){ // ID пользователя: $table['id'] = $row_check_password['id']; // Логин пользователя: $table['login'] = $row_check_password['login']; // Пароль (в зашифрованном виде) пользователя: $table['password'] = $row_check_password['password']; // Имя блога пользователя: $table['blog_name'] = $row_check_password['blog_name']; } // Проверка паролей: if ($_POST['enter']){ // Хеширование пользовательского пароля: $md5_password = md5($_POST['password']); // Если хеш пароля, введённого пользователем, и логин // совпадают с хешем пароля и с логином из базы данных: if ($md5_password == $table['password'] && $_POST['login'] == $table['login']){ // Пользователь вошёл в систему: setcookie("user_enter", true); // "Кука": пользователь авторизировался. setcookie("user_login", $_POST['login']); // "Кука": логин. setcookie("user_blog", $table['blog_name']); // "Кука": имя блога. }else{ // Пароль не подтвердился: setcookie("user_login", "no_enter"); // "Кука": Логин "не вошёл". setcookie("user_enter", false); // "Кука": Пользователь не вошёл. } } // Перенаправление на главную страницу: header('Location: http://deskside/main.php?page=home'); ?> </syntaxhighlight> === Вывод данных пользователя === Для вывода данных пользователя будут использоваться куки, но поскольку они могут содержать только латинские буквы и цифры — они будут использоваться только как идентификатор имени пользователя и подтверждения его авторизации. Пользователю нужно выводить максимум информации о его ошибках. Если Ваш проект будет очень большим и пользователь при входе будет вводить не только логин и пароль, а ещё 20 полей — то пользователю будет не очень удобно, при опечатке, смотреть на такое сообщение: <blockquote>Возможно, Вы ошиблись при заполнении данных... Попробуйте ещё раз.</blockquote>Ему будет гораздо приятнее, если ему выведут сообщение с возможным полем опечатки и самой опечаткой. Но в нашем варианте, будет рассматриваться только вариант с логином и паролем. Естественно, невозможно использовать один и тот же текст для вывода разной информации. Всего их три: * Если пользователь авторизировался; * Если пароли не совпадают; * Если пользователь ещё не авторизировался и хочет ввести свои данные. Проще всего будет просто выводить шаблон на страницу ('''$login_form''').<br /> ====='''Пользователь авторизировался'''===== <syntaxhighlight lang="php"> if ($_COOKIE['user_enter']){ $login_form =' <form method="post"> Вы вошли как <b>'.$login.'</b> <br> <br> <a href="http://deskside/main.php?page=register">Регистрация</a> <br> <a href="http://deskside/main.php?page=profile">Профиль</a> <br> <input type="submit" name="exit" value="Выход"> </form> '; } </syntaxhighlight> ====='''Пароли не совпали'''===== <syntaxhighlight lang="php"> if($_COOKIE['user_login'] == "no_enter" And $_COOKIE['user_enter'] == false){ $login_form = ' <form method="post"> Ошибка: Пароль неправильный! <br> <hr> <b><input type="submit" name="exit" value="Ввести снова"></b> <br> <a href="http://deskside/main.php?page=register">Регистрация</a> </form> '; } </syntaxhighlight> ====='''Форма авторизации'''===== <syntaxhighlight lang="php"> $login_form = ' <table> <tr> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr> <td>&nbsp;</td> <td class="style10"> <form action="session.php" method="POST"> Логин: <br> <input type="text" name="login"> <br> Пароль: <br> <input type="password" name="password"> <br> <hr> <input type="submit" name="enter" value="Войти"> <br> <br> <a href="http://deskside/main.php?page=register">Регистрация</a> </form> </td> <td>&nbsp;</td> </tr> <td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> </td> </table> '; </syntaxhighlight> == Примечания == {{примечания}} == См. также == * [[v:PHP|PHP]] — курс в Викиверситете == Ссылки == * [http://docs.php.net/manual/ru/ Руководство по PHP] (включая FAQ) * [http://www.php.net/docs.php Documentation] * [http://php.net/manual/en/index.php PHP Manual] (оригинал, англ.) * [http://www.php-s.ru/self-teacher/ Самоучитель (учебник) по PHP] 805zbb8kdk66sln14lvj0b886mdbay7 270188 270187 2026-10-06T08:07:21Z Или Редактор 79899 /* Начало работы */ опечатка 270188 wikitext text/x-wiki {{Название учебника |Категория = Веб-разработка, Программирование |Тип = Многостраничный }} {{wikipedia}} '''PHP''' (произносится ''пи-эйч-пи́'')&nbsp;— [[w:скриптовый язык|скриптовый язык]] программирования, созданный для генерации [[w:HTML|HTML]]-страниц на [[w:веб-сервер|веб-сервере]] и работы с [[w:база данных|базами данных]]. На сегодняшний момент поддерживается на подавляющем большинстве [[w:хостинг|хостингов]]. Входит в [[w:LAMP|«LAMP»]] — «стандартный» набор для создания [[w:сайт|веб-сайтов]]. == Начало работы == Для того чтобы начать работать с PHP, достаточно установить интерпретатор для вашей операционной системы и запустить встроенный веб-сервер, для чего открыть окно командной строки и набрать <code>php -S localhost:8080</code>. После этого текущая папка будет служить корневой папкой вашего веб-сервера и можно будет обратиться к любому файлу в ней через браузер, например http://localhost:8080/test.php. Кроме того, PHP-скрипты можно запускать прямо в командной строке, набрав <code>php test.php</code>. == Теги PHP == Поскольку '''PHP''' исходно задумывался как язык для создания динамических веб-страниц (т.е. таких, содержимое которых меняется в зависимости от запроса пользователя или содержимого базы данных), необходимо было научить интерпретатор языка отличать инструкции '''PHP''' от HTML-разметки. Для этого служат теги '''PHP''': открывающий, <code><?php</code> и закрывающий <code>?></code>. PHP-код будет исполняться только если заключен между ними. Есть ещё два вида открывающих тегов PHP: короткий тег <code><?</code> и тег вывода («укороченный <code>echo</code>»), <code><?=</code>. <syntaxhighlight lang="php"> <p>Этот текст PHP проигнорирует, он будет выведен как есть: 2+2</p> <?php echo "Эта строка будет обработана интерпретатором<br>\n", 2+2; ?> <p>Этот текст PHP тоже проигнорирует</p> <?= "чтобы не писать всё время php echo можно воспользоваться тегом вывода<br>\n"; ?> <p>И этот текст PHP проигнорирует</p> <? echo "эта строка может быть как обработана, так и проигнорирована, в зависимости от настроек<br>\n"; ?> </syntaxhighlight> Поскольку, в отличие от двух других, короткий открывающий тег <code><?</code> может быть отключен в конфигурации (что и сделано по умолчанию), он не рекомендуется к использованию. Самый последний закрывающий тег на странице ставить не обязательно. Если страница содержит только РНР код, то закрывающий тег ставить не рекомендуется. == Комментарии == '''PHP''' предоставляет несколько методов для вставки комментариев. Проще всего пользоваться двойной косой чертой (//), после чего '''PHP'''-машина игнорирует всё, что расположено до конца строки. Также можно пользоваться многострочными комментариями в стиле "C" / [[C++|"С++"]] (/*…*/). Для однострочных комментариев можно ещё пользоваться символом решётки (#) (комментарий сценарных языков операционной системы [[UNIX|"UNIX"]]). <syntaxhighlight lang="php"> <?php print '<p>Hello</p>'; // Комментарий print '<p>Hello</p>'; # Комментарий /* Комментарий ... и это тоже комментарии */ // Комментарии очень удобны в тех случаях, // когда необходимо исключить часть кода // для отладки программы; например: $uname = $_POST['uname']; // $uname = preg_replace('#[^a-zA-Z0-9\_\-\.]#', '', $uname); // Закомментировали часть кода, // так как не выводится желаемый результат; // возможно, дело в этой строке: echo $uname; # Изначально, комментарии создавались для того, // чтобы, не нарушая работы программы, // добавить описание к той или иной строке; // например: echo getUsersOnline(2, 1, 4); /* Аргументы функции: 0 - номер открытого соединения с базой данных; 1 - режим ответа ("0" - массив / "1" - строка); 2 - кол-во минут, прошедших с момента последней активности пользователя (необязательный) */ </syntaxhighlight> Следует помнить о том, что стили комментариев '''PHP''' действуют только внутри ограничителей '''PHP'''. Если '''PHP''' встретит эти символы комментариев вне ограничителей, то они, как и любой текст, будут помещены на HTML-страницу. Например: <syntaxhighlight lang="php"> <?php print '<p>Hello</p>'; //Нормальный комментарий. </syntaxhighlight> <syntaxhighlight lang="html5"> // А вот этот комментарий отобразится браузером. <!-- Комментарий HTML. Будет виден в исходном коде HTML, но не в браузере. --> </syntaxhighlight> == Переменные == В '''РНР''' переменные начинаются со знака доллара ($). За этим знаком может следовать любое количество буквенно-цифровых символов и символов подчёркивания, но первый символ не может быть цифрой. Следует также помнить, что имена переменных в '''РНР''' чувствительны к регистру, в отличие от ключевых слов. При объявлении переменных в '''РНР''' не требуется явно указывать тип переменной; при этом одна и та же переменная может иметь на протяжении программы разные типы. Переменная инициализируется в момент присвоения ей значения и существует до тех пор, пока выполняется программа (в случае ''web''-страницы — пока не завершён запрос) или она не будет удалена функцией <code>unset()</code>. === Функции вывода === В '''PHP''' существует несколько способов вывести что-либо в [[w:Веб-страница|веб-страницу]]: {| class="wikitable" !Средство !Результат |- |Операторы <code>echo</code> и <code>print</code> |Выводят значение аргумента, одним и тем же образом. Различие: <code>print</code> — всегда возвращает "1"; <code>echo</code> — ничего не возвращает. |- |Функция <code>print_r()</code> |Позволяет корректно выводить массивы. |- |Функция <code>var_dump()</code> |Выводит переменную вместе с типом. Очень удобный инструмент для отладки. |} ==== Вывод различных функций ==== {| class="wikitable" ! Аргумент ! <code>echo</code> ! <code>print_r()</code> ! <code>var_dump()</code> |- | <code>1</code> | <code>1</code> | <code>1</code> | <code>int(1)</code> |- | <code>1.1</code> | <code>1.1</code> | <code>1.1</code> | <code>double(1.1)</code> |- | <code>false</code> | style="background-color: lightred" | &nbsp; | style="background-color: lightred" | &nbsp; | <code>bool(false)</code> |- | <code>array( 1, 2, 3 )</code> | <code>Array</code> | <code>Array ( [0] => 1 [1] => 2 [2] => 3 ) </code> | <code>array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }</code> |- | <code>"Test"</code> | <code>Test</code> | <code>Test</code> | <code>string(4) "Test"</code> |} === Типы данных в РНР === Как уже было сказано, '''PHP''' предоставляет определённую гибкость в отношении типов переменных, — то есть, с одной и той же переменной на протяжении программы можно работать ''и как со строкой, и как с числом.'' Однако несмотря на это, в '''РНР''' существует набор основных типов данных, которые могут явно указываться при работе с переменными: {| class="wikitable" !Обозначение !Тип данных |- |integer |Целое число. |- |string |Строка символов. |- |boolean |Двоичное данное (либо «Истина», либо «Ложь»). |- |double |Десятичное число; 1—2 значащих разряда в дробной части. |- |float |Десятичное число с плавающей точкой. Более 2 значащих разрядов в дробной части. |- |[[PHP/Массивы|array]] |Массив объектов. |- |object |Объект. |- |NULL |Пустой тип. |- |Resource |Ресурс. |} Есть функция <code>gettype()</code>, возвращающая тип, который '''РНР''' назначил переменной: <syntaxhighlight lang="php"> <?php $var1 = '5'; $var2 = 5; echo gettype($var1) # Будет возвращено: "string". . '<br>' # Операция "." используется для склеивания строк. . gettype($var2); # Будет возвращено: "integer". ?> </syntaxhighlight> Существует также функция <code>settype()</code>, которая явно устанавливает тип: <syntaxhighlight lang="php"> <?php $var = '5'; echo gettype($var); # Будет возвращено: "string". settype($var, 'integer'); echo '<br />' . gettype($var); # Будет возвращено: "integer". ?> </syntaxhighlight> Кроме функции <code>settype()</code>, преобразование типов в '''РНР''' можно осуществлять при помощи операторов преобразования типов. Преобразование типов осуществляется путём указания перед переменной её нового типа, взятого в скобки:<syntaxhighlight lang="php"> $var = (integer)$var; </syntaxhighlight> Соответственно, выполнение следующего кода приведёт к тому, что '''РНР''' вернёт «''integer»'': <syntaxhighlight lang="php"> <?php $var = '5'; # Изначально, создаётся переменная типа "string" (строковая). $var = (integer)$var; # Преобразуем её тип в "integer" (целочисленный). echo gettype($var); # Отображаем окончательный тип переменной: "integer". ?> </syntaxhighlight> === Внешние переменные === После того, как запрос клиента проанализирован веб-сервером и передан '''РНР'''-интерпретатору, последний устанавливает ряд переменных, которые содержат данные запроса и доступны всё время его выполнения. Сначала '''PHP''' инициализирует массивы <code>$_ENV</code> (содержащий переменные среды-окружения; англ. ''environment'') и <code>$_SERVER</code><ref>. На самом деле порядок инициализации суперглобальных массивов зависит от настроек в файле ''php.ini''</ref>. Ассоциативный массив <code>$_SERVER</code> содержит следующие ключи (индексы массива): {| class="wikitable" !Ключ (индекс ячейки массива) !Полный путь к ячейке массива !Содержимое ячейки массива |- |<code>HTTP_USER_AGENT</code> |<code>$_SERVER['HTTP_USER_AGENT']</code> |Сведения о браузере клиента. |- |<code>HTTP_ACCEPT</code> |<code>$_SERVER['HTTP_ACCEPT']</code> |Принимаемые MIME-типы. Может служить для определения возможностей браузера. |- |<code>PHP_SELF</code> |<code>$_SERVER['PHP_SELF']</code> |Путь к файлу, содержащему выполняющийся скрипт, относительно корневого каталога (папки) сервера. Пример: <code>/w/index.php</code>. |} Затем '''РНР''' заполняет переменную <code>$_GET[]</code>, являющуюся ассоциативным массивом, которая создаётся при анализе строки запроса. Строка запроса хранится в элементе массива <code>$_SERVER['QUERY_STRING']</code> и представляет собой информацию, следующую за символом «?» в запрошенном URL. '''РНР''' разбивает строку запроса по символам «&»<ref>Символ разделения также может меняться в файле ''php.ini''. Часто используется символ «;».</ref> на отдельные элементы, а затем ищет в каждом из этих элементов знак «=». Если знак «=» найден, то создаётся переменная с именем из символов, стоящих слева от знака равенства. Рассмотрим следующую форму: <syntaxhighlight lang="html5"> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title> Введите данные. </title> </head> <body> <form action="http://localhost/PHP/test.php" method="get"> <p> HDD: </p> <input type="text" name="HDD" /> <br /> <p> CD-ROM: </p> <input type="text" name="CD-ROM" /> <br /> <input type="submit" value="Отправить" /> </form> </body> </html> </syntaxhighlight> Если Вы сохраните этот фрагмент кода в виде HTML-файла и откроете его в веб-браузере, то увидите форму ввода. Если в строке «HDD» набрать какой-либо текст (к примеру, ''«''Maxtor»), и также в строке «CD-ROM» (например, «Nec»), то по нажатию на '''«Отправить»''' будет составлен запрос: <code>[http://localhost/PHP/test.php?HDD=Maxtor&CDROM=Nec http://localhost/PHP/test.php?HDD=Maxtor&CD-ROM=Nec]</code> — и при этом '''РНР''' создаст следующие элементы массива с соответствующими индексами (ключами): <code>$_GET['HDD'] = 'Maxtor'</code> и <code>$_GET['CDROM'] = 'Nec'</code>. Вы можете работать с ними (т.е. с этими переменными) из Вашего скрипта (у нас — "test.php") как с обычными переменными; в нашем случае — они просто выводятся на экран: <syntaxhighlight lang="php"> <?php echo "<p>HDD is " . $_GET['HDD'] . "</p>"; echo "<p>CDROM is " . $_GET['CDROM'] . "</p>"; ?> </syntaxhighlight> Если запрос страницы выполняется при помощи метода <code>POST</code>, то появляется группа ''POST''-переменных, которые интерпретируются так же и помещаются в массив <code>$_POST[]</code>. == Константы == Константы объявляются в '''РНР''' при помощи функции <code>define()</code>: <syntaxhighlight lang="php"> define('CONSTANT', value) </syntaxhighlight> Первый параметр этой функции — имя константы, второй — её значение. При использовании константы на неё ссылаются по имени: <syntaxhighlight lang="php"> <?php define('CONSTANT1', 15); define('CONSTANT2', "\x20"); //Шестнадцатеричный код символа пробела define('CONSTANT3', 'Hello'); echo CONSTANT1; echo CONSTANT2; echo CONSTANT3; ?> </syntaxhighlight> По традиции имена констант пишут буквами верхнего регистра. И хотя это только традиция, мы рекомендуем Вам следовать ей, поскольку «плохие» программисты получаются в том числе и из тех, кто не следовал хорошим традициям. Существует функция <code>defined()</code>, которая проверяет, определена ли константа: <syntaxhighlight lang="php"> <?php define('CONSTANT', 'Hello'); if(defined('CONSTANT')) echo '<p>CONSTANT is defined</p>'; ?> </syntaxhighlight> == Операторы == === Математические операторы === В '''PHP''', как и в любом другом языке программирования, есть базовый набор математических операторов: {| class="wikitable" !Оператор !Операция !Примечания |- |<code>-</code> |Смена знака числа. | |- |<code>-</code> |Вычитание. | |- |<code>+</code> |Сложение. | |- |<code>*</code> |Умножение. | |- |<code>/</code> |Деление. |Всегда возвращает тип <code>float</code>, вне зависимости от результата. |- |<code>%</code> |Деление по модулю. |Возвращает остаток от деления. |} === Инкремент и декремент === *Возвращают старое значение $a: **<code>$a++</code> — увеличить $a на 1; **<code>$a--</code> — уменьшить $a на 1. *Возвращают новое значение $a: **<code>++$a</code> — увеличить $a на 1; **<code>--$a</code> — уменьшить $a на 1. === Операторы сравнения === Существуют следующие операторы сравнения: {| |'''Оператор''' |'''Проверка''' |'''Условие истинности''' (возвращается <code>true</code>) |- | <code>$a == $b</code> |Равно | '''$a''' равно '''$b'''. |- | <code>$a === $b</code> |Идентично | '''$a''' равно '''$b''' и они одного и того же типа. |- | <code>$a != $b</code> или <code>$a <> $b</code> |Не равно | '''$a''' не равно '''$b'''. |- | <code>$a > $b</code> |Строго больше | '''$a''' строго больше '''$b'''. |- | <code>$a < $b</code> |Строго меньше | '''$a''' строго меньше '''$b'''. |- | <code>$a >= $b</code> |Больше или равно | '''$a''' или больше, или равно '''$b'''. |- | <code>$a <= $b</code> |Меньше или равно | '''$a''' или меньше, или равно '''$b'''. |} === Операторы присвоения === Для присвоения переменной нового значения используется оператор «<code>=</code>»: <syntaxhighlight lang="php"> $a = $b + $c - 127; </syntaxhighlight> Также существуют сокращённые операторы присвоения: <code>+=</code>, <code>-=</code>, <code>.=</code>, <code>/=</code>, <code>*=</code>, <code>%=</code>. Пример: <syntaxhighlight lang="php"> $a = $a + 1; #равносильно $a += 1; </syntaxhighlight> === Поразрядные операторы === Эта группа операторов работает с битовыми представлениями значений целочисленных операндов. В основном эти операторы применяются для создания набора булевых флагов: {| class="wikitable" |'''Оператор''' |'''Операция''' |- | <code>&</code> || Поразрядная конъюнкция (AND). |- | <code><nowiki>|</nowiki></code> || Поразрядная дизъюнкция (OR). |- | <code>^</code> || Поразрядное исключающее ИЛИ (XOR). |- | <code>~</code> || Поразрядное отрицание (NOT). |- | <code><nowiki><<</nowiki></code> || Битовое представления значения левого целочисленного операнда сдвигается влево, на количество разрядов, равное значению правого целочисленного операнда. |- | <code><nowiki>>></nowiki></code> || Битовое представление значения левого целочисленного операнда сдвигается вправо, на количество разрядов, равное значению правого целочисленного операнда. |} <syntaxhighlight lang="php"> <?php echo (4<<2); //16 echo "<br />"; echo (5>>1); //2 echo "<br />"; echo (6&5); //4 echo "<br />"; echo (6|5); //7 echo "<br />"; echo (6^5); //3 ?> </syntaxhighlight> === Операторы ветвления алгоритмов (if… elseif… else…) === Оператор <code>if</code> позволяет выполнять определённый код только при выполнении определённого условия: <syntaxhighlight lang="php"> <?php $a = 1; $b = null; $c = 2 * 3; $d = true; if($a) echo "if(\$a);<br />"; if($b) echo "if(\$b);<br />"; if($c) echo "if(\$c);<br />"; if(!$d) echo "if(!\$d);<br />"; if($a < $c) echo "\$a < \$c;<br />"; ?> </syntaxhighlight> Этот код выводит следующие строки: <pre>if($a); if($c); $a < $c; </pre> Чтобы выполнять код, только если условие не выполнилось — можно использовать блок <code>else</code>: <syntaxhighlight lang="php"> <?php if(isset($_GET['test'])) echo 'Query contains "test" parameter'; else echo 'Query doesn\'t contain "test" parameter'; ?> </syntaxhighlight> Можно использовать инструкцию <code>elseif</code> (англ. «иначе, если»): <syntaxhighlight lang="php"> <?php if($_GET['test'] == "foo") echo 'test = "foo"'; elseif(isset( $_GET['test'])) echo 'Query contains "test" parameter, but it isn\'t "foo"'; else echo 'Query doesn\'t contain "test" parameter'; ?> </syntaxhighlight> === Переключатель (switch) === <syntaxhighlight lang="php"> <?php $a = "A"; switch($a) { case 'A': echo 'Переменная имеет значение "А"'; break; case 'B': echo 'Переменная имеет значение "B"'; break; default: echo 'Ответ не найден'; } ?> </syntaxhighlight> Вышенаписанный пример выведет: «Переменная имеет значение „A“» — и то же выведет следующий пример: <syntaxhighlight lang="php"> <?php $a = "A"; if($a == "A") echo "Переменная имеет значение \"A\""; elseif($a == "B") echo "Переменная имеет значение \"B\""; else echo "Ответ не найден"; ?> </syntaxhighlight> === Операторы цикла === Операторы цикла задают многократное исполнение операторов в теле цикла. В '''PHP''' определены 4 разных оператора цикла: *Цикл с предусловием: <code>while(condition) { statements; }</code> *Цикл с постусловием: <code>do { statements; } while(condition);</code> *Итерационный цикл: <code>for(expression1; expression2; expression3) { statements; }</code> *Итерационный цикл <code>foreach</code> (т.е. перебор элементов массива): <code>foreach(array as [$key =>] $value) { statements; }</code> Если 3 первых оператора цикла берут своё начало от "[[C++|С]]"-подобных языков, то последний оператор позаимствован у языка "[[Perl]]". ==== while ==== Оператор <code>while</code> называется оператором цикла с предусловием. При входе в цикл вычисляется выражение условия, и, если его значение отлично от нуля, выполняется тело цикла. Затем — вычисления выражения условия и операторов тела цикла выполняется до тех пор, пока значение выражения условия не станет равным нулю. Оператором <code>while</code> удобно пользоваться для просмотра всевозможных последовательностей, если в конце них находится заранее известный символ. (Это очень удобно в "[[C++]]", — к примеру, для определения длины строки, — поскольку в "[[C++|С++]]", по определению, строка есть последовательность символов типа "char", заканчивающаяся нулевым символом: <code>\0</code>). Пример простейшего цикла <code>while</code>: <syntaxhighlight lang="php"> <?php $var = 5; $i = 0; while(++$i <= $var) echo $i . '<br />'; ?> </syntaxhighlight> Этот код выдает в окне браузера цифры от одного до пяти. Для выхода из цикла применяется оператор <code>break</code>. При обнаружении этого оператора все итерации прекращаются. Пример: при выполнении нижеприведённого цикла — несмотря на то, что переменная <code>$var = 7</code> — в окне браузера появятся цифры «1»—«5», исключая «6» и «7»: <syntaxhighlight lang="php"> <?php $var = 7; $i = 0; while(++$i <= $var) { echo $i . '<br />'; if($i == 5) break; } ?> </syntaxhighlight> Чтобы перейти в следующую итерацию применяется <code>continue</code>: <syntaxhighlight lang="php"> <?php $var = 7; $i = 0; while (++$i <= $var) { if($i == 5) continue; echo $i . '<br />'; } ?> </syntaxhighlight> В этом примере выводятся цифры «1»—«7», за исключением «5». Заметим, что если Вы расположите условный оператор после операторов <code>echo</code> — код будет ошибочным (т.к. выведутся все цифры, включая «5»), поскольку проверка условия выхода из итерации будет происходить уже после полного выполнения этой итерации. Бесконечный цикл реализуется при помощи оператора <code>while</code> следующим образом: <syntaxhighlight lang="php"> while(true) { ... } </syntaxhighlight> ''Примечание:'' в '''PHP''' стандартное время исполнения скрипта — 30 секунд (эту настройку можно изменить в файле "php.ini"); по его прошествии с начала выполнения скрипта действие скрипта будет прервано. Таким образом, наибольшее время выполнения «бесконечного» цикла (без изменения настроек) — полминуты. ==== do… while… ==== Этот оператор называется оператором цикла с пост-условием. При входе в цикл в любом случае выполняется тело цикла (то есть цикл ''всегда'' будет выполнен хотя бы один раз); затем — вычисляется условие, и если оно не равно «0», то вновь выполняется тело цикла и проверка условия. В нижеследующем примере — «нуль» всегда будет добавлен в список, независимо от условия <code>(++$i <= $var)</code>: <syntaxhighlight lang="php"> <?php $var = 5; $i = 0; do { echo $i . '<br />'; } while(++$i <= $var); ?> </syntaxhighlight> Результат: <syntaxhighlight lang="html5"> 0<br />1<br />2<br />3<br />4<br />5<br /> </syntaxhighlight> Цикл с постусловием бывает полезен при обработке некоторых последовательностей — когда обработку нужно заканчивать не «до», а «после» появления концевого признака. Бесконечный цикл реализуется так: <syntaxhighlight lang="php"> do { ... } while(true); </syntaxhighlight> ==== for ==== Как уже говорилось, итерационный цикл имеет следующий формат: <syntaxhighlight lang="php"> for(expression1; expression2; expression3) { statements; } </syntaxhighlight> Здесь <code>expression1</code> (инициализация цикла) — последовательность определений и выражений, разделяемая запятыми. Все выражения, входящие в инициализацию, вычисляются только один раз, при входе в цикл. Как правило, здесь устанавливаются начальные значения счётчиков и параметров цикла. Смысл выражения-условия <code>expression2</code> — такой же как и у циклов с предусловиями; при отсутствии выражения-условия предполагается, что его значение всегда истинно. Выражения <code>expression3</code> вычисляются в конце каждой итерации после выполнения тела цикла. В следующем скрипте мы по традиции выведем числа от «0» до «5»: <syntaxhighlight lang="php"> <?php $var = 5; for($i = 0; $i <= $var; $i++) { echo $i . '<br />'; } ?> </syntaxhighlight> Результат аналогичен показанному для «do… while…». ==== foreach ==== Оператор цикла <code>foreach</code> предназначен для работы с элементами массива. Следующий код превратит все элементы массива в единицы: <syntaxhighlight lang="php"> <?php $arr = array(1, 2, 3, 4); $i = 0; foreach ($arr as &$a) { $a -= $i++; } ?> </syntaxhighlight> Также предусмотрена возможность работы с ассоциативными массивами. При обработке следующего кода в переменной <code>$name</code> будет храниться ассоциативный индекс элемента, а в переменной <code>$value</code> — его значение. Проще говоря, <code>($arr[$name] == $value)</code>. <syntaxhighlight lang="php"> <?php ... foreach ($arr as $name => $value) { //тело цикла } ?> </syntaxhighlight> === Тернарный оператор «?:» === Тернарный оператор «'''?:'''» — это вид условного оператора. В случае с записью вида <code>Выражение «1» ? Выражение «2» : Выражение «3»</code> — он проверяет Выражение «1», и если оно верно, то тернарный оператор возвращает значение Выражения «2»; иначе — Выражения «3». <syntaxhighlight lang="php"> <?php $a = true; $b = false; $c = 11; $d = 10; $f = $a ? $c : $d; # Переменной $f присвоится значение переменной $c, # т. к. значение выражения $a истинно. $g = $b ? $c : $d; # Здесь наоборот: $g будет присвоено значение $d, # т. к. значение выражения $b ложно. $h = (!empty($n)) ? $n : $c + $d; # Сперва проверится существование # переменной $n. Т. к. она не существует, # переменной $h присвоится # сумма $c и $d, т. е. "21". ?> </syntaxhighlight> == Строковые функции PHP == Грамотно работать со строками очень важно для программиста. Строковых функций в '''PHP''' немало, причем многие из них, так или иначе, просто дублируют друг друга. Однако, приёмы работы с основными блоками функций (функции поиска и замены в тексте, функции удаления пробельных символом (trim-функции), функции форматного вывода) надо представлять очень чётко. ''Вообще говоря, по определению, строка — это последовательность символов типа '''char''', которая заканчивается нулевым символом. Поэтому можно, конечно, радоваться тому, что при работе со строками нам не приходится жонглировать указателями в стиле "C"/"[[C++]]", однако не стоит забывать о том, что цена этому удобству — быстродействие. Поэтому некоторые приводимые здесь функции мы будем обсуждать в том числе и с точки зрения их быстродействия.'' === Функция "htmlspecialchars" === <code>string htmlspecialchars(string $str)</code> Эта функция преобразовывает некоторые специальные символы [[HTML]] в другой формат. При этом они будут отображаться без учёта их специального назначения. '''Пример''' Корректное формирование и вывод гиперссылки, содержащей определённые параметры: <syntaxhighlight lang="php"> $link_search_subject = "Экранирование"; $link_label = "Поиск по слову " . "$link_search_subject"; echo '<a href=' . htmlspecialchars("http://ru.wikibooks.org/wiki/Служебная:Search?search=".urlencode($link_search_subject) ."&go=".urlencode("Перейти")).'">'.htmlspecialchars($link_label). '</a>'; </syntaxhighlight> Заметьте, что следующий (ниже представленный) код содержит грубое нарушение, так как формирует гиперссылку с атрибутом, содержащим незаконченную (не закрытую) ссылку на сущность (&…;) : <syntaxhighlight lang="php"> $link_search_subject = "Экранирование"; echo '<a href="http://ru.wikibooks.org/wiki/Служебная:Search?search='.urlencode($link_search_subject) .'&go='.urlencode("Перейти").'">'. // НАРУШЕНИЕ!! "Поиск по слову Экранирование". '</a>'; </syntaxhighlight> Это довольно часто встречаемая ошибка. === Функции поиска в тексте === ==== substr() ==== Функция '''<code>substr()</code>''' возвращает часть строки. Например: <syntaxhighlight lang="php"> echo substr('Simple text', 3, 7); </syntaxhighlight> Где «3» — точка отсчёта, а «7» — длина изымаемой строки. Если же требуется вести отсчёт от конца строки — используйте отрицательное значение. '''Пример''' Эта функция разобьёт число по трём разрядам: <syntaxhighlight lang="php"> <?php function my_int($value) { $len = strlen($value); if ($len <= 3) return $value; else return my_int(substr($value, 0, $len-3)) . ' ' . substr($value, $len-3, 3); } echo my_int(12345678); //=> 12 345 678 </syntaxhighlight> Для работы с разными кодировками используется функция: <code>string mb_substr ( string $str , int $start [, int $length [, string $encoding ]] )</code> ==== strpos() ==== <code>int strpos (string haystack, string needle [, int offset])</code> Возвращает позицию первого вхождения подстроки <code>needle</code> (в переводе с английского — «иголка») в строку <code>haystack</code> (в переводе с английского, как вы уже догадались, — «стог сена»). Необязательный аргумент <code>offset</code> позволяет указать, с какого по счёту символа строки <code>haystack</code> начинать поиск. Если подстрока <code>needle</code> не найдена — <code>strpos()</code> возвращает '''<code>FALSE</code>'''. '''Пример:''' Эта функция определяет модель браузера: <syntaxhighlight lang="php"> <?php function get_current_browser() { $browser = strtoupper($_SERVER['HTTP_USER_AGENT']); if(strpos($browser, 'MSIE') !== false) $browser = 'Internet Explorer'; elseif(strpos($browser, 'FIREFOX') !== false) $browser = 'Firefox'; elseif(strpos($browser, 'KONQUEROR') !== false) $browser = 'Konqueror'; elseif(strpos($browser, 'LYNX') !== false) $browser = 'Lynx'; else { $browser = $_SERVER['HTTP_USER_AGENT'];} return $browser; } get_current_browser(); ?> </syntaxhighlight> ==== strrpos() ==== Возвращает позицию последнего вхождения символа: <code>int strrpos (string haystack, string needle [, int offset])</code> Возвращает позицию последнего вхождения <code>needle</code> в строку <code>haystack</code>. В «'''PHP 4»''' используется только первый символ строки <code>needle</code>. Начиная с «'''PHP 5»''' необязательный аргумент <code>offset</code> позволяет указать, с какого по счету символа строки <code>haystack</code> начинать поиск. Отрицательное значение предписывает прекратить поиск при достижении определенной позиции до конца строки. Если подстрока <code>needle</code> не найдена — возвращает <code>FALSE</code>. '''Пример:''' Эта функция достаёт из [[w:URL|URL]] имя файла ('''только пример;''' в жизни, можно использовать функцию <code>basename()</code>): <syntaxhighlight lang="php"> function getfname($url) { $filename = ''; // Переменная для хранения результата обработки. // Ведём поиск первого слеша, // отделяющего путь к файлу // от имени домена: $pos = strrpos($url, '/', 8); // Начинаем с 8 символа (после "http://"). if ($pos === false) { return false; // Ошибка: неподходящий URL (нет слеша). } else { $filename = substr($url, $pos + 1); // Выделяем часть URL после слеша. } return $filename; // Возвращаем: или результат обработки, или ''. } </syntaxhighlight> ==== strstr(), stristr() ==== <code>string strstr (string $haystack, string $needle [, bool $before_needle = false ])</code> Возвращает подстроку строки <code>haystack</code>: начиная с индекса ''первого'' вхождения подстроки <code>needle</code> — до конца строки. Функция <code>stristr()</code> выполняет ту же функцию, но не чувствительна к регистру. '''Пример:''' <syntaxhighlight lang="php"> <?php print strstr('www.wikibooks.org', '.'); // Результат: ".wikibooks.org". ?> </syntaxhighlight> Для работы с разными кодировками используются функции: <code>string mb_strstr (string $haystack , string $needle [, bool $before_needle = false [, string $encoding ]])</code> <code>string mb_stristr (string $haystack , string $needle [, bool $before_needle = false [, string $encoding ]])</code> где параметр <code>encoding</code> — название используемой кодировки символов (например «'''UTF-8»'''); если этот параметр опущен — используется внутренняя кодировка. ==== strchr() ==== Эта функция является псевдонимом функции <code>strstr()</code>. ==== strrchr() ==== <code>string strrchr (string $haystack, char $needle)</code> Возвращает подстроку строки <code>haystack</code>: начиная с ''последнего'' вхождения <code>needle</code> — до конца строки. Если подстрока <code>needle</code> не найдена — возвращает <code>FALSE</code>. Если <code>needle</code> состоит более чем из одного символа — используется только первый символ. Если <code>needle</code> не является строкой — он приводится к целому и трактуется как код символа. '''Пример:''' <syntaxhighlight lang="php"> <?php print = strrchr('www.wikibooks.org', '.'); // Результат: ".org". ?> </syntaxhighlight> ==== substr_count() ==== <code>int substr_count (string $haystack, string $needle)</code> Возвращает число вхождений подстроки <code>needle</code> в строку <code>haystack</code>. Можно использовать или текст в кавычках (или апострофах), или переменные. '''Пример:''' <syntaxhighlight lang="php"> <?php print substr_count('www.wikibooks.org', 'o'); // Результат: "3". ?> </syntaxhighlight> ==== strspn() ==== Находит длину начального сегмента маски. <code>int strspn (string $str1, string $str2)</code> Возвращает длину начального сегмента <code>$str1</code>, состоящего полностью из символов строки <code>$str2</code>. '''Пример:''' <syntaxhighlight lang="php"> <?php return strspn("42 is the answer; what is the question?", "1234567890"); // Результат: "2". // (Т. к. в начале первой строки-аргумента // самым длинным сегментом, // состоящим только из символов, содержащихся во втором аргументе, // является сегмент "42", -- длиной в 2 символа.) ?> </syntaxhighlight> ==== strcspn() ==== Обратная к функции <code>strspn()</code>. Определяет отсутствие начальных символов в строке. Возвращает длину начального фрагмента строки <code>$str1</code>, состоящего полностью '''не''' из символов, которые есть в строке <code>$str2</code>. == Система пользователей == В этой статье будет описаны алгоритмы системы пользователей и их коды на языке '''PHP'''. === Регистрация === Алгоритм регистрации — самый простой из тех, что мы будем здесь использовать. Серверу предстоит записать: # Введённые пользователем данные; # Результат хеш-функции от пароля. <syntaxhighlight lang="html5"> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title> Регистрация </title> </head> <body> </syntaxhighlight> <syntaxhighlight lang="php"> <?php // Register // Подключение к "MySQL"-серверу // (с выводом ошибки в случае неудачи): mysql_connect("localhost", "root", "") or die(mysql_error); // Подключение к базе данных "deskside" // (с выводом ошибки в случае неудачи): mysql_select_db("deskside") or die(mysql_error); // Запрос на получение списка всех пользователей из таблицы "users", // упорядоченного по возрастанию значений поля "id": $find_id_sql = mysql_query("SELECT * FROM users ORDER BY id ASC"); $find_id_row = mysql_num_rows($find_id_sql); // Получение списка пользователей из таблицы "users", // чьи логины совпадают со значением, полученным в "POST"-запросе: $find_names = mysql_query("SELECT * FROM users " ."WHERE login='" .$_POST['login']."'"); $find_row = mysql_num_rows($find_names); $id_counter = 1; // Вычисление последнего ID: while ($find_id_row = mysql_fetch_assoc($find_id_sql)){ $id_counter += 1; } $user_already = false; // Булевская переменная для сохранения результатов // проверки: есть ли уже такой пользователь, // с данным "login". if ($_POST['register']) // Если дан запрос именно что на регистрацию. { while($find_row == mysql_fetch_assoc($find_names)) { // Поиск пользователя с данным "login". if ($find_row['login'] == $_POST['login']){ // Если нашёлся... $user_already = true; // ...то отмечаем это как результат break; // ...и выходим из цикла. } } // Если пользователь с таким "login" уже есть. if($user_already){ // Уведомляем отправителя запроса об этом. echo " <p> Такой пользователь уже есть. <br /> <a href=\"http://localhost/register.htm\"> Пройти регистрацию заново... </a> </p> "; } else { // Если пользователя с таким "login" всё-таки нет, // то регистрируем данный "login" для нового пользователя. // Проверка совпадения паролей: if ($_POST['password'] == $_POST['second_password']) { // Если совпали: // 1. Хэширование пароля для базы данных. $md5_password = md5($_POST['password']); // 2. Запрос "MySQL"-серверу на сохранение регистрационных данных // в соответствующую таблицу ("users"): mysql_query("INSERT INTO users " ."(`id`, `login`, `password`, `e-mail`, `name`) " ."VALUES ('" .$id_counter ."', '" .$_POST['login'] ."', '" .$md5_password ."', '" .$_POST['e-mail'] ."', '" .$_POST['name'] ."')"); // 3. Уведомляем отправителя запроса: echo "Регистрация проведена успешно."; } else { echo " <p> Ошибка регистрации: пароли не совпадают! <br /> <a href=\"http://localhost/register.htm\"> Пройти регистрацию заново... </a> </p> "; } } } if ($_POST['register']) { // Если пользователь уже нажал кнопку "РЕГИСТРАЦИЯ", // то зачем ему заново показывать форму?! } else { // Если он уже кликнул, то мы не показываем форму, // а выводим либо сообщение о подтверждении, либо об ошибке: echo ' <form method=\"post\"> <p> Логин: <input type=\"text\" name=\"login\" /> </p> <p> Пароль: <input type=\"password\" name=\"password\"> </p> <p> Пароль ещё раз: <input type=\"password\" name=\"second_password\" /> </p> <p> E-mail: <input type=\"email\" name=\"e-mail\" /> </p> <p> Ваше имя: <input type=\"text\" name=\"name\" /> </p> <input type=\"submit\" name=\"register\" value=\"Зарегистрироваться\"> </form> '; } ?> </syntaxhighlight> <syntaxhighlight lang="html5"> </body> </html> </syntaxhighlight> === Авторизация пользователя === [[Файл:Алгоритм_входа_пользователя.png|thumbnail|180px|Алгоритм авторизации пользователя]] Вход пользователя будет производиться по следующему алгоритму: #Пользователь заполняет форму: «Логин», «Пароль»; #Данные запоминаются в переменной <code>$_POST</code>, после чего будут обрабатываться на сессии<ref>Преимущество сессий в том, что обычный пользователь даже не заметит, как его перенаправили на другую страницу, а значит будет сложнее взломать PHP-код. На странице входа отображается только перенаправление на session.php и форма входа. Если конечно не посмотрит внимательно на HTML-код, но это ему ничего не даст, по скольку он не сможет взять из файла session.php сам PHP-код</ref>; #Уже в сессии хешируется введённый пользователем пароль, алгоритмом [[w:MD5|MD5]]; #Выполняется подключение к базе данных «SQL» и импорт данных со строки пользователя ''admin'' (допустим, пользователь ввёл имя пользователя ''admin''). Затем вся строка записывается в массив <code>$table</code> — такой вариант поможет сократить много нервов и строк; #Сравнение зашифрованного пароля, который в базе данных, — с зашифрованным, введённым пользователем; #Если пароли совпадают, записываются «COOKIE» с информацией об авторизации пользователя. <code>("user_enter" & "user_login")</code>; #Закрытие сессии методом перенаправления на другую страницу. - <code>header (Location: ...)</code>; ===== '''Форма входа''' ===== <syntaxhighlight lang="php"> <?php session_start(); # Этот шаблон можно вставлять в любую часть сайта; # он будет работать в любом случае. ?> </syntaxhighlight> <syntaxhighlight lang="html5"> <form action="session.php" method="POST"> <p> Логин: <input type="text" name="login" /> </p> <p> Пароль: <input type="password" name="password" /> </p> <input type="submit" value="Вход" /> </form> </syntaxhighlight> ====='''Сессия (session.php)'''===== <syntaxhighlight lang="php"> <?php // Заметьте: Нет команд "echo" -- // эту команду можно использовать // только после того, как отправились все "куки". // // P.S.: Если на странице используются "куки" -- // лучше не использовать кодировку "UTF-8". session_start(); // Если пользователь кликнул "Выход": if ($_POST['exit']){ // ...то чистим "куки" // о его авторизации и логине: unset($_COOKIE['user_enter']); unset($_COOKIE['user_login']); } // Подключение к "MySQL"-серверу: // localhost - стандартный адрес сервера баз данных, // если тот запущен на локальном компьютере; // root - логин для пользователя "MySQL"; // 1234 - пароль для пользователя "MySQL". mysql_connect("localhost", "root", "1234") or die(mysql_error); // Подключение к базе данных: mysql_select_db("base") or die(mysql_error); // где "base" - имя базы данных. $check_password = mysql_query("SELECT * FROM `base`.`users`" ."WHERE (login='" .$_POST['login'] ."')"); // "SQL"-запрос для проверки пароля. $row_check_password = mysql_num_rows($check_password); // Получение данных о пользователе: while($row_check_password = mysql_fetch_assoc($check_password)){ // ID пользователя: $table['id'] = $row_check_password['id']; // Логин пользователя: $table['login'] = $row_check_password['login']; // Пароль (в зашифрованном виде) пользователя: $table['password'] = $row_check_password['password']; // Имя блога пользователя: $table['blog_name'] = $row_check_password['blog_name']; } // Проверка паролей: if ($_POST['enter']){ // Хеширование пользовательского пароля: $md5_password = md5($_POST['password']); // Если хеш пароля, введённого пользователем, и логин // совпадают с хешем пароля и с логином из базы данных: if ($md5_password == $table['password'] && $_POST['login'] == $table['login']){ // Пользователь вошёл в систему: setcookie("user_enter", true); // "Кука": пользователь авторизировался. setcookie("user_login", $_POST['login']); // "Кука": логин. setcookie("user_blog", $table['blog_name']); // "Кука": имя блога. }else{ // Пароль не подтвердился: setcookie("user_login", "no_enter"); // "Кука": Логин "не вошёл". setcookie("user_enter", false); // "Кука": Пользователь не вошёл. } } // Перенаправление на главную страницу: header('Location: http://deskside/main.php?page=home'); ?> </syntaxhighlight> === Вывод данных пользователя === Для вывода данных пользователя будут использоваться куки, но поскольку они могут содержать только латинские буквы и цифры — они будут использоваться только как идентификатор имени пользователя и подтверждения его авторизации. Пользователю нужно выводить максимум информации о его ошибках. Если Ваш проект будет очень большим и пользователь при входе будет вводить не только логин и пароль, а ещё 20 полей — то пользователю будет не очень удобно, при опечатке, смотреть на такое сообщение: <blockquote>Возможно, Вы ошиблись при заполнении данных... Попробуйте ещё раз.</blockquote>Ему будет гораздо приятнее, если ему выведут сообщение с возможным полем опечатки и самой опечаткой. Но в нашем варианте, будет рассматриваться только вариант с логином и паролем. Естественно, невозможно использовать один и тот же текст для вывода разной информации. Всего их три: * Если пользователь авторизировался; * Если пароли не совпадают; * Если пользователь ещё не авторизировался и хочет ввести свои данные. Проще всего будет просто выводить шаблон на страницу ('''$login_form''').<br /> ====='''Пользователь авторизировался'''===== <syntaxhighlight lang="php"> if ($_COOKIE['user_enter']){ $login_form =' <form method="post"> Вы вошли как <b>'.$login.'</b> <br> <br> <a href="http://deskside/main.php?page=register">Регистрация</a> <br> <a href="http://deskside/main.php?page=profile">Профиль</a> <br> <input type="submit" name="exit" value="Выход"> </form> '; } </syntaxhighlight> ====='''Пароли не совпали'''===== <syntaxhighlight lang="php"> if($_COOKIE['user_login'] == "no_enter" And $_COOKIE['user_enter'] == false){ $login_form = ' <form method="post"> Ошибка: Пароль неправильный! <br> <hr> <b><input type="submit" name="exit" value="Ввести снова"></b> <br> <a href="http://deskside/main.php?page=register">Регистрация</a> </form> '; } </syntaxhighlight> ====='''Форма авторизации'''===== <syntaxhighlight lang="php"> $login_form = ' <table> <tr> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr> <td>&nbsp;</td> <td class="style10"> <form action="session.php" method="POST"> Логин: <br> <input type="text" name="login"> <br> Пароль: <br> <input type="password" name="password"> <br> <hr> <input type="submit" name="enter" value="Войти"> <br> <br> <a href="http://deskside/main.php?page=register">Регистрация</a> </form> </td> <td>&nbsp;</td> </tr> <td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> </td> </table> '; </syntaxhighlight> == Примечания == {{примечания}} == См. также == * [[v:PHP|PHP]] — курс в Викиверситете == Ссылки == * [http://docs.php.net/manual/ru/ Руководство по PHP] (включая FAQ) * [http://www.php.net/docs.php Documentation] * [http://php.net/manual/en/index.php PHP Manual] (оригинал, англ.) * [http://www.php-s.ru/self-teacher/ Самоучитель (учебник) по PHP] 6l4whxdggxdvyzm4rbtb9lo72uqjsm2 Международный каталог франкотипов 0 9050 270172 269834 2026-10-05T13:09:52Z Л.П. Джепко 642 270172 wikitext text/x-wiki {{Название учебника |Лого = IPMSC Logo.png |Описание = Справочное руководство по коллекционированию [[w:Франкотип|франкотипов]] всех стран мира |Категория = Коллекционирование |Готовность = 75%|Тип = Многостраничный }} =<font color=red><font size=7>'''МЕЖДУНАРОДНЫЙ КАТАЛОГ ФРАНКОТИПОВ'''</font></font>= {{DISPLAYTITLE:<span style="display:block;text-align:center;font-size:1%;font-style:italic;line-height:1em;"> </span>}} [[File:IPMSC Logo.png|800px|center]] ==<span style="font-size:xxx-large">''Добро пожаловать!''</span>== [[File:New Zealand stamp type A7a.jpg|left|200px]] [[File:Vatican stamp type A1 with frame.jpg|right|450px]] [[File:Great Britain stamp type A4DA.jpg|center|350px]] <br><br><br> {{drop|Ф }}<span style="font-size:3;">ранкировальные машины впервые появились в виде опытных образцов в конце XIX века и стали широко применяться по всему миру, начиная с 1920-х годов. К 1960-м годам [[w:Франкотип|франкотипами]] франкировалось больше почтовых отправлений, чем традиционными [[w:Почтовая марка|почтовыми марками]]. Эта тенденция сохраняется и сегодня по мере того, как на смену механическим франкировальным машинам приходят более современные и гораздо более производительные цифровые франкировальные машины и системы.</span> <span style="font-size:3;">Перед вами – каталог всех различных типов франкотипов, которые когда-либо использовались для франкирования почтовых отправлений в разных странах мира. Франкотипы в нём систематизированы и категоризованы не по типам моделей напечатавших их франкировальных машин, а по их внешнему виду (форме рисунка). Поэтому это не каталог франкировальных машин, а каталог ФРАНКОТИПОВ, предназначенный для использования, прежде всего, коллекционерами франкотипов. В основе настоящего каталога лежит «''The International Postage Meter Stamp Catalog''» («Международный каталог франкотипов»), составленный и опубликованный Джоэлом Хокинсом (Joel Hawkins) и Ричардом Стамбо (Richard Stambaugh) в 2005 году, а также Дополнение (Supplement) к нему 2008 года.</span> <span style="font-size:3;">Комментарии, предлагаемые изменения, исправления и дополнения к каталогу приветствуются. Просим обращаться к Джиму Эшби (Jim Ashby) по электронной почте: <span style="color: blue;">tuvus80506@gmail.com</span></span> Перед Вами — перевод на русский язык [[:en:Wikibooks:International Postage Meter Stamp Catalog|текста каталога на английском языке]], опубликованного [[:en:Wikibooks:User:Rickstambaugh|Ричардом (Риком) Стамбо]] в англоязычной версии Викиучебника под соответствующей [[:en:Wikibooks:Creative Commons Attribution-ShareAlike 3.0 Unported License|лицензией]]. Перевод выполнен [[Участник:Л.П. Джепко|Л. П. Джепко]] под той же [http://creativecommons.org/licenses/by-sa/3.0/deed.ru лицензией].</font> <br><br> ---- <span style="font-size:x-large; color:green;"><u>'''''Последние изменения'''''</u></span> {| |- |style="width:33%; color: green;"| * ''Переведено Сан-Марино (19 августа 2026)'' * ''Переведен Люксембург (07 августа 2026)'' * ''Переведен Лихтенштейн (11 апреля 2026)'' * ''Переведен Ливан (07 апреля 2026)'' * ''Переведены Иордания и Ирак (07 февраля 2026)'' * ''Переведен Гибралтар (05 февраля 2026)'' * ''Переведена Чешская Республика (15 октября 2025)'' * ''Переведена Словения (08 октября 2025)'' * ''Переведена Словакия (07 октября 2025)'' * ''Переведена Венгрия (03 октября 2025)'' * ''Переведен Таиланд (06 апреля 2025)'' * ''Переведен Ньюфаундленд (05 апреля 2025)'' * ''Переведены Папуа-Новая Гвинея, Мальта (04 апреля 2025)'' * ''Переведены Филиппины (17 февраля 2025)'' * ''Переведены Лаос, Джерси и Фолклендские острова (16 февраля 2025)'' * ''Переведено Перу (08 февраля 2025)'' * ''Переведен Парагвай (09 января 2025)'' * ''Переведена Аргентина (30 ноября 2024)'' * ''Переведена Босния и Герцеговина (08 ноября 2024)'' * ''Переведен ООН (05 ноября 2024)'' * ''Переведен Тунис (04 ноября 2024)'' * ''Переведен Непал (02 ноября 2024)'' * ''Переведены Иран, Франц. Полинезия, Франц. Индокитай (01 ноября 2024)'' * ''Переведена Португ. Индия (Гоа) (29 октября 2024)'' * ''Переведены Рождества о-в, Новая Каледония, Норфолк о-в (28 октября 2024)'' |style="width:33%; color: green;"| * ''Переведен Гонконг (27 октября 2024)'' * ''Обновлен перевод Определителя (26 октября 2024)'' * ''Переведен Ватикан (13 сентября 2024)'' * ''Переведены Макао, Микронезия (7 сентября 2024)'' * ''Переведен Кука острова (25 августа 2024)'' * ''Переведен Йемен (23 июля 2024)'' * ''Переведен Бруней (19 июля 2024)'' * ''Переведены Коста-Рика, Восточный Тимор, Науру, Западное Самоа (12 июля 2024)'' * ''Переведены Кувейт, Сирия (3 июля 2024)'' * ''Переведены Дубай, Оман, Катар (30 июня 2024)'' * ''Переведены ОАЭ (27 июня 2024)'' * ''Переведен Бахрейн (14 июня 2024)'' * ''Переведен Тристан-да-Кунья (11 июня 2024)'' * ''Переведен Суринам (20 мая 2024)'' * ''Переведены Сербия и Монтсеррат (19 мая 2024)'' * ''Переведены Фиджи (8 мая 2024)'' * ''Переведены Соломоновы Острова (24 апреля 2024)'' * ''Переведены Куба, Панама (23 апреля 2024)'' * ''Переведены Ямайка, Французская Гвиана (22 апреля 2024)'' * ''Переведены Сент-Люсия, Сент-Китс и Невис, Сент-Винсент, Южная Георгия (13 апреля 2024)'' * ''Переведены Кюрасао, Мартиника, Маршалловы Острова, Карибские Нидерланды, Сен-Пьер и Микелон (12 апреля 2024)'' * ''Обновлен перевод Нидерландские Антильские Острова (09 апреля 2024)'' |style="width:33%; color: green;"| * ''Переведено Вануату (08 апреля 2024)'' * ''Переведены Каймановы острова, Нидерландские Антильские Острова (04 апреля 2024)'' * ''Переведены Доминиканская Республика, Зона Панамского канала (03 апреля 2024)'' * ''Переведены Гондурас, Гренада, Доминика (29 марта 2024)'' * ''Переведены Гваделупа, Гватемала (28 марта 2024)'' * ''Переведены Гаити, Гайана (27 марта 2024)'' * ''Переведены Бермудские острова, Боливия, Брит. Виргинские острова (25 марта 2024)'' * ''Переведен Белиз (17 марта 2024)'' * ''Обновлен перевод главной страницы каталога'' (17 марта 2024)'' * ''Переведены Багамские острова, Барбадос (16 марта 2024)'' * ''Переведены Ангилья, Аруба (14 марта 2024)'' * ''Переведены Андорра, Антигуа и Барбуда (12 марта 2024)'' * ''Переведены все страны Африки (февраль - 11 марта 2024)'' * ''Список стран обновлен и ранжирован по русскому алфавиту (25 января 2024)'' * ''Обновлены Введение, Глоссарий, сокращения и символы, Производители франкир. машин (январь 2024)'' * ''Переведены все страны бывшего СССР, Монголия, Эфиопия (январь 2024)'' * ''Переведены Абу-Даби, Антарктика, Палау, Токелау, Уоллис и Футуна (5 декабря 2015)'' * ''Переведены Кирибати, Корея (КНДР) (2 ноября 2015)'' |} <br> ---- ==<font color=red><font size=3>'''Оглавление'''</font></font>== * <font size=3><u>'''[[/Введение/]]'''</u> ''<font color=purple> (основы коллекционирования франкотипов'')</font> * <u>'''[[/Глоссарий, сокращения и символы/]]'''</u> ''<font color=purple> (понимание описаний франкотипов'')</font> * <u>'''[[/Определитель/]]'''</u> ''<font color=purple> (определите страну происхождения Вашего франкотипа'')</font> * <u>'''[[/Производители франкировальных машин стран мира/]]'''</u> * <u>'''[[/Общества коллекционеров франкотипов/]]'''</u> * <u>'''[[/Библиография/]]'''</u> </font> <br> ---- <font size=3>''(Примечание: Каталог находится в стадии перевода на русский язык. Государства расположены в списке в порядке следования по алфавиту. В данный момент содержание есть только у тех стран, которые обозначены синим цветом.)''</font> {| | <span style="font-size:medium;">'''[[/Абу-Даби/]]'''</span> | <span style="font-size:medium;">'''[[/Австралия/]]'''</span> | <span style="font-size:medium;">'''[[/Австрия/]]'''</span> | <span style="font-size:medium;">'''[[/Азербайджан/]]'''</span> | <span style="font-size:medium;">'''[[/Азорские острова/]]'''</span> | <span style="font-size:medium;">'''[[/Аландские острова/]]'''</span> |- | <span style="font-size:medium;">'''[[/Албания/]]'''</span> | <span style="font-size:medium;">'''[[/Алжир/]]'''</span> | <span style="font-size:medium;">'''[[/Американское Самоа/]]'''</span> | <span style="font-size:medium;">'''[[/Ангилья/]]'''</span> | <span style="font-size:medium;">'''[[/Ангола/]]'''</span> | <span style="font-size:medium;">'''[[/Андорра/]]'''</span> |- | <span style="font-size:medium;">'''[[/Антарктика/]]'''</span> | <span style="font-size:medium;">'''[[/Антигуа и Барбуда/]]'''</span> | <span style="font-size:medium;">'''[[/Аргентина/]]'''</span> | <span style="font-size:medium;">'''[[/Армения/]]'''</span> | <span style="font-size:medium;">'''[[/Аруба/]]'''</span> | <span style="font-size:medium;">'''[[/Афганистан/]]'''</span> |- | <span style="font-size:medium;">'''[[/Багамские острова/]]'''</span> | <span style="font-size:medium;">'''[[/Бангладеш/]]'''</span> | <span style="font-size:medium;">'''[[/Барбадос/]]'''</span> | <span style="font-size:medium;">'''[[/Бахрейн/]]'''</span> | <span style="font-size:medium;">'''[[/Белиз/]]'''</span> | <span style="font-size:medium;">'''[[/Белоруссия/]]'''</span> |- | <span style="font-size:medium;">'''[[/Бенин/]]'''</span> | <span style="font-size:medium;">'''[[/Бельгия/]]'''</span> | <span style="font-size:medium;">'''[[/Бермудские острова /]]'''</span> | <span style="font-size:medium;">'''[[/Болгария/]]'''</span> | <span style="font-size:medium;">'''[[/Боливия/]]'''</span> | <span style="font-size:medium;">'''[[/Босния и Герцеговина/]]'''</span> |- | <span style="font-size:medium;">'''[[/Ботсвана/]]'''</span> | <span style="font-size:medium;">'''[[/Бразилия/]]'''</span> | <span style="font-size:small;">'''[[/Британские Виргинские Острова/]]'''</span> | <span style="font-size:small;">'''[[/Британские территории в Индийском океане/]]'''</span> | <span style="font-size:medium;">'''[[/Бруней/]]'''</span> | <span style="font-size:medium;">'''[[/Буркина-Фасо/]]'''</span> |- | <span style="font-size:medium;">'''[[/Бурунди/]]'''</span> | <span style="font-size:medium;">'''[[/Бутан/]]'''</span> | <span style="font-size:medium;">'''[[/Вануату/]]'''</span> | <span style="font-size:medium;">'''[[/Ватикан/]]'''</span> | <span style="font-size:medium;">'''[[/Великобритания/]]'''</span> | <span style="font-size:medium;">'''[[/Венгрия/]]'''</span> |- | <span style="font-size:medium;">'''[[/Венесуэла/]]'''</span> | <span style="font-size:medium;">'''[[/Вознесения, остров/]]'''</span> | <span style="font-size:small;">'''[[/Восточноафриканское сообщество/]]'''</span> | <span style="font-size:medium;">'''[[/Восточный Тимор (Тимор-Лешти)/]]'''</span> | <span style="font-size:medium;">'''[[/Вьетнам/]]'''</span> | <span style="font-size:medium;">'''[[/Габон/]]'''</span> |- | <span style="font-size:medium;">'''[[/Гаити/]]'''</span> | <span style="font-size:medium;">'''[[/Гайана/]]'''</span> | <span style="font-size:medium;">'''[[/Гамбия/]]'''</span> | <span style="font-size:medium;">'''[[/Гана/]]'''</span> | <span style="font-size:medium;">'''[[/Гваделупа/]]'''</span> | <span style="font-size:medium;">'''[[/Гватемала/]]'''</span> |- | <span style="font-size:medium;">'''[[/Гвинея/]]'''</span> | <span style="font-size:medium;">'''[[/Гвинея-Бисау/]]'''</span> | <span style="font-size:medium;">'''[[/Германия, часть 1/]]'''</span> | <span style="font-size:medium;">'''[[/Германия, часть 2/]]'''</span> | <span style="font-size:medium;">'''[[/Германия, часть 3/]]'''</span> | <span style="font-size:medium;">'''[[/Гернси/]]'''</span> |- | <span style="font-size:medium;">'''[[/Гибралтар/]]'''</span> | <span style="font-size:medium;">'''[[/Гондурас/]]'''</span> | <span style="font-size:medium;">'''[[/Гонконг/]]'''</span> | <span style="font-size:medium;">'''[[/Гренландия/]]'''</span> | <span style="font-size:medium;">'''[[/Гренада/]]'''</span> | <span style="font-size:medium;">'''[[/Греция/]]'''</span> |- | <span style="font-size:medium;">'''[[/Грузия/]]'''</span> | <span style="font-size:medium;">'''[[/Дания/]]'''</span> | <span style="font-size:medium;">'''[[/Джерси/]]'''</span> | <span style="font-size:medium;">'''[[/Джибути/]]'''</span> | <span style="font-size:medium;">'''[[/Доминика/]]'''</span> |- | <span style="font-size:small;">'''[[/Доминиканская Республика/]]'''</span> | <span style="font-size:medium;">'''[[/Дубай/]]'''</span> | <span style="font-size:medium;">'''[[/Египет/]]'''</span> | <span style="font-size:medium;">'''[[/Замбия/]]'''</span> | <span style="font-size:medium;">'''[[/Занзибар/]]'''</span> | <span style="font-size:medium;">'''[[/Западная Сахара/]]'''</span> |- | <span style="font-size:medium;">'''[[/Западное Самоа/]]'''</span> | <span style="font-size:medium;">'''[[/Зимбабве/]]'''</span> | <span style="font-size:small;">'''[[/Зона Панамского канала/]]'''</span> | <span style="font-size:medium;">'''[[/Израиль/]]'''</span> | <span style="font-size:medium;">'''[[/Индия/]]'''</span> | <span style="font-size:medium;">'''[[/Индонезия/]]'''</span> |- | <span style="font-size:medium;">'''[[/Иордания/]]'''</span> | <span style="font-size:medium;">'''[[/Ирак/]]'''</span> | <span style="font-size:medium;">'''[[/Иран/]]'''</span> | <span style="font-size:medium;">'''[[/Ирландия/]]'''</span> | <span style="font-size:medium;">'''[[/Исландия/]]'''</span> | <span style="font-size:medium;">'''[[/Испания/]]'''</span> |- | <span style="font-size:medium;">'''[[/Италия/]]'''</span> | <span style="font-size:medium;">'''[[/Йемен/]]'''</span> | <span style="font-size:medium;">'''[[/Кабо-Верде/]]'''</span> | <span style="font-size:medium;">'''[[/Казахстан/]]'''</span> | <span style="font-size:medium;">'''[[/Каймановы острова/]]'''</span> | <span style="font-size:medium;">'''[[/Камбоджа/]]'''</span> |- | <span style="font-size:medium;">'''[[/Камерун/]]'''</span> | <span style="font-size:medium;">'''[[/Канада/]]'''</span> | <span style="font-size:medium;">'''[[/Карибские Нидерланды/]]'''</span> | <span style="font-size:medium;">'''[[/Катар/]]'''</span> | <span style="font-size:medium;">'''[[/Кения/]]'''</span> | <span style="font-size:medium;">'''[[/Кипр/]]'''</span> |- | <span style="font-size:medium;">'''[[/Киргизия/]]'''</span> | <span style="font-size:medium;">'''[[/Кирибати/]]'''</span> | <span style="font-size:medium;">'''[[/Китай (КНР) /]]'''</span> | <span style="font-size:medium;">'''[[/Китай (Тайвань)/]]'''</span> | <span style="font-size:medium;">'''[[/Кокосовые острова/]]'''</span> | <span style="font-size:medium;">'''[[/Колумбия/]]'''</span> |- | <span style="font-size:medium;">'''[[/Коморские острова/]]'''</span> | <span style="font-size:small;">'''[[/Конго, Демократическая Республика/]]'''</span> | <span style="font-size:small;">'''[[/Конго, Народная Республика/]]'''</span> | <span style="font-size:medium;">'''[[/Корея (КНДР) /]]'''</span> | <span style="font-size:medium;">'''[[/Корея (Республика Корея)/]]'''</span> | <span style="font-size:medium;">'''[[/Коста-Рика/]]'''</span> |- | <span style="font-size:medium;">'''[[/Кот-д’Ивуар/]]'''</span> | <span style="font-size:medium;">'''[[/Куба/]]'''</span> | <span style="font-size:medium;">'''[[/Кувейт/]]'''</span> | <span style="font-size:medium;">'''[[/Кука, острова/]]'''</span> | <span style="font-size:medium;">'''[[/Кюрасао/]]'''</span> | <span style="font-size:medium;">'''[[/Лаос/]]'''</span> |- | <span style="font-size:medium;">'''[[/Латвия/]]'''</span> | <span style="font-size:medium;">'''[[/Лесото/]]'''</span> | <span style="font-size:medium;">'''[[/Либерия/]]'''</span> | <span style="font-size:medium;">'''[[/Ливан/]]'''</span> | <span style="font-size:medium;">'''[[/Ливия/]]'''</span> | <span style="font-size:medium;">'''[[/Литва/]]'''</span> |- | <span style="font-size:medium;">'''[[/Лихтенштейн/]]'''</span> | <span style="font-size:medium;">'''[[/Люксембург/]]'''</span> | <span style="font-size:medium;">'''[[/Маврикий/]]'''</span> | <span style="font-size:medium;">'''[[/Мавритания/]]'''</span> | <span style="font-size:medium;">'''[[/Мадагаскар/]]'''</span> | <span style="font-size:medium;">'''[[/Мадейра/]]'''</span> |- | <span style="font-size:medium;">'''[[/Майотта/]]'''</span> | <span style="font-size:medium;">'''[[/Макао/]]'''</span> | <span style="font-size:medium;">'''[[/Македония/]]'''</span> | <span style="font-size:medium;">'''[[/Малави/]]'''</span> | <span style="font-size:medium;">'''[[/Малайзия/]]'''</span> | <span style="font-size:medium;">'''[[/Мали/]]'''</span> |- | <span style="font-size:medium;">'''[[/Мали, Федерация/]]'''</span> | <span style="font-size:medium;">'''[[/Мальдивские острова/]]'''</span> | <span style="font-size:medium;">'''[[/Мальта/]]'''</span> | <span style="font-size:medium;">'''[[/Марокко/]]'''</span> | <span style="font-size:medium;">'''[[/Мартиника/]]'''</span> | <span style="font-size:medium;">'''[[/Маршалловы острова/]]'''</span> |- | <span style="font-size:medium;">'''[[/Мексика/]]'''</span> | <span style="font-size:medium;">'''[[/Микронезия/]]'''</span> | <span style="font-size:medium;">'''[[/Мозамбик/]]'''</span> | <span style="font-size:medium;">'''[[/Молдова/]]'''</span> | <span style="font-size:medium;">'''[[/Монако/]]'''</span> | <span style="font-size:medium;">'''[[/Монголия/]]'''</span> |- | <span style="font-size:medium;">'''[[/Монтсеррат/]]'''</span> | <span style="font-size:medium;">'''[[/Мьянма/]]'''</span> | <span style="font-size:medium;">'''[[/Мэн, остров/]]'''</span> | <span style="font-size:medium;">'''[[/Намибия/]]'''</span> | <span style="font-size:medium;">'''[[/Науру/]]'''</span> | <span style="font-size:medium;">'''[[/Непал/]]'''</span> |- | <span style="font-size:medium;">'''[[/Нигер/]]'''</span> | <span style="font-size:medium;">'''[[/Нигерия/]]'''</span> | <span style="font-size:small;">'''[[/Нидерландские Антильские Острова/]]'''</span> | <span style="font-size:medium;">'''[[/Нидерланды/]]'''</span> | <span style="font-size:medium;">'''[[/Никарагуа/]]'''</span> | <span style="font-size:medium;">'''[[/Ниуэ/]]'''</span> |- | <span style="font-size:medium;">'''[[/Новая Зеландия/]]'''</span> | <span style="font-size:medium;">'''[[/Новая Каледония/]]'''</span> | <span style="font-size:medium;">'''[[/Норвегия/]]'''</span> | <span style="font-size:medium;">'''[[/Норфолк, остров/]]'''</span> | <span style="font-size:medium;">'''[[/Ньюфаундленд/]]'''</span> | <span style="font-size:small;">'''[[/Объединенные Арабские Эмираты/]]'''</span> |- | <span style="font-size:medium;">'''[[/Оман/]]'''</span> | <span style="font-size:medium;">'''[[/ООН/]]'''</span> | <span style="font-size:medium;">'''[[/Пакистан/]]'''</span> | <span style="font-size:medium;">'''[[/Палау/]]'''</span> | <span style="font-size:medium;">'''[[/Палестина/]]'''</span> | <span style="font-size:small;">'''[[/Палестинская администрация/]]'''</span> |- | <span style="font-size:medium;">'''[[/Панама/]]'''</span> | <span style="font-size:medium;">'''[[/Папуа-Новая Гвинея/]]'''</span> | <span style="font-size:medium;">'''[[/Парагвай/]]'''</span> | <span style="font-size:medium;">'''[[/Перу/]]'''</span> | <span style="font-size:medium;">'''[[/Польша/]]'''</span> | <span style="font-size:medium;">'''[[/Португалия/]]'''</span> |- | <span style="font-size:medium;">'''[[/Португальская Индия (Гоа)/]]'''</span> | <span style="font-size:medium;">'''[[/Реюньон/]]'''</span> | <span style="font-size:medium;">'''[[/Родезия и Ньясаленд/]]'''</span> | <span style="font-size:medium;">'''[[/Рождества, остров/]]'''</span> | <span style="font-size:medium;">'''[[/Россия/]]'''</span> | <span style="font-size:medium;">'''[[/Руанда/]]'''</span> |- | <span style="font-size:medium;">'''[[/Руанда-Урунди/]]'''</span> | <span style="font-size:medium;">'''[[/Румыния/]]'''</span> | <span style="font-size:medium;">'''[[/Сальвадор/]]'''</span> | <span style="font-size:medium;">'''[[/Сан-Марино/]]'''</span> | <span style="font-size:medium;">'''[[/Сан-Томе и Принсипи/]]'''</span> | <span style="font-size:medium;">'''[[/Саудовская Аравия/]]'''</span> |- | <span style="font-size:medium;">'''[[/Св. Елены, остров/]]'''</span> | <span style="font-size:medium;">'''[[/Сейшельские острова/]]'''</span> | <span style="font-size:medium;">'''[[/Сенегал/]]'''</span> | <span style="font-size:medium;">'''[[/Сен-Пьер и Микелон/]]'''</span> | <span style="font-size:medium;">'''[[/Сент-Винсент/]]'''</span> | <span style="font-size:medium;">'''[[/Сент-Китс и Невис/]]'''</span> |- | <span style="font-size:medium;">'''[[/Сент-Люсия/]]'''</span> | <span style="font-size:medium;">'''[[/Сербия/]]'''</span> | <span style="font-size:medium;">'''[[/Сингапур/]]'''</span> | <span style="font-size:medium;">'''[[/Синт-Мартен/]]'''</span> | <span style="font-size:medium;">'''[[/Сирия/]]'''</span> | <span style="font-size:medium;">'''[[/Словакия/]]'''</span> |- | <span style="font-size:medium;">'''[[/Словения/]]'''</span> | <span style="font-size:medium;">'''[[/Соломоновы острова/]]'''</span> | <span style="font-size:medium;">'''[[/Сомали/]]'''</span> | <span style="font-size:medium;">'''[[/СССР/]]'''</span> | <span style="font-size:medium;">'''[[Каталог франкотипов США|<span style="color:#000080;">США</span>]]'''</span> | <span style="font-size:medium;">'''[[/Судан/]]'''</span> |- | <span style="font-size:medium;">'''[[/Суданская Республика/]]'''</span> | <span style="font-size:medium;">'''[[/Суринам/]]'''</span> | <span style="font-size:medium;">'''[[/Сьерра-Леоне/]]'''</span> | <span style="font-size:medium;">'''[[/Таджикистан/]]'''</span> | <span style="font-size:medium;">'''[[/Таиланд/]]'''</span> | <span style="font-size:medium;">'''[[/Танзания/]]'''</span> |- | <span style="font-size:medium;">'''[[/Тёркс и Кайкос/]]'''</span> | <span style="font-size:medium;">'''[[/Того/]]'''</span> | <span style="font-size:medium;">'''[[/Токелау/]]'''</span> | <span style="font-size:medium;">'''[[/Тонга/]]'''</span> | <span style="font-size:medium;">'''[[/Тринидад и Тобаго/]]'''</span> | <span style="font-size:medium;">'''[[/Тристан-да-Кунья/]]'''</span> |- | <span style="font-size:medium;">'''[[/Тувалу/]]'''</span> | <span style="font-size:medium;">'''[[/Тунис/]]'''</span> | <span style="font-size:medium;">'''[[/Туркменистан/]]'''</span> | <span style="font-size:medium;">'''[[/Турция/]]'''</span> | <span style="font-size:medium;">'''[[/Уганда/]]'''</span> | <span style="font-size:medium;">'''[[/Узбекистан/]]'''</span> |- | <span style="font-size:medium;">'''[[/Украина/]]'''</span> | <span style="font-size:medium;">'''[[/Уоллис и Футуна/]]'''</span> | <span style="font-size:medium;">'''[[/Уругвай/]]'''</span> | <span style="font-size:medium;">'''[[/Фарерские острова/]]'''</span> | <span style="font-size:medium;">'''[[/Фиджи/]]'''</span> | <span style="font-size:medium;">'''[[/Филиппины/]]'''</span> |- | <span style="font-size:medium;">'''[[/Финляндия/]]'''</span> | <span style="font-size:medium;">'''[[/Фолклендские острова/]]'''</span> | <span style="font-size:medium;">'''[[/Франция/]]'''</span> | <span style="font-size:medium;">'''[[/Французская Гвиана/]]'''</span> | <span style="font-size:small;">'''[[/Французская Западная Африка/]]'''</span> | [[/Французская Полинезия/]]'''</span> |- | <span style="font-size:small;">'''[[/Французская Экваториальная Африка/]]'''</span> | <span style="font-size:small;">'''[[/Французский Индокитай/]]'''</span> | <span style="font-size:medium;">'''[[/Хорватия/]]'''</span> | <span style="font-size:small;">'''[[/Центральноафриканская Республика/]]'''</span> | <span style="font-size:medium;">'''[[/Чад/]]'''</span> | <span style="font-size:medium;">'''[[/Черногория/]]'''</span> |- | <span style="font-size:medium;">'''[[/Чехословакия/]]'''</span> | <span style="font-size:medium;">'''[[/Чешская Республика/]]'''</span> | <span style="font-size:medium;">'''[[/Чили/]]'''</span> | <span style="font-size:medium;">'''[[/Швейцария/]]'''</span> | <span style="font-size:medium;">'''[[/Швеция/]]'''</span> | <span style="font-size:medium;">'''[[/Шри-Ланка/]]'''</span> |- | <span style="font-size:medium;">'''[[/Эквадор/]]'''</span> | <span style="font-size:medium;">'''[[/Экваториальная Гвинея/]]'''</span> | <span style="font-size:medium;">'''[[/Эритрея/]]'''</span> | <span style="font-size:medium;">'''[[/Эсватини (Свазиленд)/]]'''</span> | <span style="font-size:medium;">'''[[/Эстония/]]'''</span> | <span style="font-size:medium;">'''[[/Эфиопия/]]'''</span> |- | <span style="font-size:medium;">'''[[/Югославия/]]'''</span> | <span style="font-size:medium;">'''[[/Южная Африка/]]'''</span> | <span style="font-size:medium;">'''[[/Южная Георгия/]]'''</span> | <span style="font-size:medium;">'''[[/Ямайка/]]'''</span> | <span style="font-size:medium;">'''[[/Япония/]]'''</span> |} <div class="center"><span style="color:blue; font-size:x-large;">· ♦ ·</span></div> ---- [[Полка:Коллекционирование]] t7ltwyvx0q2han41lfn75erng7pq7ka 270181 270172 2026-10-05T19:39:44Z Л.П. Джепко 642 /* Добро пожаловать! */ + Монако 270181 wikitext text/x-wiki {{Название учебника |Лого = IPMSC Logo.png |Описание = Справочное руководство по коллекционированию [[w:Франкотип|франкотипов]] всех стран мира |Категория = Коллекционирование |Готовность = 75%|Тип = Многостраничный }} =<font color=red><font size=7>'''МЕЖДУНАРОДНЫЙ КАТАЛОГ ФРАНКОТИПОВ'''</font></font>= {{DISPLAYTITLE:<span style="display:block;text-align:center;font-size:1%;font-style:italic;line-height:1em;"> </span>}} [[File:IPMSC Logo.png|800px|center]] ==<span style="font-size:xxx-large">''Добро пожаловать!''</span>== [[File:New Zealand stamp type A7a.jpg|left|200px]] [[File:Vatican stamp type A1 with frame.jpg|right|450px]] [[File:Great Britain stamp type A4DA.jpg|center|350px]] <br><br><br> {{drop|Ф }}<span style="font-size:3;">ранкировальные машины впервые появились в виде опытных образцов в конце XIX века и стали широко применяться по всему миру, начиная с 1920-х годов. К 1960-м годам [[w:Франкотип|франкотипами]] франкировалось больше почтовых отправлений, чем традиционными [[w:Почтовая марка|почтовыми марками]]. Эта тенденция сохраняется и сегодня по мере того, как на смену механическим франкировальным машинам приходят более современные и гораздо более производительные цифровые франкировальные машины и системы.</span> <span style="font-size:3;">Перед вами – каталог всех различных типов франкотипов, которые когда-либо использовались для франкирования почтовых отправлений в разных странах мира. Франкотипы в нём систематизированы и категоризованы не по типам моделей напечатавших их франкировальных машин, а по их внешнему виду (форме рисунка). Поэтому это не каталог франкировальных машин, а каталог ФРАНКОТИПОВ, предназначенный для использования, прежде всего, коллекционерами франкотипов. В основе настоящего каталога лежит «''The International Postage Meter Stamp Catalog''» («Международный каталог франкотипов»), составленный и опубликованный Джоэлом Хокинсом (Joel Hawkins) и Ричардом Стамбо (Richard Stambaugh) в 2005 году, а также Дополнение (Supplement) к нему 2008 года.</span> <span style="font-size:3;">Комментарии, предлагаемые изменения, исправления и дополнения к каталогу приветствуются. Просим обращаться к Джиму Эшби (Jim Ashby) по электронной почте: <span style="color: blue;">tuvus80506@gmail.com</span></span> Перед Вами — перевод на русский язык [[:en:Wikibooks:International Postage Meter Stamp Catalog|текста каталога на английском языке]], опубликованного [[:en:Wikibooks:User:Rickstambaugh|Ричардом (Риком) Стамбо]] в англоязычной версии Викиучебника под соответствующей [[:en:Wikibooks:Creative Commons Attribution-ShareAlike 3.0 Unported License|лицензией]]. Перевод выполнен [[Участник:Л.П. Джепко|Л. П. Джепко]] под той же [http://creativecommons.org/licenses/by-sa/3.0/deed.ru лицензией].</font> <br><br> ---- <span style="font-size:x-large; color:green;"><u>'''''Последние изменения'''''</u></span> {| |- |style="width:33%; color: green;"| * ''Переведено Монако (05 октября 2026)'' * ''Переведено Сан-Марино (19 августа 2026)'' * ''Переведен Люксембург (07 августа 2026)'' * ''Переведен Лихтенштейн (11 апреля 2026)'' * ''Переведен Ливан (07 апреля 2026)'' * ''Переведены Иордания и Ирак (07 февраля 2026)'' * ''Переведен Гибралтар (05 февраля 2026)'' * ''Переведена Чешская Республика (15 октября 2025)'' * ''Переведена Словения (08 октября 2025)'' * ''Переведена Словакия (07 октября 2025)'' * ''Переведена Венгрия (03 октября 2025)'' * ''Переведен Таиланд (06 апреля 2025)'' * ''Переведен Ньюфаундленд (05 апреля 2025)'' * ''Переведены Папуа-Новая Гвинея, Мальта (04 апреля 2025)'' * ''Переведены Филиппины (17 февраля 2025)'' * ''Переведены Лаос, Джерси и Фолклендские острова (16 февраля 2025)'' * ''Переведено Перу (08 февраля 2025)'' * ''Переведен Парагвай (09 января 2025)'' * ''Переведена Аргентина (30 ноября 2024)'' * ''Переведена Босния и Герцеговина (08 ноября 2024)'' * ''Переведен ООН (05 ноября 2024)'' * ''Переведен Тунис (04 ноября 2024)'' * ''Переведен Непал (02 ноября 2024)'' * ''Переведены Иран, Франц. Полинезия, Франц. Индокитай (01 ноября 2024)'' * ''Переведена Португ. Индия (Гоа) (29 октября 2024)'' * ''Переведены Рождества о-в, Новая Каледония, Норфолк о-в (28 октября 2024)'' |style="width:33%; color: green;"| * ''Переведен Гонконг (27 октября 2024)'' * ''Обновлен перевод Определителя (26 октября 2024)'' * ''Переведен Ватикан (13 сентября 2024)'' * ''Переведены Макао, Микронезия (7 сентября 2024)'' * ''Переведен Кука острова (25 августа 2024)'' * ''Переведен Йемен (23 июля 2024)'' * ''Переведен Бруней (19 июля 2024)'' * ''Переведены Коста-Рика, Восточный Тимор, Науру, Западное Самоа (12 июля 2024)'' * ''Переведены Кувейт, Сирия (3 июля 2024)'' * ''Переведены Дубай, Оман, Катар (30 июня 2024)'' * ''Переведены ОАЭ (27 июня 2024)'' * ''Переведен Бахрейн (14 июня 2024)'' * ''Переведен Тристан-да-Кунья (11 июня 2024)'' * ''Переведен Суринам (20 мая 2024)'' * ''Переведены Сербия и Монтсеррат (19 мая 2024)'' * ''Переведены Фиджи (8 мая 2024)'' * ''Переведены Соломоновы Острова (24 апреля 2024)'' * ''Переведены Куба, Панама (23 апреля 2024)'' * ''Переведены Ямайка, Французская Гвиана (22 апреля 2024)'' * ''Переведены Сент-Люсия, Сент-Китс и Невис, Сент-Винсент, Южная Георгия (13 апреля 2024)'' * ''Переведены Кюрасао, Мартиника, Маршалловы Острова, Карибские Нидерланды, Сен-Пьер и Микелон (12 апреля 2024)'' * ''Обновлен перевод Нидерландские Антильские Острова (09 апреля 2024)'' |style="width:33%; color: green;"| * ''Переведено Вануату (08 апреля 2024)'' * ''Переведены Каймановы острова, Нидерландские Антильские Острова (04 апреля 2024)'' * ''Переведены Доминиканская Республика, Зона Панамского канала (03 апреля 2024)'' * ''Переведены Гондурас, Гренада, Доминика (29 марта 2024)'' * ''Переведены Гваделупа, Гватемала (28 марта 2024)'' * ''Переведены Гаити, Гайана (27 марта 2024)'' * ''Переведены Бермудские острова, Боливия, Брит. Виргинские острова (25 марта 2024)'' * ''Переведен Белиз (17 марта 2024)'' * ''Обновлен перевод главной страницы каталога'' (17 марта 2024)'' * ''Переведены Багамские острова, Барбадос (16 марта 2024)'' * ''Переведены Ангилья, Аруба (14 марта 2024)'' * ''Переведены Андорра, Антигуа и Барбуда (12 марта 2024)'' * ''Переведены все страны Африки (февраль - 11 марта 2024)'' * ''Список стран обновлен и ранжирован по русскому алфавиту (25 января 2024)'' * ''Обновлены Введение, Глоссарий, сокращения и символы, Производители франкир. машин (январь 2024)'' * ''Переведены все страны бывшего СССР, Монголия, Эфиопия (январь 2024)'' * ''Переведены Абу-Даби, Антарктика, Палау, Токелау, Уоллис и Футуна (5 декабря 2015)'' * ''Переведены Кирибати, Корея (КНДР) (2 ноября 2015)'' |} <br> ---- ==<font color=red><font size=3>'''Оглавление'''</font></font>== * <font size=3><u>'''[[/Введение/]]'''</u> ''<font color=purple> (основы коллекционирования франкотипов'')</font> * <u>'''[[/Глоссарий, сокращения и символы/]]'''</u> ''<font color=purple> (понимание описаний франкотипов'')</font> * <u>'''[[/Определитель/]]'''</u> ''<font color=purple> (определите страну происхождения Вашего франкотипа'')</font> * <u>'''[[/Производители франкировальных машин стран мира/]]'''</u> * <u>'''[[/Общества коллекционеров франкотипов/]]'''</u> * <u>'''[[/Библиография/]]'''</u> </font> <br> ---- <font size=3>''(Примечание: Каталог находится в стадии перевода на русский язык. Государства расположены в списке в порядке следования по алфавиту. В данный момент содержание есть только у тех стран, которые обозначены синим цветом.)''</font> {| | <span style="font-size:medium;">'''[[/Абу-Даби/]]'''</span> | <span style="font-size:medium;">'''[[/Австралия/]]'''</span> | <span style="font-size:medium;">'''[[/Австрия/]]'''</span> | <span style="font-size:medium;">'''[[/Азербайджан/]]'''</span> | <span style="font-size:medium;">'''[[/Азорские острова/]]'''</span> | <span style="font-size:medium;">'''[[/Аландские острова/]]'''</span> |- | <span style="font-size:medium;">'''[[/Албания/]]'''</span> | <span style="font-size:medium;">'''[[/Алжир/]]'''</span> | <span style="font-size:medium;">'''[[/Американское Самоа/]]'''</span> | <span style="font-size:medium;">'''[[/Ангилья/]]'''</span> | <span style="font-size:medium;">'''[[/Ангола/]]'''</span> | <span style="font-size:medium;">'''[[/Андорра/]]'''</span> |- | <span style="font-size:medium;">'''[[/Антарктика/]]'''</span> | <span style="font-size:medium;">'''[[/Антигуа и Барбуда/]]'''</span> | <span style="font-size:medium;">'''[[/Аргентина/]]'''</span> | <span style="font-size:medium;">'''[[/Армения/]]'''</span> | <span style="font-size:medium;">'''[[/Аруба/]]'''</span> | <span style="font-size:medium;">'''[[/Афганистан/]]'''</span> |- | <span style="font-size:medium;">'''[[/Багамские острова/]]'''</span> | <span style="font-size:medium;">'''[[/Бангладеш/]]'''</span> | <span style="font-size:medium;">'''[[/Барбадос/]]'''</span> | <span style="font-size:medium;">'''[[/Бахрейн/]]'''</span> | <span style="font-size:medium;">'''[[/Белиз/]]'''</span> | <span style="font-size:medium;">'''[[/Белоруссия/]]'''</span> |- | <span style="font-size:medium;">'''[[/Бенин/]]'''</span> | <span style="font-size:medium;">'''[[/Бельгия/]]'''</span> | <span style="font-size:medium;">'''[[/Бермудские острова /]]'''</span> | <span style="font-size:medium;">'''[[/Болгария/]]'''</span> | <span style="font-size:medium;">'''[[/Боливия/]]'''</span> | <span style="font-size:medium;">'''[[/Босния и Герцеговина/]]'''</span> |- | <span style="font-size:medium;">'''[[/Ботсвана/]]'''</span> | <span style="font-size:medium;">'''[[/Бразилия/]]'''</span> | <span style="font-size:small;">'''[[/Британские Виргинские Острова/]]'''</span> | <span style="font-size:small;">'''[[/Британские территории в Индийском океане/]]'''</span> | <span style="font-size:medium;">'''[[/Бруней/]]'''</span> | <span style="font-size:medium;">'''[[/Буркина-Фасо/]]'''</span> |- | <span style="font-size:medium;">'''[[/Бурунди/]]'''</span> | <span style="font-size:medium;">'''[[/Бутан/]]'''</span> | <span style="font-size:medium;">'''[[/Вануату/]]'''</span> | <span style="font-size:medium;">'''[[/Ватикан/]]'''</span> | <span style="font-size:medium;">'''[[/Великобритания/]]'''</span> | <span style="font-size:medium;">'''[[/Венгрия/]]'''</span> |- | <span style="font-size:medium;">'''[[/Венесуэла/]]'''</span> | <span style="font-size:medium;">'''[[/Вознесения, остров/]]'''</span> | <span style="font-size:small;">'''[[/Восточноафриканское сообщество/]]'''</span> | <span style="font-size:medium;">'''[[/Восточный Тимор (Тимор-Лешти)/]]'''</span> | <span style="font-size:medium;">'''[[/Вьетнам/]]'''</span> | <span style="font-size:medium;">'''[[/Габон/]]'''</span> |- | <span style="font-size:medium;">'''[[/Гаити/]]'''</span> | <span style="font-size:medium;">'''[[/Гайана/]]'''</span> | <span style="font-size:medium;">'''[[/Гамбия/]]'''</span> | <span style="font-size:medium;">'''[[/Гана/]]'''</span> | <span style="font-size:medium;">'''[[/Гваделупа/]]'''</span> | <span style="font-size:medium;">'''[[/Гватемала/]]'''</span> |- | <span style="font-size:medium;">'''[[/Гвинея/]]'''</span> | <span style="font-size:medium;">'''[[/Гвинея-Бисау/]]'''</span> | <span style="font-size:medium;">'''[[/Германия, часть 1/]]'''</span> | <span style="font-size:medium;">'''[[/Германия, часть 2/]]'''</span> | <span style="font-size:medium;">'''[[/Германия, часть 3/]]'''</span> | <span style="font-size:medium;">'''[[/Гернси/]]'''</span> |- | <span style="font-size:medium;">'''[[/Гибралтар/]]'''</span> | <span style="font-size:medium;">'''[[/Гондурас/]]'''</span> | <span style="font-size:medium;">'''[[/Гонконг/]]'''</span> | <span style="font-size:medium;">'''[[/Гренландия/]]'''</span> | <span style="font-size:medium;">'''[[/Гренада/]]'''</span> | <span style="font-size:medium;">'''[[/Греция/]]'''</span> |- | <span style="font-size:medium;">'''[[/Грузия/]]'''</span> | <span style="font-size:medium;">'''[[/Дания/]]'''</span> | <span style="font-size:medium;">'''[[/Джерси/]]'''</span> | <span style="font-size:medium;">'''[[/Джибути/]]'''</span> | <span style="font-size:medium;">'''[[/Доминика/]]'''</span> |- | <span style="font-size:small;">'''[[/Доминиканская Республика/]]'''</span> | <span style="font-size:medium;">'''[[/Дубай/]]'''</span> | <span style="font-size:medium;">'''[[/Египет/]]'''</span> | <span style="font-size:medium;">'''[[/Замбия/]]'''</span> | <span style="font-size:medium;">'''[[/Занзибар/]]'''</span> | <span style="font-size:medium;">'''[[/Западная Сахара/]]'''</span> |- | <span style="font-size:medium;">'''[[/Западное Самоа/]]'''</span> | <span style="font-size:medium;">'''[[/Зимбабве/]]'''</span> | <span style="font-size:small;">'''[[/Зона Панамского канала/]]'''</span> | <span style="font-size:medium;">'''[[/Израиль/]]'''</span> | <span style="font-size:medium;">'''[[/Индия/]]'''</span> | <span style="font-size:medium;">'''[[/Индонезия/]]'''</span> |- | <span style="font-size:medium;">'''[[/Иордания/]]'''</span> | <span style="font-size:medium;">'''[[/Ирак/]]'''</span> | <span style="font-size:medium;">'''[[/Иран/]]'''</span> | <span style="font-size:medium;">'''[[/Ирландия/]]'''</span> | <span style="font-size:medium;">'''[[/Исландия/]]'''</span> | <span style="font-size:medium;">'''[[/Испания/]]'''</span> |- | <span style="font-size:medium;">'''[[/Италия/]]'''</span> | <span style="font-size:medium;">'''[[/Йемен/]]'''</span> | <span style="font-size:medium;">'''[[/Кабо-Верде/]]'''</span> | <span style="font-size:medium;">'''[[/Казахстан/]]'''</span> | <span style="font-size:medium;">'''[[/Каймановы острова/]]'''</span> | <span style="font-size:medium;">'''[[/Камбоджа/]]'''</span> |- | <span style="font-size:medium;">'''[[/Камерун/]]'''</span> | <span style="font-size:medium;">'''[[/Канада/]]'''</span> | <span style="font-size:medium;">'''[[/Карибские Нидерланды/]]'''</span> | <span style="font-size:medium;">'''[[/Катар/]]'''</span> | <span style="font-size:medium;">'''[[/Кения/]]'''</span> | <span style="font-size:medium;">'''[[/Кипр/]]'''</span> |- | <span style="font-size:medium;">'''[[/Киргизия/]]'''</span> | <span style="font-size:medium;">'''[[/Кирибати/]]'''</span> | <span style="font-size:medium;">'''[[/Китай (КНР) /]]'''</span> | <span style="font-size:medium;">'''[[/Китай (Тайвань)/]]'''</span> | <span style="font-size:medium;">'''[[/Кокосовые острова/]]'''</span> | <span style="font-size:medium;">'''[[/Колумбия/]]'''</span> |- | <span style="font-size:medium;">'''[[/Коморские острова/]]'''</span> | <span style="font-size:small;">'''[[/Конго, Демократическая Республика/]]'''</span> | <span style="font-size:small;">'''[[/Конго, Народная Республика/]]'''</span> | <span style="font-size:medium;">'''[[/Корея (КНДР) /]]'''</span> | <span style="font-size:medium;">'''[[/Корея (Республика Корея)/]]'''</span> | <span style="font-size:medium;">'''[[/Коста-Рика/]]'''</span> |- | <span style="font-size:medium;">'''[[/Кот-д’Ивуар/]]'''</span> | <span style="font-size:medium;">'''[[/Куба/]]'''</span> | <span style="font-size:medium;">'''[[/Кувейт/]]'''</span> | <span style="font-size:medium;">'''[[/Кука, острова/]]'''</span> | <span style="font-size:medium;">'''[[/Кюрасао/]]'''</span> | <span style="font-size:medium;">'''[[/Лаос/]]'''</span> |- | <span style="font-size:medium;">'''[[/Латвия/]]'''</span> | <span style="font-size:medium;">'''[[/Лесото/]]'''</span> | <span style="font-size:medium;">'''[[/Либерия/]]'''</span> | <span style="font-size:medium;">'''[[/Ливан/]]'''</span> | <span style="font-size:medium;">'''[[/Ливия/]]'''</span> | <span style="font-size:medium;">'''[[/Литва/]]'''</span> |- | <span style="font-size:medium;">'''[[/Лихтенштейн/]]'''</span> | <span style="font-size:medium;">'''[[/Люксембург/]]'''</span> | <span style="font-size:medium;">'''[[/Маврикий/]]'''</span> | <span style="font-size:medium;">'''[[/Мавритания/]]'''</span> | <span style="font-size:medium;">'''[[/Мадагаскар/]]'''</span> | <span style="font-size:medium;">'''[[/Мадейра/]]'''</span> |- | <span style="font-size:medium;">'''[[/Майотта/]]'''</span> | <span style="font-size:medium;">'''[[/Макао/]]'''</span> | <span style="font-size:medium;">'''[[/Македония/]]'''</span> | <span style="font-size:medium;">'''[[/Малави/]]'''</span> | <span style="font-size:medium;">'''[[/Малайзия/]]'''</span> | <span style="font-size:medium;">'''[[/Мали/]]'''</span> |- | <span style="font-size:medium;">'''[[/Мали, Федерация/]]'''</span> | <span style="font-size:medium;">'''[[/Мальдивские острова/]]'''</span> | <span style="font-size:medium;">'''[[/Мальта/]]'''</span> | <span style="font-size:medium;">'''[[/Марокко/]]'''</span> | <span style="font-size:medium;">'''[[/Мартиника/]]'''</span> | <span style="font-size:medium;">'''[[/Маршалловы острова/]]'''</span> |- | <span style="font-size:medium;">'''[[/Мексика/]]'''</span> | <span style="font-size:medium;">'''[[/Микронезия/]]'''</span> | <span style="font-size:medium;">'''[[/Мозамбик/]]'''</span> | <span style="font-size:medium;">'''[[/Молдова/]]'''</span> | <span style="font-size:medium;">'''[[/Монако/]]'''</span> | <span style="font-size:medium;">'''[[/Монголия/]]'''</span> |- | <span style="font-size:medium;">'''[[/Монтсеррат/]]'''</span> | <span style="font-size:medium;">'''[[/Мьянма/]]'''</span> | <span style="font-size:medium;">'''[[/Мэн, остров/]]'''</span> | <span style="font-size:medium;">'''[[/Намибия/]]'''</span> | <span style="font-size:medium;">'''[[/Науру/]]'''</span> | <span style="font-size:medium;">'''[[/Непал/]]'''</span> |- | <span style="font-size:medium;">'''[[/Нигер/]]'''</span> | <span style="font-size:medium;">'''[[/Нигерия/]]'''</span> | <span style="font-size:small;">'''[[/Нидерландские Антильские Острова/]]'''</span> | <span style="font-size:medium;">'''[[/Нидерланды/]]'''</span> | <span style="font-size:medium;">'''[[/Никарагуа/]]'''</span> | <span style="font-size:medium;">'''[[/Ниуэ/]]'''</span> |- | <span style="font-size:medium;">'''[[/Новая Зеландия/]]'''</span> | <span style="font-size:medium;">'''[[/Новая Каледония/]]'''</span> | <span style="font-size:medium;">'''[[/Норвегия/]]'''</span> | <span style="font-size:medium;">'''[[/Норфолк, остров/]]'''</span> | <span style="font-size:medium;">'''[[/Ньюфаундленд/]]'''</span> | <span style="font-size:small;">'''[[/Объединенные Арабские Эмираты/]]'''</span> |- | <span style="font-size:medium;">'''[[/Оман/]]'''</span> | <span style="font-size:medium;">'''[[/ООН/]]'''</span> | <span style="font-size:medium;">'''[[/Пакистан/]]'''</span> | <span style="font-size:medium;">'''[[/Палау/]]'''</span> | <span style="font-size:medium;">'''[[/Палестина/]]'''</span> | <span style="font-size:small;">'''[[/Палестинская администрация/]]'''</span> |- | <span style="font-size:medium;">'''[[/Панама/]]'''</span> | <span style="font-size:medium;">'''[[/Папуа-Новая Гвинея/]]'''</span> | <span style="font-size:medium;">'''[[/Парагвай/]]'''</span> | <span style="font-size:medium;">'''[[/Перу/]]'''</span> | <span style="font-size:medium;">'''[[/Польша/]]'''</span> | <span style="font-size:medium;">'''[[/Португалия/]]'''</span> |- | <span style="font-size:medium;">'''[[/Португальская Индия (Гоа)/]]'''</span> | <span style="font-size:medium;">'''[[/Реюньон/]]'''</span> | <span style="font-size:medium;">'''[[/Родезия и Ньясаленд/]]'''</span> | <span style="font-size:medium;">'''[[/Рождества, остров/]]'''</span> | <span style="font-size:medium;">'''[[/Россия/]]'''</span> | <span style="font-size:medium;">'''[[/Руанда/]]'''</span> |- | <span style="font-size:medium;">'''[[/Руанда-Урунди/]]'''</span> | <span style="font-size:medium;">'''[[/Румыния/]]'''</span> | <span style="font-size:medium;">'''[[/Сальвадор/]]'''</span> | <span style="font-size:medium;">'''[[/Сан-Марино/]]'''</span> | <span style="font-size:medium;">'''[[/Сан-Томе и Принсипи/]]'''</span> | <span style="font-size:medium;">'''[[/Саудовская Аравия/]]'''</span> |- | <span style="font-size:medium;">'''[[/Св. Елены, остров/]]'''</span> | <span style="font-size:medium;">'''[[/Сейшельские острова/]]'''</span> | <span style="font-size:medium;">'''[[/Сенегал/]]'''</span> | <span style="font-size:medium;">'''[[/Сен-Пьер и Микелон/]]'''</span> | <span style="font-size:medium;">'''[[/Сент-Винсент/]]'''</span> | <span style="font-size:medium;">'''[[/Сент-Китс и Невис/]]'''</span> |- | <span style="font-size:medium;">'''[[/Сент-Люсия/]]'''</span> | <span style="font-size:medium;">'''[[/Сербия/]]'''</span> | <span style="font-size:medium;">'''[[/Сингапур/]]'''</span> | <span style="font-size:medium;">'''[[/Синт-Мартен/]]'''</span> | <span style="font-size:medium;">'''[[/Сирия/]]'''</span> | <span style="font-size:medium;">'''[[/Словакия/]]'''</span> |- | <span style="font-size:medium;">'''[[/Словения/]]'''</span> | <span style="font-size:medium;">'''[[/Соломоновы острова/]]'''</span> | <span style="font-size:medium;">'''[[/Сомали/]]'''</span> | <span style="font-size:medium;">'''[[/СССР/]]'''</span> | <span style="font-size:medium;">'''[[Каталог франкотипов США|<span style="color:#000080;">США</span>]]'''</span> | <span style="font-size:medium;">'''[[/Судан/]]'''</span> |- | <span style="font-size:medium;">'''[[/Суданская Республика/]]'''</span> | <span style="font-size:medium;">'''[[/Суринам/]]'''</span> | <span style="font-size:medium;">'''[[/Сьерра-Леоне/]]'''</span> | <span style="font-size:medium;">'''[[/Таджикистан/]]'''</span> | <span style="font-size:medium;">'''[[/Таиланд/]]'''</span> | <span style="font-size:medium;">'''[[/Танзания/]]'''</span> |- | <span style="font-size:medium;">'''[[/Тёркс и Кайкос/]]'''</span> | <span style="font-size:medium;">'''[[/Того/]]'''</span> | <span style="font-size:medium;">'''[[/Токелау/]]'''</span> | <span style="font-size:medium;">'''[[/Тонга/]]'''</span> | <span style="font-size:medium;">'''[[/Тринидад и Тобаго/]]'''</span> | <span style="font-size:medium;">'''[[/Тристан-да-Кунья/]]'''</span> |- | <span style="font-size:medium;">'''[[/Тувалу/]]'''</span> | <span style="font-size:medium;">'''[[/Тунис/]]'''</span> | <span style="font-size:medium;">'''[[/Туркменистан/]]'''</span> | <span style="font-size:medium;">'''[[/Турция/]]'''</span> | <span style="font-size:medium;">'''[[/Уганда/]]'''</span> | <span style="font-size:medium;">'''[[/Узбекистан/]]'''</span> |- | <span style="font-size:medium;">'''[[/Украина/]]'''</span> | <span style="font-size:medium;">'''[[/Уоллис и Футуна/]]'''</span> | <span style="font-size:medium;">'''[[/Уругвай/]]'''</span> | <span style="font-size:medium;">'''[[/Фарерские острова/]]'''</span> | <span style="font-size:medium;">'''[[/Фиджи/]]'''</span> | <span style="font-size:medium;">'''[[/Филиппины/]]'''</span> |- | <span style="font-size:medium;">'''[[/Финляндия/]]'''</span> | <span style="font-size:medium;">'''[[/Фолклендские острова/]]'''</span> | <span style="font-size:medium;">'''[[/Франция/]]'''</span> | <span style="font-size:medium;">'''[[/Французская Гвиана/]]'''</span> | <span style="font-size:small;">'''[[/Французская Западная Африка/]]'''</span> | [[/Французская Полинезия/]]'''</span> |- | <span style="font-size:small;">'''[[/Французская Экваториальная Африка/]]'''</span> | <span style="font-size:small;">'''[[/Французский Индокитай/]]'''</span> | <span style="font-size:medium;">'''[[/Хорватия/]]'''</span> | <span style="font-size:small;">'''[[/Центральноафриканская Республика/]]'''</span> | <span style="font-size:medium;">'''[[/Чад/]]'''</span> | <span style="font-size:medium;">'''[[/Черногория/]]'''</span> |- | <span style="font-size:medium;">'''[[/Чехословакия/]]'''</span> | <span style="font-size:medium;">'''[[/Чешская Республика/]]'''</span> | <span style="font-size:medium;">'''[[/Чили/]]'''</span> | <span style="font-size:medium;">'''[[/Швейцария/]]'''</span> | <span style="font-size:medium;">'''[[/Швеция/]]'''</span> | <span style="font-size:medium;">'''[[/Шри-Ланка/]]'''</span> |- | <span style="font-size:medium;">'''[[/Эквадор/]]'''</span> | <span style="font-size:medium;">'''[[/Экваториальная Гвинея/]]'''</span> | <span style="font-size:medium;">'''[[/Эритрея/]]'''</span> | <span style="font-size:medium;">'''[[/Эсватини (Свазиленд)/]]'''</span> | <span style="font-size:medium;">'''[[/Эстония/]]'''</span> | <span style="font-size:medium;">'''[[/Эфиопия/]]'''</span> |- | <span style="font-size:medium;">'''[[/Югославия/]]'''</span> | <span style="font-size:medium;">'''[[/Южная Африка/]]'''</span> | <span style="font-size:medium;">'''[[/Южная Георгия/]]'''</span> | <span style="font-size:medium;">'''[[/Ямайка/]]'''</span> | <span style="font-size:medium;">'''[[/Япония/]]'''</span> |} <div class="center"><span style="color:blue; font-size:x-large;">· ♦ ·</span></div> ---- [[Полка:Коллекционирование]] 5mzbieuse4rsiw1c4i2n1fxmge99hxc Перевод 0 20142 270176 256302 2026-10-05T14:27:15Z Л.П. Джепко 642 270176 wikitext text/x-wiki {{Название учебника | Название = | Категория = Лингвистика | Лого = | Описание = Учебник по [[w:Перевод|переводу]] | Перевод = | Язык = | Автор = | Тип = }} Во избежание поломок страниц, использующих этот шаблон, экспериментируйте в песочнице (создать | зеркало) или своём личном пространстве Это свободный [[w:викиучебник|викиучебник]] по [[w:Перевод|переводу]]. Пожалуйста, не стесняйтесь исправлять и улучшать существующие страницы и добавлять новые. В данном учебнике рассматриваются некоторые аспекты перевода. == Содержание == ; Название одной главы : [[/Название раздела/]]{{Стадия кор |0%|2017-07-05}} : [[/Название раздела/]]{{Стадия кор |0%|2017-07-05}} ; Переводческое аннотирование и реферирование : [[/Переводческое аннотирование и реферирование/]]{{Стадия кор |50%|2017-07-05}} ; Системы [[:w:Память переводов|переводческой памяти]] : [[МетаТексис]]{{Стадия кор |25%|2017-07-05}} : [[Trados]]{{Стадия кор |25%|2017-07-05}} == См. также == * Ссылки на другие учебники, страницы Википедии, прочие материалы по теме. [[Категория:Лингвистика]] {{Готовность |25%}} [[Категория:Учебники без шаблона]] gitvini81xac5lzl8tn04erzwtptk2i 270177 270176 2026-10-05T14:52:43Z Kylaixbot 77400 Удаление категории после добавления шаблона {{Название учебника}} 270177 wikitext text/x-wiki {{Название учебника | Название = | Категория = Лингвистика | Лого = | Описание = Учебник по [[w:Перевод|переводу]] | Перевод = | Язык = | Автор = | Тип = }} Во избежание поломок страниц, использующих этот шаблон, экспериментируйте в песочнице (создать | зеркало) или своём личном пространстве Это свободный [[w:викиучебник|викиучебник]] по [[w:Перевод|переводу]]. Пожалуйста, не стесняйтесь исправлять и улучшать существующие страницы и добавлять новые. В данном учебнике рассматриваются некоторые аспекты перевода. == Содержание == ; Название одной главы : [[/Название раздела/]]{{Стадия кор |0%|2017-07-05}} : [[/Название раздела/]]{{Стадия кор |0%|2017-07-05}} ; Переводческое аннотирование и реферирование : [[/Переводческое аннотирование и реферирование/]]{{Стадия кор |50%|2017-07-05}} ; Системы [[:w:Память переводов|переводческой памяти]] : [[МетаТексис]]{{Стадия кор |25%|2017-07-05}} : [[Trados]]{{Стадия кор |25%|2017-07-05}} == См. также == * Ссылки на другие учебники, страницы Википедии, прочие материалы по теме. [[Категория:Лингвистика]] {{Готовность |25%}} im416p7iy6abz81nkibkaongtlgt4r8 270178 270177 2026-10-05T14:52:53Z Kylaixbot 77400 Установка параметра Тип шаблона {{Название учебника}} 270178 wikitext text/x-wiki {{Название учебника | Название = | Категория = Лингвистика | Лого = | Описание = Учебник по [[w:Перевод|переводу]] | Перевод = | Язык = | Автор = | Тип =Многостраничный}} Во избежание поломок страниц, использующих этот шаблон, экспериментируйте в песочнице (создать | зеркало) или своём личном пространстве Это свободный [[w:викиучебник|викиучебник]] по [[w:Перевод|переводу]]. Пожалуйста, не стесняйтесь исправлять и улучшать существующие страницы и добавлять новые. В данном учебнике рассматриваются некоторые аспекты перевода. == Содержание == ; Название одной главы : [[/Название раздела/]]{{Стадия кор |0%|2017-07-05}} : [[/Название раздела/]]{{Стадия кор |0%|2017-07-05}} ; Переводческое аннотирование и реферирование : [[/Переводческое аннотирование и реферирование/]]{{Стадия кор |50%|2017-07-05}} ; Системы [[:w:Память переводов|переводческой памяти]] : [[МетаТексис]]{{Стадия кор |25%|2017-07-05}} : [[Trados]]{{Стадия кор |25%|2017-07-05}} == См. также == * Ссылки на другие учебники, страницы Википедии, прочие материалы по теме. [[Категория:Лингвистика]] {{Готовность |25%}} [[Категория:Учебники без шаблона]] 253c8isvh0ekkmggta4voty9iccriii Обсуждение участника:Leksey 3 20464 270171 269566 2026-10-05T13:00:27Z Л.П. Джепко 642 /* Прошу удалить ошибочно созданную категорию */ новая тема 270171 wikitext text/x-wiki {{Архив}} == У меня небольшой склероз == Я последнее время замечаю за собой, что я забываю что-то сделать, что ранее обещал.<br> Я буду только рад и благодарен, если забыв что-то сделать - вы напомните :).<br> Последнее время моя голова совсем не держит мысли... <span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 02:23, 6 марта 2025 (UTC) : Рецепты на морде рецептов сделать рандомными [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 03:40, 7 марта 2025 (UTC) == Восстановление страниц == Привет<br> Не знаю зачем вы восстановили эти несколько страниц, но возможно это нужно. Буду рад такой ревизии. <br> Единственная просьба - не использовать пока что стандартные категории, а прописывать их через {{tl|Название учебника}}: они и работают в этом смысле как старый шаблон тем, и, как я понимаю, это чтобы не плодить миллион полок. В будущем, когда я разберу наконец-то [[:Категория:Учебники без шаблона]] и добавлю в бота, чтобы он автоматически конвертировал любые категории в шаблон и наконец придумаю какой-то автокаталог нам. P.s.: да, категория у нас имеет совершенно другое значение нежели в Википедии и реальное использование. <span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 09:21, 23 апреля 2025 (UTC) : Так это мои статьи. Одну уже поправил. В остальные удаленные надо добавить что-то более учебное. Они были созданы как заготовки и для связи каких-то имеющихся уже в учебнике сущностей (чтобы их можно было найти). : Лучше при удалении моих статей мне писать. [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 12:11, 23 апреля 2025 (UTC) :: А, извиняюсь. Я редко смотрю кто создатель статей, когда их удаляю. Обычно просто по критериям КБУ вспоминаю. <span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 16:08, 23 апреля 2025 (UTC) ::: Ну или через стандартную процедуру удаления пускать. Случайно заметил. Ну или втыкать вначале шаблон "Стаб". ::: Хотя сейчас идет глобальная чистка и тут лишних телодвижений не хочется. Но мы реально удаление всякой ерунды обсуждаем зачем-то (которую удалил и забыл), а тут какие-то б-м разумные тексты одним кликом удалены. Но я не в обиде. Формально то они не в формате. С другой стороны - у нас бы наладить и обратный процесс - выталкивание чего-то в Википедию. Хотя это трудоемко. Может тогда шаблон придумать "Перенести в Википедию"? [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 17:22, 23 апреля 2025 (UTC) :::: Я обычно захожу через ботовские категории на эти статьи/учебники, поэтому меня всякие значки вроде "стаб" не останавливают, но вот что меня действительно всегда и почти в любом случае может остановить - это подстраницы: какой бы не был учебник (может только если откровенно маргинальный или 1 в 1 скопированный из сборник статей из Википедии), то я обычно его сохраняю насколько плохо/хорошо он не был написан. Просто у меня уже и мышление, и боты и вся архитектура, которую делаю для ВУ сейчас так настроена, что подстраницы обычно не мешаются никак и могут спокойно существовать. Поэтому по возможности лучше их объединять с существующими учебниками. :::: P.s.: я думаю к концу лета смогу глянуть еще раз что я поудалял и возможно часть восстановлю, но не думаю, что там будет много. :::: Касательно Википедии - я обычно если вижу, что статья будто скопирована оттуда пытаюсь проверить действительно ли это так и если вижу, что ее нет, но она весьма годная - переношу к себе в [[Участник:Kylaix/Перенос в Википедию]]. Ну а вообще да, нам стоит подумать над какой-то страничкой-агрегаттором, которая из моих личных страниц в том числе и этой. :::: И еще момент - я об этом ранее не говорил, но держал в голове: у нас есть учебники, которые надо перенести в Викиверситет, так как проще из них сделать курсы, а в Викиверситете много откровенно учебников, которые надо перенести сюда, так что когда будет время - я этим буду заниматься (вот хотел бы услышать ваши комментарии насчет этого) <span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 17:33, 23 апреля 2025 (UTC) == Notice of expiration of your sysop right == <div dir="ltr">Hi, as part of [[:m:Special:MyLanguage/Global reminder bot|Global reminder bot]], this is an automated reminder to let you know that your permission "sysop" (Администраторы) will expire on 2025-09-09 05:58:32. Please renew this right if you would like to continue using it. <i>In other languages: [[:m:Special:MyLanguage/Global reminder bot/Messages/default|click here]]</i> [[Участник:Leaderbot|Leaderbot]] ([[Обсуждение участника:Leaderbot|обсуждение]]) 19:44, 2 сентября 2025 (UTC)</div> == Требования к админам == Скажите пожалуйста какие требования нужно соблюсти кандидату в администраторы потому в правилах всё как-то размыто написано и я так и не понял С уважением, [[Участник:Taratarussia|Taratarussia]] ([[Обсуждение участника:Taratarussia|обсуждение]]) 22:33, 10 октября 2025 (UTC) : Может быть описание в Википедии поможет понять? [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 01:48, 11 октября 2025 (UTC) ::то-есть требования к кандидату в администраторы таки-же как в Википедии? ::P.S. ::Я люблю в своих сообщениях писать P.S. ::P.S.S. ::Я из Викицитатника сюда просто заглянул для интереса и в ВЦ я автопатрулирующий и 40 статей сделал ::С уважением, [[Участник:Taratarussia|Taratarussia]] ([[Обсуждение участника:Taratarussia|обсуждение]]) 08:01, 11 октября 2025 (UTC) ::: Для меня лично прежде всего стоит вопрос наличия вклада в проекте, а не неких формальных правил. Какие у нас требования к администратору я не знаю, честно говоря. [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 03:14, 19 октября 2025 (UTC) ::::Понял, извините что побеспокоил [[Участник:Taratarussia|Taratarussia]] ([[Обсуждение участника:Taratarussia|обсуждение]]) 07:58, 19 октября 2025 (UTC) ::: Ну, я где-то припоминал формальное требование в 100 правок то ли что-то такое. Но это лишь формальность, потому что все зависит от голосования. Людей обычно у нас не очень много и поэтому всегда тяжело пробудить людей на голосование. Да и админство в Викиучебнике это скорее возможность решить проблемы там, где без админдействий никак не обойтись (КУ/редактирование защищенных страниц/вандализмы и т.д.) <br>P.s.: я тоже люблю писать P.s.<br>P.s.s.: короче, админство тут это скорее для решения всяких технических проблем, потому что сообщество у нас небольшое и админов, соответственно, тоже мало (что, кстати, хотелось бы изменить! Присоединяйтесь к нам :)! ) <span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 12:23, 19 октября 2025 (UTC) ::::Я бы рад, но я не понимаю вашу цель, вы пишите учебники на какие-то темы или просто инструкции и как их написать, да и как они пишутся… ::::Также я немного завален работой ::::# В викицитатнике там где мой основной аккаунт мне надо статьи делать и с админами дело плохо, админов 4, активен 1, а админ [[q:Участник:Putnik|Участник:Putnik]] год на сайт не заходил ::::# Я недавно зарегистрировался в Циклопедии и там нет базовых статей о мультфильмах например мой самый любимый мультфильм Красавица и Чудовище ::::# Я планирую стать участником Руниверсалис поскольку Википедия с её админами отвергли меня даже после того когда я признал свои ошибки. :::: Но я всё равно готов принять участие в вашем проекте если вы, объясните цель проекта и что, как создавать. ::::С уважением, СССР [[Участник:Taratarussia|Taratarussia]] ([[Обсуждение участника:Taratarussia|обсуждение]]) 15:09, 19 октября 2025 (UTC) ::::: Цель: учебники, инструкции и рецепты, которые будут свободными. Я думаю и так известная ситуация с учебниками везде, что легально стоят кучу денег, а нелегально скачивать - нелегально. В этом и потребность в Викиучебнике. Учитывая сколько ошибок совершается в бумажных учебниках (да и электронных) - технология вики для них просто идеально подходит<br>1. Ну это не критично. Главное чтобы вы сами могли беспрепятственно писать статьи/слова/учебники/и т.д.<br>2. Ну, Циклопедия не относится к сообществу Викимедия, поэтому я никак вам не могу помочь.<br>3. Аналогично, не вижу смысла от Руниверсалиса. В Википедии надо все же просить, пытаться, доказывать чтобы разблокировали. <br>Я заметил у вас нарушение [[w:ВП:ВИРТ]], но вас тут блокировать никто не собирается (я надеюсь вы будете соблюдать правила Викиучебника) и все же просьба: не создавать новый аккаунт как вы это сделали в Википедии.<br>Инструментарий тут такой же как в Википедии, поэтому, думаю, вы уже умеете пользоваться им. Если вам нужна будет помощь, то напишите мне, либо @[[Участник:Leksey|Leksey]] на СО коего мы находимся :). <span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 19:04, 19 октября 2025 (UTC) ::::::Спасибо за помощь, аккаунт в ВП создавать не собирался, правила буду соблюдать и вопрос: я могу создать учебник как использовать программу для 3д Blender? ::::::Также спасибо за радушный приём ::::::С уважением, [[Участник:Taratarussia|СССР]] ([[Обсуждение участника:Taratarussia|обсуждение]]) 19:13, 19 октября 2025 (UTC) ::::::: Уже существует [[Blender для начинающих]] и [[blender 2.49]] поэтому я рекомендовал бы их дополнять нежели создавать новый <span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 19:45, 19 октября 2025 (UTC) ::::::::2.49 версия устарела, уже 4.3 версия блендер а я активный пользователь этой программы и там делаю свою короткометражку ::::::::P.S ::::::::Blender обычно используеться подростками из этого следует что я не совершеннолетний человек ::::::::С уважением, [[Участник:Taratarussia|СССР]] ([[Обсуждение участника:Taratarussia|обсуждение]]) 20:07, 19 октября 2025 (UTC) ::::::::: ну лучше один из учебников тогда модифицировать вам. Как раз - обновите информацию :) <span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 17:00, 20 октября 2025 (UTC) ::::::::::Понял. И еще раз спасибо за радушный приём. ::::::::::С уважением, [[Участник:Taratarussia|СССР]] ([[Обсуждение участника:Taratarussia|обсуждение]]) 19:35, 20 октября 2025 (UTC) ::::::::::: @[[Участник:Kylaix|Kylaix]] @[[Участник:Leksey|Leksey]] Я передумал, и скорее всего начну здесь участие, но позвольте уточнение: можно ли просто переписывать сюда школьные учебники? [[Участник:Taratarussia|СССР]] ([[Обсуждение участника:Taratarussia|обсуждение]]) 15:47, 8 мая 2026 (UTC) :::::::::::: Нет, нельзя. Википедия только для авторских текстов (которые вы лично написали). Либо текстов, на которые получено разрешение явно от автора. [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 17:10, 8 мая 2026 (UTC) == С новым годом! == {{Орден |image = WikiDefender Barnstar Hires.png |name = Орден «Защитник Викиучебника» |text = Вручаю Вам данный орден многолетнее сохранение жизни в Викиучебнике, поддержку всех новичков и старичков, борьбу с вандализмом, развитие вашего легендарного учебника и значительную помощь в улучшении Викиучебника в техническом и дизайнерском сегменте. --<span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 21:47, 5 января 2026 (UTC) }} : Спасибо! Красиво! [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 23:54, 5 января 2026 (UTC) :: Ну это пока первый в Викиучебнике врученный. Хочу еще немного доработать все что связанное с орденами. Так что еще не передел красоты :) <span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 11:53, 6 января 2026 (UTC) == You may be an eligible candidate for the U4C election == <div lang="en" dir="ltr" class="mw-content-ltr"> Greetings, The [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee (U4C)]] seeks candidates for the 2026 election. The U4C is the global committee responsible for overseeing enforcement of the [[foundation:Special:MyLanguage/Policy:Universal Code of Conduct|Universal Code of Conduct]]. Elections are held annually, if elected a committee member serves for two years. This year the U4C requires candidates to hold administrator rights on at least one wiki, which is why you are being contacted as you appear to hold this right. There are other requirements, such as candidates must be at least 18 years old and may not be employed by the Wikimedia Foundation or other related chapters and affiliates. You can find more information in the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026#Call_for_Candidates|call for candidates on Meta-wiki]]. Additionally, the committee's working language is English; some ability to communicate in English is required. The election opens on 18 May, if you are eligible and interested you have until 10 May to submit your candidacy. There will be a week in between for candidates to answer questions from the community. Voting takes place privately in [[m:Special:MyLanguage/SecurePoll|SecurePoll]], successful candidates must receive at least 60% support. More information is available on [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|the 2026 Elections page]], including timelines and other candidacy information. If you read over the material and consider yourself qualified, please consider submitting your name to run for the committee. If you think someone else in your community might be interested and qualified, please encourage them to run. In partnership with the U4C -- [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User_talk:Keegan (WMF)|talk]]) 20:11, 28 апреля 2026 (UTC) </div> <!-- Сообщение отправил Участник:Keegan (WMF)@metawiki, используя список на странице https://meta.wikimedia.org/w/index.php?title=User:Keegan_(WMF)/test&oldid=30472482 --> == Ваша правка == Добрый день, крепкого здоровья! Вы обнаружили, что в викиучебнике размещён материал, схожий с опубликованным в беларусской цифровой библиотеке (и в Miningwiki тоже). Оба текста - копия из википедии, из статьи СИЗ - до того, как её вместо разделения на части из-за большого объёма почему-то (фактически) [https://ru.wikipedia.org/w/index.php?title=Средства_индивидуальной_защиты&diff=151321291&oldid=149716445 удалили]. Чем немало порадовали наименее ответственных поставщиков этого, в том числе, товара. Как (со)автор всех текстов, могу сказать, что нарушения авторских прав нет, и наверно, можно убрать шаблон. Спасибо. AlexChirkin. [[Служебная:Вклад/&#126;2026-26251-49|&#126;2026-26251-49]] ([[Обсуждение участника:&#126;2026-26251-49|обс.]]) 15:56, 19 мая 2026 (UTC) : А могли бы вы править от своего имени? Мне, как единственному администратору просто нереально анализировать происходящее. <br> Правки от живого неанонимного человека совсем иначе воспринимаются. От анонимов преимущественно спам идет. : То что удалили - восстанавливайте. Занимайтесь всем чем нужно. : То что копии с Викиучебника понял - сниму шаблон. [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 17:09, 19 мая 2026 (UTC) == Вики-конференция == Уважаемый коллега, здравствуйте! Мы (участники РуВики) планируем провести 18 июля в промежутке с 18:00 до 20:00 (МСК, UTC+3) онлайн Вики-конференцию. Не хотели бы вы выступить и рассказать о том, как сейчас живет Викиучебник? Болле подробно см. [[w:ru:Википедия:Форум/Новости#Первая онлайн-конференция Рувики]] [[У:S.Marchenko|S.Marchenko]] ([[ОУ:S.Marchenko|обс.]]) 13:43, 2 июля 2026 (UTC) : Спасибо за приглашение. Но трудно понять, что можно рассказать. В целом я не против, чтобы хоть как-то обозначить что проект еще функционирует. [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 14:57, 2 июля 2026 (UTC) ::Прекрасно! Тогда Вы можете подать заявку на вступление в дискорд сервер, конференция будет там) По поводу того, что можно рассказать: статистику (сколько активных участников, админов, бюрократов) ну и можете что-то еще придумать). Ещё раз спасибо, что согласились! [[У:S.Marchenko|S.Marchenko]] ([[ОУ:S.Marchenko|обс.]]) 15:07, 2 июля 2026 (UTC) ::: А куда жать конкретно. Дискорд могу поставить, но ссылку куда вступить лучше бы явно дать. Эта https://discord.gg/Drzx7FsrzU ? [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 19:01, 5 июля 2026 (UTC) ::::Да [[У:S.Marchenko|S.Marchenko]] ([[ОУ:S.Marchenko|обс.]]) 04:30, 6 июля 2026 (UTC) :::: @[[Участник:Leksey|Leksey]] коллега, ну как? Конференция состоится всего через несколько дней (на сервер зайти можно и заранее). [[Участник:Well very well|Well very well]] ([[Обсуждение участника:Well very well|обсуждение]]) 19:38, 15 июля 2026 (UTC) == Прошу удалить ошибочно созданную категорию == Уважаемый коллега, прошу быстро удалить ошибочно по незнанию созданную мной категорию [[:Категория:Полка:Коллекционирование]] вместо правильной Полки:Коллекционирование (которая уже имеется). Там один участник уже предлагал её удалить, проставив шаблон КУ, но Вы отменили его правку, а он был прав. Извините за беспокойство. [[Участник:Л.П. Джепко|Л.П. Джепко]] ([[Обсуждение участника:Л.П. Джепко|обсуждение]]) 13:00, 5 октября 2026 (UTC) 7vk1ux87a64kxdh8iw0lk36r5yhrst8 270182 270171 2026-10-05T19:52:09Z Leksey 3027 /* Прошу удалить ошибочно созданную категорию */ ответ: Здравствуйте. Готово. Пожалуйста. (-) ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]]) 270182 wikitext text/x-wiki {{Архив}} == У меня небольшой склероз == Я последнее время замечаю за собой, что я забываю что-то сделать, что ранее обещал.<br> Я буду только рад и благодарен, если забыв что-то сделать - вы напомните :).<br> Последнее время моя голова совсем не держит мысли... <span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 02:23, 6 марта 2025 (UTC) : Рецепты на морде рецептов сделать рандомными [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 03:40, 7 марта 2025 (UTC) == Восстановление страниц == Привет<br> Не знаю зачем вы восстановили эти несколько страниц, но возможно это нужно. Буду рад такой ревизии. <br> Единственная просьба - не использовать пока что стандартные категории, а прописывать их через {{tl|Название учебника}}: они и работают в этом смысле как старый шаблон тем, и, как я понимаю, это чтобы не плодить миллион полок. В будущем, когда я разберу наконец-то [[:Категория:Учебники без шаблона]] и добавлю в бота, чтобы он автоматически конвертировал любые категории в шаблон и наконец придумаю какой-то автокаталог нам. P.s.: да, категория у нас имеет совершенно другое значение нежели в Википедии и реальное использование. <span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 09:21, 23 апреля 2025 (UTC) : Так это мои статьи. Одну уже поправил. В остальные удаленные надо добавить что-то более учебное. Они были созданы как заготовки и для связи каких-то имеющихся уже в учебнике сущностей (чтобы их можно было найти). : Лучше при удалении моих статей мне писать. [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 12:11, 23 апреля 2025 (UTC) :: А, извиняюсь. Я редко смотрю кто создатель статей, когда их удаляю. Обычно просто по критериям КБУ вспоминаю. <span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 16:08, 23 апреля 2025 (UTC) ::: Ну или через стандартную процедуру удаления пускать. Случайно заметил. Ну или втыкать вначале шаблон "Стаб". ::: Хотя сейчас идет глобальная чистка и тут лишних телодвижений не хочется. Но мы реально удаление всякой ерунды обсуждаем зачем-то (которую удалил и забыл), а тут какие-то б-м разумные тексты одним кликом удалены. Но я не в обиде. Формально то они не в формате. С другой стороны - у нас бы наладить и обратный процесс - выталкивание чего-то в Википедию. Хотя это трудоемко. Может тогда шаблон придумать "Перенести в Википедию"? [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 17:22, 23 апреля 2025 (UTC) :::: Я обычно захожу через ботовские категории на эти статьи/учебники, поэтому меня всякие значки вроде "стаб" не останавливают, но вот что меня действительно всегда и почти в любом случае может остановить - это подстраницы: какой бы не был учебник (может только если откровенно маргинальный или 1 в 1 скопированный из сборник статей из Википедии), то я обычно его сохраняю насколько плохо/хорошо он не был написан. Просто у меня уже и мышление, и боты и вся архитектура, которую делаю для ВУ сейчас так настроена, что подстраницы обычно не мешаются никак и могут спокойно существовать. Поэтому по возможности лучше их объединять с существующими учебниками. :::: P.s.: я думаю к концу лета смогу глянуть еще раз что я поудалял и возможно часть восстановлю, но не думаю, что там будет много. :::: Касательно Википедии - я обычно если вижу, что статья будто скопирована оттуда пытаюсь проверить действительно ли это так и если вижу, что ее нет, но она весьма годная - переношу к себе в [[Участник:Kylaix/Перенос в Википедию]]. Ну а вообще да, нам стоит подумать над какой-то страничкой-агрегаттором, которая из моих личных страниц в том числе и этой. :::: И еще момент - я об этом ранее не говорил, но держал в голове: у нас есть учебники, которые надо перенести в Викиверситет, так как проще из них сделать курсы, а в Викиверситете много откровенно учебников, которые надо перенести сюда, так что когда будет время - я этим буду заниматься (вот хотел бы услышать ваши комментарии насчет этого) <span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 17:33, 23 апреля 2025 (UTC) == Notice of expiration of your sysop right == <div dir="ltr">Hi, as part of [[:m:Special:MyLanguage/Global reminder bot|Global reminder bot]], this is an automated reminder to let you know that your permission "sysop" (Администраторы) will expire on 2025-09-09 05:58:32. Please renew this right if you would like to continue using it. <i>In other languages: [[:m:Special:MyLanguage/Global reminder bot/Messages/default|click here]]</i> [[Участник:Leaderbot|Leaderbot]] ([[Обсуждение участника:Leaderbot|обсуждение]]) 19:44, 2 сентября 2025 (UTC)</div> == Требования к админам == Скажите пожалуйста какие требования нужно соблюсти кандидату в администраторы потому в правилах всё как-то размыто написано и я так и не понял С уважением, [[Участник:Taratarussia|Taratarussia]] ([[Обсуждение участника:Taratarussia|обсуждение]]) 22:33, 10 октября 2025 (UTC) : Может быть описание в Википедии поможет понять? [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 01:48, 11 октября 2025 (UTC) ::то-есть требования к кандидату в администраторы таки-же как в Википедии? ::P.S. ::Я люблю в своих сообщениях писать P.S. ::P.S.S. ::Я из Викицитатника сюда просто заглянул для интереса и в ВЦ я автопатрулирующий и 40 статей сделал ::С уважением, [[Участник:Taratarussia|Taratarussia]] ([[Обсуждение участника:Taratarussia|обсуждение]]) 08:01, 11 октября 2025 (UTC) ::: Для меня лично прежде всего стоит вопрос наличия вклада в проекте, а не неких формальных правил. Какие у нас требования к администратору я не знаю, честно говоря. [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 03:14, 19 октября 2025 (UTC) ::::Понял, извините что побеспокоил [[Участник:Taratarussia|Taratarussia]] ([[Обсуждение участника:Taratarussia|обсуждение]]) 07:58, 19 октября 2025 (UTC) ::: Ну, я где-то припоминал формальное требование в 100 правок то ли что-то такое. Но это лишь формальность, потому что все зависит от голосования. Людей обычно у нас не очень много и поэтому всегда тяжело пробудить людей на голосование. Да и админство в Викиучебнике это скорее возможность решить проблемы там, где без админдействий никак не обойтись (КУ/редактирование защищенных страниц/вандализмы и т.д.) <br>P.s.: я тоже люблю писать P.s.<br>P.s.s.: короче, админство тут это скорее для решения всяких технических проблем, потому что сообщество у нас небольшое и админов, соответственно, тоже мало (что, кстати, хотелось бы изменить! Присоединяйтесь к нам :)! ) <span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 12:23, 19 октября 2025 (UTC) ::::Я бы рад, но я не понимаю вашу цель, вы пишите учебники на какие-то темы или просто инструкции и как их написать, да и как они пишутся… ::::Также я немного завален работой ::::# В викицитатнике там где мой основной аккаунт мне надо статьи делать и с админами дело плохо, админов 4, активен 1, а админ [[q:Участник:Putnik|Участник:Putnik]] год на сайт не заходил ::::# Я недавно зарегистрировался в Циклопедии и там нет базовых статей о мультфильмах например мой самый любимый мультфильм Красавица и Чудовище ::::# Я планирую стать участником Руниверсалис поскольку Википедия с её админами отвергли меня даже после того когда я признал свои ошибки. :::: Но я всё равно готов принять участие в вашем проекте если вы, объясните цель проекта и что, как создавать. ::::С уважением, СССР [[Участник:Taratarussia|Taratarussia]] ([[Обсуждение участника:Taratarussia|обсуждение]]) 15:09, 19 октября 2025 (UTC) ::::: Цель: учебники, инструкции и рецепты, которые будут свободными. Я думаю и так известная ситуация с учебниками везде, что легально стоят кучу денег, а нелегально скачивать - нелегально. В этом и потребность в Викиучебнике. Учитывая сколько ошибок совершается в бумажных учебниках (да и электронных) - технология вики для них просто идеально подходит<br>1. Ну это не критично. Главное чтобы вы сами могли беспрепятственно писать статьи/слова/учебники/и т.д.<br>2. Ну, Циклопедия не относится к сообществу Викимедия, поэтому я никак вам не могу помочь.<br>3. Аналогично, не вижу смысла от Руниверсалиса. В Википедии надо все же просить, пытаться, доказывать чтобы разблокировали. <br>Я заметил у вас нарушение [[w:ВП:ВИРТ]], но вас тут блокировать никто не собирается (я надеюсь вы будете соблюдать правила Викиучебника) и все же просьба: не создавать новый аккаунт как вы это сделали в Википедии.<br>Инструментарий тут такой же как в Википедии, поэтому, думаю, вы уже умеете пользоваться им. Если вам нужна будет помощь, то напишите мне, либо @[[Участник:Leksey|Leksey]] на СО коего мы находимся :). <span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 19:04, 19 октября 2025 (UTC) ::::::Спасибо за помощь, аккаунт в ВП создавать не собирался, правила буду соблюдать и вопрос: я могу создать учебник как использовать программу для 3д Blender? ::::::Также спасибо за радушный приём ::::::С уважением, [[Участник:Taratarussia|СССР]] ([[Обсуждение участника:Taratarussia|обсуждение]]) 19:13, 19 октября 2025 (UTC) ::::::: Уже существует [[Blender для начинающих]] и [[blender 2.49]] поэтому я рекомендовал бы их дополнять нежели создавать новый <span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 19:45, 19 октября 2025 (UTC) ::::::::2.49 версия устарела, уже 4.3 версия блендер а я активный пользователь этой программы и там делаю свою короткометражку ::::::::P.S ::::::::Blender обычно используеться подростками из этого следует что я не совершеннолетний человек ::::::::С уважением, [[Участник:Taratarussia|СССР]] ([[Обсуждение участника:Taratarussia|обсуждение]]) 20:07, 19 октября 2025 (UTC) ::::::::: ну лучше один из учебников тогда модифицировать вам. Как раз - обновите информацию :) <span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 17:00, 20 октября 2025 (UTC) ::::::::::Понял. И еще раз спасибо за радушный приём. ::::::::::С уважением, [[Участник:Taratarussia|СССР]] ([[Обсуждение участника:Taratarussia|обсуждение]]) 19:35, 20 октября 2025 (UTC) ::::::::::: @[[Участник:Kylaix|Kylaix]] @[[Участник:Leksey|Leksey]] Я передумал, и скорее всего начну здесь участие, но позвольте уточнение: можно ли просто переписывать сюда школьные учебники? [[Участник:Taratarussia|СССР]] ([[Обсуждение участника:Taratarussia|обсуждение]]) 15:47, 8 мая 2026 (UTC) :::::::::::: Нет, нельзя. Википедия только для авторских текстов (которые вы лично написали). Либо текстов, на которые получено разрешение явно от автора. [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 17:10, 8 мая 2026 (UTC) == С новым годом! == {{Орден |image = WikiDefender Barnstar Hires.png |name = Орден «Защитник Викиучебника» |text = Вручаю Вам данный орден многолетнее сохранение жизни в Викиучебнике, поддержку всех новичков и старичков, борьбу с вандализмом, развитие вашего легендарного учебника и значительную помощь в улучшении Викиучебника в техническом и дизайнерском сегменте. --<span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 21:47, 5 января 2026 (UTC) }} : Спасибо! Красиво! [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 23:54, 5 января 2026 (UTC) :: Ну это пока первый в Викиучебнике врученный. Хочу еще немного доработать все что связанное с орденами. Так что еще не передел красоты :) <span style="font-family:TimesNewRoman;">[[Участник:Kylaix|'''''Kylain Aixter''''' ]] ([[Обсуждение участника:Kylaix|СО]]) </span> 11:53, 6 января 2026 (UTC) == You may be an eligible candidate for the U4C election == <div lang="en" dir="ltr" class="mw-content-ltr"> Greetings, The [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee (U4C)]] seeks candidates for the 2026 election. The U4C is the global committee responsible for overseeing enforcement of the [[foundation:Special:MyLanguage/Policy:Universal Code of Conduct|Universal Code of Conduct]]. Elections are held annually, if elected a committee member serves for two years. This year the U4C requires candidates to hold administrator rights on at least one wiki, which is why you are being contacted as you appear to hold this right. There are other requirements, such as candidates must be at least 18 years old and may not be employed by the Wikimedia Foundation or other related chapters and affiliates. You can find more information in the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026#Call_for_Candidates|call for candidates on Meta-wiki]]. Additionally, the committee's working language is English; some ability to communicate in English is required. The election opens on 18 May, if you are eligible and interested you have until 10 May to submit your candidacy. There will be a week in between for candidates to answer questions from the community. Voting takes place privately in [[m:Special:MyLanguage/SecurePoll|SecurePoll]], successful candidates must receive at least 60% support. More information is available on [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|the 2026 Elections page]], including timelines and other candidacy information. If you read over the material and consider yourself qualified, please consider submitting your name to run for the committee. If you think someone else in your community might be interested and qualified, please encourage them to run. In partnership with the U4C -- [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User_talk:Keegan (WMF)|talk]]) 20:11, 28 апреля 2026 (UTC) </div> <!-- Сообщение отправил Участник:Keegan (WMF)@metawiki, используя список на странице https://meta.wikimedia.org/w/index.php?title=User:Keegan_(WMF)/test&oldid=30472482 --> == Ваша правка == Добрый день, крепкого здоровья! Вы обнаружили, что в викиучебнике размещён материал, схожий с опубликованным в беларусской цифровой библиотеке (и в Miningwiki тоже). Оба текста - копия из википедии, из статьи СИЗ - до того, как её вместо разделения на части из-за большого объёма почему-то (фактически) [https://ru.wikipedia.org/w/index.php?title=Средства_индивидуальной_защиты&diff=151321291&oldid=149716445 удалили]. Чем немало порадовали наименее ответственных поставщиков этого, в том числе, товара. Как (со)автор всех текстов, могу сказать, что нарушения авторских прав нет, и наверно, можно убрать шаблон. Спасибо. AlexChirkin. [[Служебная:Вклад/&#126;2026-26251-49|&#126;2026-26251-49]] ([[Обсуждение участника:&#126;2026-26251-49|обс.]]) 15:56, 19 мая 2026 (UTC) : А могли бы вы править от своего имени? Мне, как единственному администратору просто нереально анализировать происходящее. <br> Правки от живого неанонимного человека совсем иначе воспринимаются. От анонимов преимущественно спам идет. : То что удалили - восстанавливайте. Занимайтесь всем чем нужно. : То что копии с Викиучебника понял - сниму шаблон. [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 17:09, 19 мая 2026 (UTC) == Вики-конференция == Уважаемый коллега, здравствуйте! Мы (участники РуВики) планируем провести 18 июля в промежутке с 18:00 до 20:00 (МСК, UTC+3) онлайн Вики-конференцию. Не хотели бы вы выступить и рассказать о том, как сейчас живет Викиучебник? Болле подробно см. [[w:ru:Википедия:Форум/Новости#Первая онлайн-конференция Рувики]] [[У:S.Marchenko|S.Marchenko]] ([[ОУ:S.Marchenko|обс.]]) 13:43, 2 июля 2026 (UTC) : Спасибо за приглашение. Но трудно понять, что можно рассказать. В целом я не против, чтобы хоть как-то обозначить что проект еще функционирует. [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 14:57, 2 июля 2026 (UTC) ::Прекрасно! Тогда Вы можете подать заявку на вступление в дискорд сервер, конференция будет там) По поводу того, что можно рассказать: статистику (сколько активных участников, админов, бюрократов) ну и можете что-то еще придумать). Ещё раз спасибо, что согласились! [[У:S.Marchenko|S.Marchenko]] ([[ОУ:S.Marchenko|обс.]]) 15:07, 2 июля 2026 (UTC) ::: А куда жать конкретно. Дискорд могу поставить, но ссылку куда вступить лучше бы явно дать. Эта https://discord.gg/Drzx7FsrzU ? [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 19:01, 5 июля 2026 (UTC) ::::Да [[У:S.Marchenko|S.Marchenko]] ([[ОУ:S.Marchenko|обс.]]) 04:30, 6 июля 2026 (UTC) :::: @[[Участник:Leksey|Leksey]] коллега, ну как? Конференция состоится всего через несколько дней (на сервер зайти можно и заранее). [[Участник:Well very well|Well very well]] ([[Обсуждение участника:Well very well|обсуждение]]) 19:38, 15 июля 2026 (UTC) == Прошу удалить ошибочно созданную категорию == Уважаемый коллега, прошу быстро удалить ошибочно по незнанию созданную мной категорию [[:Категория:Полка:Коллекционирование]] вместо правильной Полки:Коллекционирование (которая уже имеется). Там один участник уже предлагал её удалить, проставив шаблон КУ, но Вы отменили его правку, а он был прав. Извините за беспокойство. [[Участник:Л.П. Джепко|Л.П. Джепко]] ([[Обсуждение участника:Л.П. Джепко|обсуждение]]) 13:00, 5 октября 2026 (UTC) : Здравствуйте. Готово. Пожалуйста. [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 19:52, 5 октября 2026 (UTC) s0x8osehv54pxky6pw2q7k2pz7q3usp Полка:Туризм 100 33962 270170 267925 2026-10-05T12:00:37Z Л.П. Джепко 642 исправление ссылки на ВП 270170 wikitext text/x-wiki {{очистить кэш}} {{Дополнительная Полка | родитель = Досуг | описание = Материалы о [[w:Туризм|туризме]] }} hx6c13pny6zh99icygiwvqyt8ni027i Викиучебник:Каталог учебников/Список 4 34750 270183 269626 2026-10-05T20:10:25Z Kylaixbot 77400 Обновление каталога учебников: список полок с учётом вложенных страниц 270183 wikitext text/x-wiki {{Викиучебник:Каталог учебников/Шапка}} * [[Файл:Black computer icon.png|14px]] [[Полка:Компьютеры|Компьютеры]] ** [[Файл:Code file icon.png|14px]] [[Полка:Программирование|Программирование]] ** [[Полка:Программное обеспечение|Программное обеспечение]] ** [[Полка:Операционные системы|Операционные системы]] ** [[Файл:Gamepad - Delapouite - game-icons.svg|14px]] [[Полка:Компьютерные игры|Компьютерные игры]] ** [[Файл:Web icon.png|14px]] [[Полка:Веб-разработка|Веб-разработка]] ** [[Файл:Paint palette icon from the Noun Project.svg|14px]] [[Полка:Компьютерная графика|Компьютерная графика]] * [[Полка:Естественные науки|Естественные науки]] ** [[Файл:Atom - game-icons.svg|14px]] [[Полка:Физика|Физика]] ** [[Файл:WikiJournal of Medicine logo (flat black).svg|14px]] [[Полка:Медицина|Медицина]] ** [[Файл:Flask-vial-solid.svg|14px]] [[Полка:Химия|Химия]] ** [[Файл:Biology - The Noun Project.svg|14px]] [[Полка:Биология|Биология]] ** [[Файл:Geography icon.svg|14px]] [[Полка:География|География]] ** [[Файл:Noun project 528.svg|14px]] [[Полка:Геология|Геология]] * [[Файл:OOjs UI icon math.svg|14px]] [[Полка:Математика|Математика]] ** [[Полка:Алгебра|Алгебра]] ** [[Файл:Geometry tools - Noun project 108271.svg|14px]] [[Полка:Геометрия|Геометрия]] * [[Полка:Языки|Языки]] ** [[Полка:Языки Европы|Языки Европы]] ** [[Полка:Искусственные языки|Искусственные языки]] ** [[Полка:Древние языки|Древние языки]] ** [[Полка:Другие языки|Другие языки]] ** [[Полка:Семитские языки|Семитские языки]] ** [[Полка:Языки Восточной Азии|Языки Восточной Азии]] ** [[Полка:Языки Юго-Восточной Азии|Языки Юго-Восточной Азии]] * [[Полка:Формальные науки|Формальные науки]] ** [[Файл:Mathematik Informatik.png|14px]] [[Полка:Информатика|Информатика]] * [[Полка:Техника|Техника]] ** [[Файл:Big guy 637's Car icon.svg|14px]] [[Полка:Автомобили|Автомобили]] ** [[Файл:Building icon Metal.png|14px]] [[Полка:Строительство|Строительство]] ** [[Файл:Plane-icon.png|14px]] [[Полка:Авиация|Авиация]] ** [[Полка:История техники|История техники]] ** [[Полка:Транспорт|Транспорт]] * [[Полка:Социальные науки|Социальные науки]] ** [[Полка:Экономика|Экономика]] ** [[Полка:Психология|Психология]] ** [[Полка:Социология|Социология]] * [[Полка:Гуманитарные науки|Гуманитарные науки]] ** [[Файл:PICOL icon News.svg|14px]] [[Полка:Журналистика|Журналистика]] ** [[Файл:201807 book C.svg|14px]] [[Полка:Литература|Литература]] ** [[Полка:Философия|Философия]] ** [[Файл:Telugu Translation icon - 01.svg|14px]] [[Полка:Лингвистика|Лингвистика]] * [[Полка:Досуг|Досуг]] ** [[Полка:Туризм|Туризм]] ** [[Файл:Round-table - Delapouite - game-icons.svg|14px]] [[Полка:Настольные игры|Настольные игры]] * [[Файл:Culture icon.png|14px]] [[Полка:Культура|Культура]] ** [[Файл:Deepin Icon Theme – folder-music-symbolic (3).svg|14px]] [[Полка:Музыка|Музыка]] ** [[Полка:Фотография|Фотография]] 1jphbmq017aljscuae2jflue1s743bi Шаблон:Турецкая кухня 10 35184 270173 263388 2026-10-05T13:10:15Z Heffalump1974 37550 Глобальное структурирование шаблона, ликвидация латинских дефектов, добавление типового низа и упорядочивание родственных кухонь совместно с ИИ-ассистентом Jolly Giants 270173 wikitext text/x-wiki {{Навигационная таблица | name = Турецкая кухня | title = [[Турецкая кухня]] | image = | state = <includeonly>{{{state|autocollapse}}}</includeonly> | bodyclass = hlist | group1 = Напитки | list1 = ;Безалкогольные : [[Рецепт:Напиток Мырра|Мырра (кофе двойной варки)]] ([[w:en:M%C4%B1rra|en]]) : [[Рецепт:Пекмез|Пекмез]] ([[w:Пекмез|w]]) : [[Рецепт:Чай из Ризе|Чай из Ризе]] ([[w:en:Rize_tea|en]]) : [[Рецепт:Салеп|Салеп]] : [[Рецепт:Шалгам|Шалгам]] : [[Рецепт:Шербет|Шербет]] : [[Рецепт:Напиток Шира|Шира (виноградный напиток)]] ([[w:en:%C5%9E%C4%B1ra|en]]) : [[Рецепт:Кофе по-турецки|Турецкий кофе]] ([[w:Кофе по-турецки|w]]) : [[Рецепт:Турецкий чай|Турецкий чай]] ([[w:Турецкий_чай|w]]) ;Ферментированные : [[Рецепт:Айран|Айран]] : [[Рецепт:Хардалие|Хардалие]] : [[Рецепт:Буза|Боза]] : [[w:Кефир|Кефир (w)]] : [[w:en:Yay%C4%B1k_ayran%C4%B1|Яйык айраны (сбитый айран) (en)]] ;Пиво : '''[[w:Пиво в Турции|Пиво в Турции (главная статья)]]''' : [[w:Efes_Beverage_Group|Эфес (Efes) (w)]] : [[w:en:Bomonti_Brewery|Бомонти (Bomonti) (en)]] * Пера (Pera) * ГараГузу (GaraGuzu) : [[w:en:Tekel_Biras%C4%B1|Текел (Tekel) (en)]] {{small|(неактивно)}} ;Крепкие спиртные : [[Рецепт:Ракы|Ракы]] ([[w:Ракы|w]]) ;Вино : '''[[w:Виноделие в Турции|Виноделие в Турции (главная статья)]]''' : [[w:en:Adakaras%C4%B1|Адакарасы (en)]] : [[w:en:Bo%C4%9Fazkere|Богазкере (en)]] : [[w:en:%C3%87alkaras%C4%B1|Чалкарасы (en)]] : [[w:en:Kalecik_Karas%C4%B1|Каледжик Карасы (en)]] : [[w:en:%C3%96k%C3%BCzg%C3%B6z%C3%BC|Окюзгёзю (en)]] : [[w:en:Papazkaras%C4%B1|Папазкарасы (en)]] | group2 = Выпечка и хлеб | list2 = * [[Рецепт:Базлама|Базлама]] * [[Рецепт:Бойоз|Бойоз]] * [[Рецепт:Черкесский simit|Черкесский симит (халгуане)]] ([[w:Халюж|w]]) * [[Рецепт:Гёзлеме|Гёзлеме]] * [[Рецепт:Кандиль симиди|Кандиль симиди]] ([[w:en:Kandil_simidi|en]]) * [[Рецепт:Каттама|Катмер]] * [[Рецепт:Лаваш|Лаваш]] * [[Рецепт:Нокул|Нокул]] ([[w:en:Nokul|en]]) * [[Рецепт:Пита|Пиде]] * [[Рецепт:Баурсак|Пиши]] * [[Рецепт:Погача|Погача]] * [[Рецепт:Юфка|Юфка]] ([[w:Юфка|w]]) * [[Рецепт:Симит|Simit]] * [[Рецепт:Тандырный турецкий хлеб|Тандырный хлеб]] ([[w:Тандыр-нан|w]]) * [[Рецепт:Гата|Кете]] | group3 = Закуски<br>и салаты | list3 = * '''[[w:Мезе|Мезе (главная статья)]]''' * [[Рецепт:Ачука|Ачука (острая закуска)]] ([[w:en:Muhammara|en]]) * [[Рецепт:Фава|Бакла эзмеси]] * [[Рецепт:Дзадзики|Джаджик]] * [[Рецепт:Чиг-кёфте|Чиг-кёфте]] * [[Рецепт:Чобан салаты|Чобан салаты]] ([[w:en:Choban_salad|en]]) * [[Рецепт:Салат из морской спаржи|Салат из морской спаржи (дениз борульджеси)]] ([[w:en:Salicornia|en]]) * [[Рецепт:Долма|Долма]] * [[Рецепт:Хумус|Хумус]] * [[Рецепт:Катык|Катык]] * [[Рецепт:Ичли кёфте|Ичли кёфте (котлеты из булгура)]] ([[w:Кіббех|w]]) * [[Рецепт:Имам баялды|Имам баялды]] * [[Рецепт:Долма из цветов кабачка|Долма из цветов кабачка]] ([[w:en:Squash_blossom|en]]) * [[Рецепт:Кысыр|Кысыр]] * [[Рецепт:Кокореци|Кокореч]] * [[Рецепт:Лакерда|Лакерда]] ([[w:Лакерда|w]]) * [[Рецепт:Мерджимек кёфтеси|Мерджимек кёфтеси]] * [[Рецепт:Мидье dolма|Мидье долма (фаршированные мидии)]] ([[w:en:Stuffed_mussels|en]]) * [[Рецепт:Бастурма|Пастырма]] * [[Рецепт:Салат из баклажанов по-турецки|Салат из баклажанов (патлыджан салатасы)]] ([[w:Салаты и закуски из баклажанов|w]]) * [[Рецепт:Пилаки|Пилаки (закуска из фасоли)]] ([[w:en:Pilaki|en]]) * [[Рецепт:Пияз|Пияз]] * [[Рецепт:Сарма|Сарма]] ([[w:Сарма (блюдо)|w]]) * [[Рецепт:Суджук|Суджук]] * [[Рецепт:Шакшука|Шакшука]] * [[Рецепт:Тарамасалата|Тарамасалата]] * [[Рецепт:Соус Таратор по-турецки|Таратор (соус-закуска)]] ([[w:Таратор|w]]) * [[Рецепт:Холодный суп из булгура|Холодный суп из булгура]] * [[Рецепт:Йогурт|Йогурт]] | group4 = Сыры | list4 = * [[w:Беяз_пейнир|Беяз пейнир]] * [[w:en:Braided_cheese|Плетёный сыр (оргу пейнири)]] * [[w:Адыгейский_сыр|Черкесский сыр]] * [[w:en:Civil_peyniri|Дживил пейнири]] * [[w:en:%C3%87%C3%B6mlek_cheese|Чомлек пейнири (в горшочке)]] * [[w:en:Dolaz_cheese|Долаз пейнири]] * [[w:Халлуми|Хеллим (халлуми)]] * [[w:Карс_гравьер|Карс гравьер]] * [[w:Касери|Кашар пейнири]] * [[w:Кашкавал|Кашкавал]] * [[w:en:K%C3%BCnefe_peyniri|Kюнефе пейнири]] * [[w:en:Lava%C5%9F_cheese|Лаваш пейнири]] * [[w:Мизитра|Лор пейнири (мизитра)]] * [[w:en:Mihali%C3%A7_Peyniri|Михалич пейнири]] * [[w:Саганаки|Саганаки]] * [[w:en:Teleme_peyniri|Телеме пейнири]] * [[w:en:Tomas_peyniri|Томас пейнири]] * [[w:Тулум_(сыр)|Тулум пейнири]] * [[w:en:Van_herbed_cheese|Ванский сыр с зеленью]] | group5 = Супы | list5 = * '''[[Рецепт:Чорба|Чорба (главная статья)]]''' * [[Рецепт:Суп Аналы кызлы|Аналы кызлы]] ([[w:en:Anal%C4%B1_k%C4%B1zl%C4%B1_soup|en]]) * [[Рецепт:Балык чорбасы|Балык чорбасы (рыбный суп)]] * [[Рецепт:Суп Эзогелин|Эзогелин чорбасы]] * [[Рецепт:Ишкембе чорбасы|Ишкембе чорбасы (из требухи)]] ([[w:Ишкембе чорбасы|w]]) * [[Рецепт:Суп щавелевый по-турецки|Суп щавелевый (кузукулагы чорбасы)]] * [[Рецепт:Мерджимек чорбасы|Мерджимек чорбасы (чечевичный суп)]] * [[Рецепт:Тархоня|Тархана]] * [[Рецепт:Тойга чорбасы|Тойга чорбасы]] ([[w:en:Toyga_soup|en]]) * [[Рецепт:Яйла чорбасы|Яйла чорбасы]] * [[Рецепт:Эриште ашы|Эриште ашы]] * [[Рецепт:Суп Келедош|Келедош]] * [[Рецепт:Хаш|Келле-пача (хаш)]] * [[Рецепт:Тавук чорбасы|Тавук чорбасы (куриный суп)]] | group6 = Основные блюда и рагу | list6 = * [[Рецепт:Арнавут джигери|Арнавут джигери (печень по-албански)]] ([[w:en:Arnavut_ci%C4%9Feri|en]]) * [[Рецепт:Айва долмасы|Айва долмасы (фаршированная айва)]] ([[w:en:Ayva_dolmas%C4%B1|en]]) * [[Рецепт:Балык экмек|Балык экмек]] ([[w:Балык-экмек|w]]) * [[Рецепт:Бурек|Бурек]] * [[Рецепт:Бугу кебабы|Бугу кебабы]] ([[w:en:Bu%C4%9Fu_kebab%C4%B1|en]]) * [[Рецепт:Булгур|Булгур]] ([[w:Булгур|w]]) * [[Рецепт:Джантик пиде|Джантик пиде (Bursa Cantik Pide)]] * [[Рецепт:Чорбалык кесме|Чорбалык кесме (суповая лапша)]] * [[Рецепт:Шевкетибостан|Шевкетибостан (рагу с бенедиктинцем)]] ([[w:tr:%C5%9Eevketibostan_yeme%C4%9Fi|tr]]) * [[Рецепт:Ширден|Ширдан]] ([[w:en:%C5%9E%C4%B1rdan|en]]) * [[Рецепт:Чебурек|Чебурек]] * [[Рецепт:Чылбыр|Чылбыр]] * [[Рецепт:Колоказия с бараниной|Колоказия с бараниной]] * [[Рецепт:Мак-самосейка с бараниной|Мак-самосейка с бараниной]] * [[Рецепт:Фаршированные помидоры|Доматес долмасы]] * [[Рецепт:Этли макарна|Этли макарна (макароны с мясом)]] * [[Рецепт:Кабаклы берек|Кабаклы пейнирли берек]] * [[Рецепт:Каварма|Кавурма]] * [[Рецепт:Кесме|Эриште]] * [[Рецепт:Комбе|Комбе]] * [[Рецепт:Куру кёфте|Куру кёфте (сухие котлеты)]] * [[Рецепт:Фаршированные яблоки|Элма долмасы]] * [[Рецепт:Харпут кёфтеси|Харпут кёфтеси]] ([[w:tr:Harput_k%C3%B6fte|tr]]) * [[Рецепт:Селаник береги|Селаник береги (по-салоникски)]] * [[Рецепт:Ичли пиде|Ичли пиде]] * [[Рецепт:Измир кёфте|Измир кёфте]] ([[w:en:Smyrna_meatballs|en]]) * [[Рецепт:Капуска|Капуска]] * [[Рецепт:Карныярык|Карныярык]] * [[Рецепт:Кешкек|Кешкек]] * [[Рецепт:Куру фасулье|Куру фасулье (фасоль с мясом)]] ([[w:en:Kuru_fasulye|en]]) * [[Рецепт:Лапа|Лапа (рисова каша)]] * [[Рецепт:Лахмаджун|Лахмаджун]] * [[Рецепт:Лепси|Лепси]] ([[w:tr:Lepsi|tr]]) * [[Рецепт:Либже|Либже либже баста]] * [[Рецепт:Мальва с бараниной|Мальва с бараниной]] * [[Рецепт:Манты|Манты]] * [[Рецепт:Менемен|Менемен]] * [[Рецепт:Мирик кёфтеси|Мирик kёфтеси]] * [[Рецепт:Мусака|Мусака]] * [[Рецепт:Мелидзана папуцакья|Папуджаки (папуцакья)]] * [[Рецепт:Фаршированные баклажаны|Патлыджан долмасы]] * [[Рецепт:Баклажаны жареные|Патлыджан кызартмасы]] * [[Рецепт:Патлыджан кебабы|Patlıcan kebabı]] ([[w:en:Eggplant_kebab|en]]) * [[Рецепт:Пердели пилав|Пердели пилав]] ([[w:en:Perdeli_pilav|en]]) * [[Рецепт:Пилав|Пилав (плов)]] ([[w:Плов|w]]) * [[Рецепт:Пиязийе|Пиязийе]] * [[Рецепт:Пуф береги|Пуф береги]] * [[Рецепт:Сирон|Сирон]] ([[w:tr:Siron_(yemek)|tr]]) * [[Рецепт:Су береги|Су береги (водяной пирог)]] ([[w:en:Su_B%C3%B6re%C4%9Fi|en]]) * [[Рецепт:Соган долмасы|Соган долмасы (из лука)]] * [[Рецепт:Тас-кебаб|Тас кебаб]] ([[w:en:Tas_kebap|en]]) * [[Рецепт:Татар береги|Татар береги]] * [[Рецепт:Тюрлю|Тюрлю]] * [[Рецепт:Узун эриште|Узун эриште]] * [[Рецепт:Ван кёфтеси|Van köfte]] * [[Рецепт:Яхния|Яхни]] | group7 = Мясо-гриль (Кебабы) | list7 = * '''[[Рецепт:Кебаб|Кебаб (главная статья)]]''' * [[Рецепт:Адана-кебаб|Адана кебаб]] ([[w:Адана-кебаб|w]]) * [[Рецепт:Акчаабат кёфтеси|Акчаабат кёфтеси]] ([[w:en:Ak%C3%A7aabat_meatballs|en]]) * [[Рецепт:Алиназик kebab|Алиназик кебаб]] ([[w:en:Alinazik_kebab|en]]) * [[Рецепт:Бейти кебаб|Бейти кебаб]] ([[w:Бейти-кебаб|w]]) * [[Рецепт:Джаг кебаб|Джаг кебаб]] ([[w:Джаг-кебаб|w]]) * [[Рецепт:Шаурма|Донер кебаб]] * [[Рецепт:Инегёль кёфтеси|Инегёль кёфтеси]] ([[w:en:%C4%B0neg%C3%B6l_meatballs|en]]) * [[Рецепт:Искендер кебаб|Искендер кебаб]] * [[Рецепт:Кюфта|Кёфте]] * [[Рецепт:Мискендер кебаб|Мискендер]] * [[Рецепт:Патлыджан кебабы|Баклажан-кебаб (патлыджан кебабы)]] ([[w:en:Eggplant_kebab|en]]) * [[Рецепт:Пидели кёфте|Пидели кёфте]] * [[Рецепт:Шиш кебаб|Шиш кебаб]] ([[w:Шашлык|w]]) * [[Рецепт:Шиш кёфте|Шиш кёфте]] * [[Рецепт:Шиш тавук|Шиш тавук (шашлык из курицы)]] ([[w:Шиш-таук|w]]) * [[Рецепт:Тире кёфтеси|Тире кёфтеси]] | group8 = Десерты | list8 = * '''[[w:Турецкие_сладости|Турецкие десерты (главная статья)]]''' * [[Рецепт:Аджибадем курабьеси|Аджибадем курабьеси (миндальное печенье)]] * [[Рецепт:Ашуре|Ашуре]] * [[Рецепт:Айва татлысы|Айва татлысы]] * [[Рецепт:Балпармак татлысы|Балпармак татлысы]] * [[Рецепт:Пахлава|Баклава]] * [[Рецепт:Бюльбюльювасы|Бюльбюльювасы]] * [[Рецепт:Чурчхела|Джевизли суджук]] * [[Рецепт:Джевизли инджир татлысы|Джевизли куру инджир татлысы (инжир с орехами)]] * [[Рецепт:Джевизли ирмик татлысы|Джевизли ирмик татлысы (манная халва)]] * [[Рецепт:Джезерье|Джезерье]] * [[Рецепт:Дильбер дудагы|Дильбер дудагы]] * [[Рецепт:Дибиле|Дибиле]] * [[Рецепт:Дондурма|Дондурма]] * [[Рецепт:Экмек кадаифы|Экмек кадаифы]] ([[w:en:Ekmek_kaday%C4%B1f%C4%B1|en]]) * [[Рецепт:Инжирный рулет|Инжирный рулет]] * [[Рецепт:Фенике татлысы|Fenike татлысы]] * [[Рецепт:Гюллач|Гюллач]] * [[Рецепт:Халва|Хелва]] * [[Рецепт:Ханым гёбеги|Ханым гёбеги]] * [[Рецепт:Хошаф|Хошаф]] * [[Рецепт:Хошмерим|Хошмерим]] * [[Рецепт:Испанаклы кек|Испанаклы кек (шпинатный кекс)]] * [[Рецепт:Измир бомбасы|Измир бомбасы]] * [[Рецепт:Кабак татлысы|Кабак татлысы (тыквенный десерт)]] * [[Рецепт:Урмашица|Калбурабасты]] * [[Рецепт:Кавала курабьеси|Кавала курабьеси]] * [[Рецепт:Казандиби|Казандиби]] ([[w:Казандиби|w]]) * [[Рецепт:Кайсефе|Кайсефе]] * [[Рецепт:Кестане шекери|Кестане шекери (глазированные каштаны)]] * [[Рецепт:Кешкюль|Кешкюль]] * [[Рецепт:Кёйлю пастасы|Кёйлю пастасы]] * [[Рецепт:Курабье|Курабийе]] * [[Рецепт:Кнафе|Кюнефе]] * [[Рецепт:Лукумадес|Локма]] * [[Рецепт:Рахат-лукум|Локум]] * [[Рецепт:Маджун|Маджун]] * [[Рецепт:Месир маджуну|Месир маджуну]] * [[Рецепт:Мугла халкасы|Мугла халкасы]] * [[Рецепт:Мухаллеби|Мухаллеби]] * [[Рецепт:Мураббалы меджидийе|Мураббалы меджидийе]] * [[Рецепт:Невзине татлысы|Невзине татлысы]] * [[Рецепт:Орджик татлысы|Орджик татлысы]] * [[Рецепт:Перечура|Пепечура]] * [[Рецепт:Пестил|Пестил (пастила)]] * [[Рецепт:Баурсак|Пиши]] * [[Рецепт:Пишмание|Пишмание]] * [[Рецепт:Ревани|Ревани]] ([[w:Ревани|w]]) * [[Рецепт:Шамбали|Шамбали]] * [[Рецепт:Шекерпаре|Шекерпаре]] * [[Рецепт:Шиллык татлысы|Шиллык татлысы]] * [[Рецепт:Супангле|Супангле]] * [[Рецепт:Пудинг рисовый|Сютлач]] * [[Рецепт:Сютлю Нурийе|Сютлю Нурийе]] * [[Рецепт:Шёбийет|Шёбийет]] * [[Рецепт:Тахин-пекмез|Тахин-пекмез]] * [[Рецепт:Тахинли чорек|Тахинли чорек]] * [[Рецепт:Тавук-гёксу|Тавук-гёксу]] * [[Рецепт:Трес лечес|Трилече]] * [[Рецепт:Тулумба|Тулумба]] * [[Рецепт:Ун курабьеси|Un курабьеси]] * [[Рецепт:Везир пармагы|Везир пармагы]] * [[Рецепт:Зерде|Зерде]] | group9 = Ингредиенты | list9 = ;Овощи и бобовые : Бобы : Сладкий перец : Баклажаны : Лук-порей : Чечевица : Шпинат : Помидоры ;Пряности, специи и орехи : Миндаль : Чёрный перец : Каштаны : Корица : Тмин : Курага : Чеснок : Лесной орех : Мята перечная : Орехи : Репчатый лук : Орегано : Паприка : Петрушка : Фисташки : [[w:Алеппский перец|Перец алеппо (пул бибер) (w)]] : Красный перец : Тмин : [[w:en:Urfa_biber|Урфинский перец (исот бибер) (en)]] : Грецкий орех | group10 = Кухонная утварь | list10 = * [[w:Джезва|Турка / Джезве]] * [[w:en:Teapot#Turkish_caydanlik|Чайданлык (двухъярусный чайник) (en)]] * [[w:Казан|Казан]] * [[w:Мангал|Мангал]] * [[w:Скалка|Скалка / Оклава]] * [[w:Садж|Садж (сач)]] * [[w:Самовар|Семавер (самовар)]] * [[w:Тандыр|Тандыр]] | group11 = Сходные кухни | list11 = * [[w:Арабская кухня|Арабская]] * [[w:Балканская кухня|Балканская]] * [[w:Кавказская кухня|Кавказская]] * [[w:Среднеазиатская кухня|Среднеазиатская]] * [[w:Греческая кухня|Греческая]] * [[w:Иранская кухня|Иранская (персидская)]] * [[w:Курдская кухня|Курдская]] * [[w:Левантийская кухня|Левантийская]] * [[w:Средиземноморская кухня|Средиземноморская]] * [[w:Ближневосточная кухня|Ближневосточная]] * [[w:Монгольская кухня|Монгольская]] * [[w:Османская кухня|Османская (историческая)]] * [[w:Татарская кухня|Татарская]] | belowstyle = font-weight:bold; | below = [[Файл:Flag of Turkey.svg|16px|Портал]] '''[[w:Портал:Турция|Портал: Турция]]''' • [[Файл:Flag of Turkey.svg|16px|Категория]] '''[[:Категория:Турецкая кухня|Категория: Турецкая кухня]]''' }}<noinclude> [[Категория:Навигационные шаблоны]] [[Категория:Шаблоны:Кулинарная книга]] [[Категория:Турецкая кухня]] </noinclude> t4eudf3nqfebyn90zdsked10f2uh82k Полка:Коллекционирование 100 35355 270174 269628 2026-10-05T13:13:51Z Л.П. Джепко 642 оформление, дополнение 270174 wikitext text/x-wiki {{Дополнительная Полка | родитель = Досуг | описание = Материалы о [[:w:Коллекционирование|коллекционировании]] и объектах коллекционирования }} ghwzdl98la3say94ko2hebro0u7hmih Викиучебник:К удалению/Май 2026 4 35636 270179 268036 2026-10-05T15:23:19Z Л.П. Джепко 642 /* Против */ 270179 wikitext text/x-wiki == [[Биографический метод]] == Не учебник, пустые разделы, только определение, там и {{tl|Название учебника}} как-то не к месту. С ув., [[Участник:Taratarussia|СССР]] ([[Обсуждение участника:Taratarussia|обсуждение]]) 12:30, 20 мая 2026 (UTC) : Я вижу по истории, что это спасали материалы из Википедии. А что не так? Два раздела то есть все же. Можно удалить пустые, если глаз сильно мозолят. Но вроде каши то не просят. [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 19:11, 20 мая 2026 (UTC) :: @[[Участник:Leksey|Leksey]] Там вообще никакого учебного содержания, разделы пустые, подстраниц нет. [[Участник:Taratarussia|СССР]] ([[Обсуждение участника:Taratarussia|обсуждение]]) 12:49, 22 мая 2026 (UTC) ::: Там есть :::* В психологии :::* В социологии ::: [[Участник:Leksey|Leksey]] ([[Обсуждение участника:Leksey|обсуждение]]) 15:42, 22 мая 2026 (UTC) === За === === Против === * {{Оставить}}, два раздела всё-таки есть, пусть информация лежит. Может, кому-то пригодится, кого-то побудит дополнить. — [[Участник:Л.П. Джепко|Л.П. Джепко]] ([[Обсуждение участника:Л.П. Джепко|обсуждение]]) 15:23, 5 октября 2026 (UTC) === Итог === n2kg3sraxdhjqoczl2u31hbz98mot55 Шаблон:Иранская кухня 10 35888 270175 2026-10-05T13:56:10Z Heffalump1974 37550 Глобальное структурирование шаблона, ликвидация латинских дефектов, добавление типового низа и упорядочивание утвари совместно с ИИ-ассистентом Jolly Giants 270175 wikitext text/x-wiki {{Навигационная таблица | name = Иранская кухня | title = [[Иранская кухня]] | image = [[File:Tahdig.jpg|100px|Иранский тадиг]] | state = <includeonly>{{{state|autocollapse}}}</includeonly> | bodyclass = hlist | group1 = Ингредиенты | list1 = ;Овощи и бобовые * Бобы * Сладкий перец * Капуста * Нут * Коровий горох * Баклажаны * Чечевица * Гранат * Колотый горох (лаппе) * Шпинат * Помидоры * [[w:en:Tarkhineh|Тархине (en)]] ;Травы, специи и орехи * [[w:en:Advieh|Адвье (смесь специй) (en)]] * [[w:Барбарис|Барбарис (зерешк)]] * Чёрный перец * Булгур * Каштаны * Корица * Тмин * Чеснок * [[w:en:Heracleum_persicum|Голпар (персидский борщевик) (en)]] * Лесной орех * Лук-порей * Мята * Орехи * Репчатый лук * Орегано * Паприка * Петрушка * Фисташки * Красный перец * [[w:Шафран|Шафран]] * Грецкий орех | group2 = Выпечка и хлеб | list2 = * [[Рецепт:Хлеб Барбари|Барбари]] ([[w:Барбари (хлеб)|w]]) * [[Рецепт:Хлеб Душаби|Душаби]] * [[Рецепт:Хлеб Ганди|Ганди]] * [[Рецепт:Хлеб Гису|Гису]] * [[Рецепт:Коржики Хушке-ширин|Хушке-ширин]] * [[Рецепт:Хлеб Хушке-е-танур|Хушке-е-танур]] * [[Рецепт:Лаваш|Лаваш]] * [[Рецепт:Нан (хлеб)|Наан]] ([[w:Нан (хлеб)|w]]) * [[Рецепт:Хлеб Сангак|Сангак (хлеб на камнях)]] ([[w:en:Sangak|en]]) * [[Рецепт:Ширмол|Ширмал (молочный коржик)]] ([[w:en:Sheermal|en]]) * [[Рецепт:Хлеб Тафтан|Тафтан]] ([[w:en:Taftan_(bread)|en]]) | group3 = Салаты и мезе | list3 = * [[w:Мезе|Мазе (главная статья)]] * [[Рецепт:Салат Ширази|Салат Ширази]] ([[w:Салат Ширази|w]]) * [[Рецепт:Салат Шур|Салат Шур (соленья)]] * [[Рецепт:Йогурт|Йогурт]] | group4 = Сыры | list4 = * [[w:en:Lighvan_cheese|Сыр Лигван]] ([[w:en:Lighvan_cheese|en]]) * [[w:Фета|Фета]] * [[w:Беяз пейнир|Беяз пейнир]] | group5 = Супы и аши | list5 = * '''[[w:Аш (еда)|Аш (главная статья)]]''' * '''[[Рецепт:Чорба|Чорба]]''' * [[Рецепт:Абгушт|Абгушт (дизи)]] ([[w:Абгушт|w]]) * [[Рецепт:Аш-э реште|Аш-э реште]] * [[Рецепт:Аш-е анар|Аш-е анар (гранатовый суп)]] * [[Рецепт:Аш-е дуг|Аш-е дуг (йогуртовый суп)]] * [[Рецепт:Аш-е шалгям|Аш-е шалгям (суп с репой)]] * [[Рецепт:Аш-е шоле галамкар|Аш-е шоле галамкар]] * [[Рецепт:Бозбаш|Бозбаш]] ([[w:Бозбаш|w]]) * [[Рецепт:Халим|Халим]] ([[w:Халим_(блюдо)|w]]) * [[Рецепт:Хаш|Кале-паче (хаш)]] * [[Рецепт:Суп Сираби|Сираби (суп из требухи)]] | group6 = Мясо-гриль (Кебабы) | list6 = * [[Рецепт:Кебаб|Кебаб (главная статья)]] * [[Рецепт:Чело-кебаб|Чело-кебаб]] ([[w:Чело-кебаб|w]]) * [[Рецепт:Джудже-кебаб|Джудже кебаб]] ([[w:Джудже-кебаб|w]]) * [[Рецепт:Кебаб чендже|Кебаб чендже]] * [[Рецепт:Кебаб бахтиари|Кебаб бахтиари]] * [[Рецепт:Кебаб барг|Кебаб барг]] * [[Рецепт:Кебаб кубиде|Кебаб кубиде]] ([[w:en:Kabab_koobideh|en]]) * [[Рецепт:Кебаб махи|Кебаб махи (рыба на гриле)]] * [[Рецепт:Кебаб торш|Кебаб торш (кислый кебаб)]] * [[Рецепт:Гераши кебаб|Гераши кебаб]] * [[Рецепт:Шашлык|Шашлык (ребрышки ягнёнка)]] ([[w:Шашлык|w]]) * [[Рецепт:Кюфта|Кёфте (кюфта)]] | group7 = Пловы (Polo) | list7 = * [[Рецепт:Плов|Пилав (плов)]] * [[Рецепт:Албалу поло|Албалу поло (вишнёвый плов)]] ([[w:Албалу_поло|w]]) * [[Рецепт:Багали поло|Багали поло]] ([[w:en:Baghali_polo|en]]) * [[Рецепт:Гейме несар|Гейме несар]] ([[w:en:Gheymeh_Nesar|en]]) * [[Рецепт:Калам поло|Калам поло (капустный плов)]] * [[Рецепт:Рис Кате|Кате]] ([[w:Катэ|w]]) * [[Рецепт:Лубия polo|Лубия поло (плов со стручковой фасолью)]] * [[Рецепт:Морасса поло|Морасса поло (ювелирный плов)]] ([[w:Морасса_поло|w]]) * [[Рецепт:Патале поло|Патале поло]] * [[Рецепт:Сабзи поло|Сабзи поло (плов с зеленью)]] ([[w:Сабзи_поло|w]]) * [[Рецепт:Ширин поло|Ширин polo (сладкий плов)]] ([[w:Ширин_поло|w]]) * [[Рецепт:Исфаханский берьяни|Исфаханский берьяни]] * [[Рецепт:Тадиг|Тадиг (хрустящая рисовая корочка)]] ([[w:Тадиг|w]]) * [[Рецепт:Тачин|Тачин (плов-запеканка)]] ([[w:Тахчин|w]]) * [[Рецепт:Зерешк поло|Зерешк поло (барбарисовый плов)]] ([[w:Зерешк_поло|w]]) | group8 = Хореши (Мясные соусы и рагу) | list8 = * [[Рецепт:Багала гатог|Багала гатог]] ([[w:en:Baghala_ghatogh|en]]) * [[Рецепт:Хореш бадемджан|Хореш-е бадемджан (с баклажанами)]] * [[Рецепт:Хореш бадемджан лапе|Хореш-е бадемджан лапе]] * [[Рецепт:Хореш бамие|Хореш-е бамие (с бамией)]] * [[Рецепт:Хореш бамие лапе|Хореш-е бамие лапе]] * [[Рецепт:Хореш бех|Хореш-е бех (с айвой)]] * [[Рецепт:Хореш алу есфенадж|Хореш-е алу есфенадж (со сливой и шпинатом)]] * [[Рецепт:Фесенджан|Хореш-е фесенджан]] * [[Рецепт:Хореш хавидж|Хореш-е хавидж (морковный)]] * [[Рецепт:Хореш каду|Хореш-е kadu (с кабачками)]] * [[Рецепт:Хореш гардж|Хореш-е гардж (грибной)]] * [[Рецепт:Галие махи|Галие-махи (рыбное рагу)]] * [[Рецепт:Хореш гейме|Хореш-е гейме]] * [[Рецепт:Хореш горме сабзи|Хореш-е горме сабзи]] * [[Рецепт:Хореш кангар|Хореш-е кангар (с артишоком)]] * [[Рецепт:Хореш карафс|Хореш-е карафс (с сельдереем)]] * [[Рецепт:Хореш лубия-сабз|Хореш-е лубия-сабз (со стручковой фасолью)]] * [[Рецепт:Хореш ривас|Хореш-е ривас (с ревенем)]] | group9 = Другие блюда | list9 = * [[Рецепт:Кюкю|Куку (омлет с зеленью)]] * [[Рецепт:Наргеси|Наргеси (шпинатная яичница)]] * [[Рецепт:Кюфта|Тебризская кюфта]] * [[Рецепт:Ашпал|Ашпал (икра каспийской рыбы)]] * [[Рецепт:Омлет по-ирански|Омлет]] * [[Рецепт:Сосис Бандари|Сосис Бандари (острые сосиски)]] * [[Рецепт:Кесме|Реште (домашняя лапша)]] * [[Рецепт:Самса|Самоса (самса)]] * [[Рецепт:Тархоня|Тархана]] * [[Рецепт:Тас-кебаб|Тас-кебаб]] * [[Рецепт:Яхния|Яхни]] | group10 = Соусы и холодные закуски | list10 = * [[Рецепт:Соус Делал|Делал (зелёный соус)]] * [[Рецепт:Соус Махьява|Махьява (рыбный соус)]] ([[w:en:Mahyawa|en]]) * [[Рецепт:Зейтун парварде|Зейтун парварде (маринованные оливки)]] ([[w:en:Zeytoon_Parvardeh|en]]) * [[Рецепт:Долма|Долма]] * [[w:Лабне|Лабне (w)]] * [[Рецепт:Кашк-е бадемджан|Кашк-е бадемджан]] ([[w:Кашк-е бадемджан|w]]) * [[Рецепт:Маст-о-хиар|Маст-о-хиар (йогурт с огурцами)]] * [[Рецепт:Мирза Гасеми|Мирза Гасеми]] ([[w:Мирза_Гасеми|w]]) * [[Рецепт:Торши|Торши (овощные соленья)]] ([[w:Торши|w]]) | group11 = Сладости и десерты | list11 = * [[Рецепт:Пахлава|Баклава (азербайджанская пахлава)]] * [[Рецепт:Дошаб|Бамие]] * [[w:Бастани|Бастани (шафрановое мороженое)]] * [[Рецепт:Беренджи|Беренджи (рисовое печенье)]] * [[Рецепт:Печенье|Печенье]] * [[w:Фалуде|Фалуде]] * [[w:Газ (сладость)|Газ (нуга)]] * [[Рецепт:Гош-е фил|Гош-е фил (ушки слона)]] * [[Рецепт:Халва|Хелва (халва)]] * [[Рецепт:Саршир|Саршир (сливки)]] * [[Рецепт:Кулуче|Кулуче (персидский пряник)]] * [[Рецепт:Коломпе|Коломпе (финиковое печенье)]] * [[Рецепт:Лавашак|Лавашак (фруктовая пастила)]] * [[Рецепт:Слатко|Мурабба (варенье)]] * [[Рецепт:Ногль|Ногль (драже)]] * [[Рецепт:Ноходчи|Ноходчи (нутовое печенье)]] * [[Рецепт:Масгати|Масгати (шафрановый мармелад)]] * [[Рецепт:Пашмак|Пашмак (сахарные нити)]] * [[Рецепт:Пулаки|Пулаки (леденцы)]] * [[Рецепт:Готтаб|Готтаб]] * [[Рецепт:Курабье|Курабия]] * [[w:Сумаляк|Саману (паста из пророщенной пшеницы)]] * [[Рецепт:Шекербура|Шекарбура]] * [[w:Шолезард|Шолезард (шафрановый рисовый пудинг)]] * [[Рецепт:Сохан|Сохан (шафрановая помадка)]] * [[Рецепт:Сохан асали|Сохан асали (медовые грильяжи)]] * [[Рецепт:Шербет (напиток)|Шербет (сорбет)]] * [[Рецепт:Тебризий лаузи|Тебризский лаузи]] * [[Рецепт:Лукумадес|Зульбия]] * [[Рецепт:Кекс Язди|Язди кекс]] | group12 = Напитки | list12 = * [[w:en:Aragh_sagi|Арак саги]] ([[w:en:Aragh_sagi|en]]) * [[w:Виноделие в Иране|Вино (мей)]] * [[Рецепт:Напиток Дуг|Дуг (кисломолочный напиток)]] ([[w:Тан_(напиток)|w]]) * [[Рецепт:Шербет|Шарбат (шербет)]] * [[w:Кофе по-турецки|Кофе по-турецки]] * [[w:Кефир|Кефир]] * [[Рецепт:Кофе по-яздийски|Кофе по-яздийски]] | group13 = Кухонная утварь | list13 = * [[w:Джезва|Турка / Джезве]] * [[w:Мангал|Мангал]] * [[w:Скалка|Скалка / Оклава]] * [[w:Садж|Таве / Садж (сач)]] * [[w:Самовар|Самовар]] * [[w:Тандыр|Танур (тандыр)]] | belowstyle = font-weight:bold; | below = [[Файл:Flag of Iran.svg|16px|Портал]] '''[[w:Портал:Иран|Портал: Иран]]''' • [[Файл:Flag of Iran.svg|16px|Категория]] '''[[:Категория:Иранская кухня|Категория: Иранская кухня]]''' }}<noinclude> [[Категория:Navigational templates]] [[Категория:Шаблоны:Кулинарная книга]] [[Категория:Иранская кухня]] </noinclude> 6hmtkgd4yo53twjpfue5vc0ev9dgk5f Международный каталог франкотипов/Монако 0 35889 270180 2026-10-05T19:35:43Z Л.П. Джепко 642 переведено из en.wikibooks 270180 wikitext text/x-wiki = Монако = {{font/top|size=3}} * Страна является независимым княжеством с особыми отношениями с Францией. Все франкировальные машины, введенные в эксплуатацию до сих пор, — французского производства. Первая франкировальная машина была введена в эксплуатацию в 1928 г. На всех франкотипах надпись «MONACO» (Монако). * Франкотипы сгруппированы следующим образом: :: A — С надписью «PRINCIPAUTE DE MONACO» (Княжество Монако) :: B — С надписью «€ MONACO» (€ Монако) :: PO — Специальные франкотипы, печатавшиеся только франкировальными машинами в почтовых отделениях и впечатывающими устройствами :: PD — Специальные франкотипы, использовавшиеся для взимания Доплаты {{font/end}} <br> ---- ---- == <span style="color: blue;">ГРУППА «A»: С надписью «PRINCIPAUTE DE MONACO»</span> == <br> [[Файл:Monaco stamp type A1.jpg|left|500px]] '''A1. Havas «Tiranty» ''' (ФН-1), 1928 г. : Небольшой вертикальный прямоугольник с имитирующей зубцовку рамкой с разрывами по бокам. : Надпись «POSTES» (Почта) полукругом внизу над №М. :::::::::::::::::::::::: '''A'''. №М с префиксом «A». {{space|4}} [''Редкий''] :::::::::::::::::::::::: '''B'''. №М с префиксом «WA». {{space|4}} [''Раритетный''] : КШ: ПС : Номиналы: {{space|4}} 50c, 65c, 90c, 1F, 1F50, 1F75, 2F25, 2F50, 4F [[Файл:Monaco stamp type A2.jpg|left|530px]] '''A2. Havas «Grandjean» ''' (МН-6). {{space|4}} [''Редкий''] : Как тип «A1», но №М с префиксом «B». : КШ: ПС : Номиналы: {{space|4}} 40c, 50c, 70c, 80c, 1F50, 2F , 2Foo , 3F , 3Foo , 5F, 6F, 9F , 10F, 12F, 14F, 15F, 18F, 20F, 25F, 30F [[Файл:Monaco stamp type A3.jpg|left|530px]] '''A3. Havas «C»''' (МН). : Как типы «A1» и «A2», но №М с префиксом «C», «CG» или «CW». : Франкотип (включая строку с названием населенного пункта и ЗПО) имеет ширину 100 мм. : КШ: ПС :::::::::::::::::::::::::: '''A'''. №М с префиксом «C» :::::::::::::::::::::::::: '''A'''. №М с префиксом «CG» :::::::::::::::::::::::::: '''B'''. №М с префиксом «CW» : Ц/Н: {{space|4}} ★00 {{space|4}} ★00F {{space|4}} ★00oo {{space|4}} ★000F {{space|4}} ★000 :::::::::::::::::::::::::: '''a'''. С 4-значным счетчиком оттисков вверху над строкой с названием населенного пункта [[Файл:Monaco stamp type A3point1.jpg|left|400px]] '''A3.1. Havas «C»''' (модернизированная) и ''' «G» ''' (МН). : Аналогичен типу «A3», но франкотип (включая строку с названием населенного пункта и ЗПО) имеет ширину 75 мм. :::::::::::::::::::: '''A'''. №М с префиксом «CG» :::::::::::::::::::: '''B'''. №М с префиксом «G» : КШ: ПС : Ц/Н: {{space|4}} ★00 {{space|4}} ★00F {{space|4}} ★00oo {{space|4}} ★000F {{space|4}} ★000 [[Файл:Monaco stamp type A4.jpg|left|455px]] '''A4. Havas «K» ''' (МН). : №М с префиксом «K». :::::::::::::::::::::: '''A'''. Надпись «POSTES» :::::::::::::::::::::: '''B'''. Надпись «POSTES» прямая {{space|4}} [''Редкий''] : КШ: ПС столбиком слева : Ц/Н: {{space|4}} ★00'''.''' {{space|4}} ★0.oo [[Файл:Monaco stamp type A5A.jpg|left|510px]] '''A5. Havas «M» ''' (МН). : ЗПО больше в ширину, чем в высоту. ::::::::::::::::::::::::: '''A'''. №М с префиксом «М» {{space|4}} ::::::::::::::::::::::::: '''B'''. №М с префиксом «MG» {{space|4}} ::::::::::::::::::::::::: '''C'''. №М с префиксом «MW» {{space|4}} [''Редкий''] : КШ: ПС ::::::::::::::::::::::::: '''a'''. Строка КШ не внизу, а вверху [[Файл:Monaco stamp type A6.jpg|left|180px]] '''A6. Secap «N» ''' (МН). {{space|4}} : Надпись «POSTES» лишь чуть-чуть изогнута. : №М с префиксом «N». : С инициалами пользователя слева от ЗПО или без них. : КШ: Обычно одна прямая строка текста столбиком под ЗПО и с датой под ней. Вторая строка текста может использоваться для обозначения региона, которым для ЗПО Монако является «P<sup><u>TE</u></sup> DE MONACO» (Княжество Монако) : Ц/Н: {{space|4}} ★00 {{space|4}} ★00F {{space|4}} ★000 {{space|4}} ★000F {{space|4}} 0000 [[Файл:Monaco stamp type A7A.jpg|left|300px]] '''A7. Secap «NA», «ND» и «NE» ''' (МН). : Надпись «POSTES» лишь чуть-чуть изогнута. ::::::::::::::: '''A'''. №М с префиксом «NA» ::::::::::::::: '''B'''. №М с префиксом «ND» ::::::::::::::: '''C'''. №М с префиксом «NE» ::::::::::::::: '''D'''. №М с префиксом «NK» ::::::::::::::: '''E'''. №М с префиксом «NAW» {{space|4}} [''Малораспространенный''] ::::::::::::::: '''F'''. №М с префиксом «NEW» {{space|4}} [''Редкий''] :::::::::::::: КШ: ОК :::::::::::::: Ц/Н: {{space|4}} ★00 {{space|4}} ★000 {{space|4}} 0 0 0 {{space|4}} 0000 {{space|4}} 00''','''00 [[Файл:Monaco stamp type A8.jpg|left|540px]] '''A8. Satas «C» ''' (МН). {{Space|4}} [''Малораспространенный''] : Надпись «POSTES» — полукругом. : №М с префиксом «SC». : КШ: ПС : Ц/Н: {{space|4}} ★000 {{space|4}} ★000F [[Файл:Monaco stamp type A9.jpg|left|540px]] '''A9. Satas «D» ''' (МН). {{space|4}} : Надпись «POSTES» — полукругом. : №М с префиксом «SD». : КШ: ПС : Ц/Н: {{space|4}} ★000F {{space|4}} 0000 [[Файл:Monaco stamp type A10.jpg|left|330px]] '''A10. Satas «D» ''' (МН). {{space|4}} : Как тип «A9», но КШ ОК с высокими цифрами даты. : Ц/Н: {{space|4}} ★000F {{space|4}} 0000 [[Файл:Monaco stamp type A11.jpg|left|330px]] '''A11. Satas «R» ''' (МН). : Надпись «POSTES» — полукругом. : КШ: ОК ::::::::::::::::: '''A'''. №М с префиксом «SR» или «S.R.» ::::::::::::::::: '''B'''. №М с префиксом «SRW» {{space|4}} [''Редкий''] : Ц/Н: {{space|4}} ★000 [[Файл:Monaco stamp type A12.jpg|left|330px]] '''A12. Satas «J» ''' (МН). : Цифры даты — высокие. : Надпись «POSTES» — полукругом. : №М с префиксом «SJ» или «S.J». : КШ: ОК : Ц/Н: {{space|4}} ★00 {{space|4}} ★000 [[Файл:Monaco stamp type A13.jpg|left|385px]] '''A13. Satas «F» ''' (МН). : Надпись «POSTES» — полукругом. : Цифры даты — высокие. : №М с префиксом «SF». : КШ: ОК : Ц/Н: {{space|4}} ★000F {{space|4}} 0000 [[Файл:Monaco stamp type A14.jpg|left|330px]] '''A14. Satas «L» ''' (МН). : Надпись «POSTES» — полукругом. : Цифры даты очень короткие. ::::::::::::::::: '''A'''. №М с префиксом «SL» ::::::::::::::::: '''B'''. №М с префиксом «SL W» {{space|4}} [''Редкий''] : КШ: ПС : Ц/Н: {{space|4}} ★ 0 0 0 <br> [[Файл:Monaco stamp type A15.jpg|left|330px]] [[Файл:Monaco Type A15B.jpg|304px|right]] '''A15. Havas «P» ''' (МН). : Надпись «POSTES» (Почта) прямая или полукругом. : №М с префиксом «P». ::::::::::::::::: '''A'''. №М с префиксом «P» ::::::::::::::::: '''B'''. №М с префиксом «PW» {{space|4}} [''Редкий''] : КШ: ОК ::::::::::::::: Ц/Н: {{space|4}} 000 {{space|4}} ★000 ::::::::::::::: Ц/Н: {{space|4}} 00 {{space|4}} [[Файл:Monaco stamp type A16.jpg|left|315px]] '''A16. Havas «T» ''' (МН). : Надпись «POSTES» — полукругом. : Цифры номинала относительно небольшие. : Цифры даты с точками после цифр дня и перед цифрами года. :::::::::::::::: '''A'''. №М с префиксом «T» :::::::::::::::: '''B'''. №М с префиксом «TW» {{space|4}} [''Малораспространенный''] ::::::::::::::: КШ: ОК ::::::::::::::: Ц/Н: {{space|4}} 000 {{space|4}} 0000 [[Файл:Monaco stamp type A17.jpg|left|330px]] <br> '''A17. Havas «R» ''' (МН). : Надпись «POSTES» — полукругом. : №М с префиксом «R» или «RC». : КШ: ОК : Ц/Н: {{space|4}} <span style="font-size: medium;">≋</span>000 {{space|4}} <span style="font-size: medium;">≋</span>0''','''00 [[Файл:Monaco stamp type A18.jpg|left|330px]] '''A18. SMH/Alcatel (Neopost) ''' (МН). : Надпись «POSTES» — полукругом. : Цифры номинала относительно небольшие. ::::::::::::::::: '''A'''. №М с префиксом «F» ::::::::::::::::: '''B'''. №М с префиксом «FW» {{space|4}} [''Малораспространенный''] :::::::::::::::: КШ: ОК :::::::::::::::: Ц/Н: {{space|4}} 0000 [[Файл:Monaco stamp type A19.jpg|left|330px]] '''A19. Secap''' (МН). : Надпись «POSTES» — чуть-чуть полукругом. : Цифры даты далеко отстоящие друг от друга. ::::::::::::::::: '''A'''. №М с префиксом «NC». Дата — с точками после цифр дня и месяца ::::::::::::::::: '''B'''. №М с префиксом «NL». Дата без точек ::::::::::::::::: '''C'''. №М с префиксом «NP». Дата без точек ::::::::::::::: КШ: ОК ::::::::::::::: Ц/Н: {{space|4}} ★000 (NC) {{space|4}} 00''','''00 (NL) {{space|4}} 0000 (NP) [[Файл:Monaco stamp type A20.jpg|left|330px]] '''A20. Satas ''' (МН). : Надпись «POSTES» небольшая, чуть-чуть изогнута. : Цифры даты далеко отстоящие друг от друга. ::::::::::::::::: '''A'''. №М с префиксом «SG». Дата — с точками после цифр дня и месяца ::::::::::::::::: '''B'''. №М с префиксом «SK». Дата без точек. Цифры номинала относительно небольшие ::::::::::::::::: '''C'''. №М с префиксом «SV». Дата — с точками после цифр дня и месяца ::::::::::::::: КШ: ОК ::::::::::::::: Ц/Н: {{space|4}} <span style="font-size: medium;">≋</span>000 (SG) {{space|4}} 0000 (SK) {{space|4}} <span style="font-size: medium;">≋</span>0''','''00 (SV) <br><br> [[Файл:Monaco stamp type A21.jpg|left|350px]] '''A21. Neopost ''' (МН). : ЗПО больше в ширину, чем в высоту. : Цифры даты далеко отстоящие друг от друга. : №М с префиксом «RC». : КШ: ОК : Ц/Н: {{space|4}} <span style="font-size: large;">≋</span>00'''.'''00 <br><br> ---- == <span style="color: blue;">ГРУППА «B»: Со знаком Евро на ЗПО, с надписью «€ MONACO» или «€ PRINCIPAUTE DE MONACO»</span> == <br> {| |- |style="width:400px; vertical-align: top;"| [[Файл:Monaco stamp type B1.jpg|left|330px]] |style="vertical-align: top;"| '''B1. Satas''' (МН). : Надпись «LA POSTE» (Почта) прямая внизу над №М. : Цифры даты — далеко отстоящие друг от друга с точками после цифр дня и месяца. : №М с префиксом «SE», «SG», «HR» или «SV». : КШ: ОК : Ц/Н: {{space|4}} ≋000 (SG) {{space|4}} ≋0,00 (SE) |} <br> {| |- |style="width:400px; vertical-align: top;"| [[Файл:Monaco stamp type B2.jpg|left|330px]] [[Файл:Monaco Type B2B.jpg|304px|left]] |style="vertical-align: top;"| '''B2. Secap ''' (МН). : Как тип «B1», но дата без точек. :: '''A'''. №М с префиксом «NP» и с разделительным знаком в виде запятой в номинале. :: '''B'''. №М с префиксом «NS» и без запятой в номинале. : КШ: ОК : Ц/Н: {{space|4}} 00,00 {{space|4}} 0000 |} <br> {| |- |style="width:400px; vertical-align: top;"| [[Файл:Monaco stamp type B3.jpg|left|330px]] |style="vertical-align: top;"| '''B3. Neopost''' (МН). : Почти идентичен по внешнему виду типу «B1», но у №М префикс «R», «RC» или «HR». : КШ: ОК : Ц/Н: {{space|4}} ≋0,00 |} <br> {| |- |style="width:400px; vertical-align: top;"| [[Файл:Monaco stamp type B4.jpg|left|335px]] |style="vertical-align: top;"| '''B4. Neopost ''' (МН). : Цифры даты с узким зазором между ними с точками, выровненными по центру после цифр дня и месяца. : №М с префиксом «F». : КШ: ОК : Ц/Н: {{space|4}} 0000 |} <br> {| |- |style="width:400px; vertical-align: top;"| [[Файл:Monaco stamp type B5.jpg|left|345px]] |style="vertical-align: top;"| '''B5. Secap ''' (МН). : Широкий ЗПО, почти квадратный. : Цифры даты — с точками после цифр дня и месяца. : №М с префиксом «NX». : КШ: ОК : Ц/Н: {{space|4}} 000,00 |} <br> {| |- |style="width:400px; vertical-align: top;"| [[Файл:Monaco stamp type B6.jpg|left|340px]] |style="vertical-align: top;"| '''B6. Neopost «Electronic» ''' (МН). : Широкий, квадратный ЗПО как тип «B5». : Цифры даты с тире между цифрами дня, месяца и года. : №М с префиксом «HC». : КШ: ОК : Ц/Н: {{space|4}} ≋≋0,00 |} <br> {| |- |style="width:400px; vertical-align: top;"| [[Файл:Monaco stamp type B7.jpg|left|330px]] |style="vertical-align: top;"| '''B7. Secap''' (МН). : Как тип «B2», но с надписью «PRINCIPAUTE / DE MONACO». : №М с префиксом «NP». : КШ: ОК : Ц/Н: {{space|4}} 0000 |} <br> {| |- |style="width:400px; vertical-align: top;"| [[Файл:Monaco stamp type B8.jpg|left|355px]] |style="vertical-align: top;"| '''B8. Pitney Bowes «Paragon»''' (МН). : ЗПО аналогичен по размеру и форме типу «B5», но цифры номинала меньшего размера и далеко отстоящие друг от друга. : №М с префиксом «BP». : КШ: ОК : Ц/Н: {{space|4}} ≋00,00 |} <br> {| |- |style="width:400px; vertical-align: top;"| [[Файл:Monaco stamp type B8point1.jpg|left|375px]] |style="vertical-align: top;"| '''B8.1. Pitney Bowes «A/B900»''' (МН). : Как тип «B8», но ЗПО более широкий и цифры номинала более крупные. : №М с префиксом «BE». : КШ: ОК : Ц/Н: {{space|4}} ≋00,00 |} <br> {| |- |style="width:400px; vertical-align: top;"| [[Файл:Monaco stamp type B9.jpg|left|305px]] |style="vertical-align: top;"| '''B9. Pitney Bowes «PostPerfect» '''(цифровая). : ЗПО чуть больше в ширину, чем в высоту. : Узкий зазор между КШ и ЗПО. : №М с префиксом «BN». : КШ: ОК : Ц/Н: {{space|4}} ≋00,00 :: '''a'''. С префиксом перед №М «OBN» |} <br> {| |- |style="width:400px; vertical-align: top;"| [[Файл:Monaco stamp type B10.jpg|left|315px]] |style="vertical-align: top;"| '''B10. Satas''' (цифровая). : ЗПО вертикальный как у типов «B1» — «B4», но календарный штемпель прямоугольный, как у типа «B7». : №М с префиксом «SB», «SBA» или «SC» : Цифры номинала жирные и узкие. : КШ: прямоугольный : Ц/Н: {{space|4}} 000,00 |} <br> {| |- |style="width:400px; vertical-align: top;"| [[Файл:Monaco stamp type B11A.jpg|left|385px]] [[Файл:Monaco stamp type B11B.jpg|left|365px]] |style="vertical-align: top;"| '''B11. Neopost''' (цифровая). : ЗПО больше в ширину, чем в высоту как у типов «B5» и «B6», но с надписью «LA POSTE» вверху под названием страны. : №М с префиксом «HD», «HH», «HK» или «HY». : №М с префиксом «HU» (модель IS440/480). : '''A'''. Надпись «€ MONACO» широкая : '''B'''. Надпись «€ MONACO» узкая. ЗПО также чуть-чуть более узкий : КШ: прямоугольный : Ц/Н: {{space|4}} 000,00 |} <br> {| |- |style="width:400px; vertical-align: top;"| [[Файл:Monaco stamp type B12.jpg|left|340px]] |style="vertical-align: top;"| '''B12. Satas''' (цифровая). : ЗПО почти идентичен по внешнему виду типу «B11», но №М с префиксом «SM», «SP», «SX» или «SZ». : КШ: прямоугольный : Ц/Н: {{space|4}} 000,00 |} <br> {| |- |style="width:400px; vertical-align: top;"| [[Файл:Monaco stamp type B13.jpeg|left|325px]] |style="vertical-align: top;"| '''B13. Pitney Bowes/SECAP''', различные модели (цифровая). : Вертикальный ЗПО как у типа «B10», за исключением того, что надпись «LA POSTE» расположена над цифрами номинала. : Префикс номера франкировальной машины «VB». : КШ: ПС в прямоугольнике : Ц/Н: {{space|4}} 000,00 |} <br> {| |- |style="width:400px; vertical-align: top;"| [[Файл:Monaco stamp type B14.jpg|left|345px]] |style="vertical-align: top;"| '''B14. Pitney Bowes «DM Infinity»''' (цифровая). : ЗПО чуть больше в ширину, чем в высоту как у типа «B12», но надпись «LA POSTE» расположена не над цифрами номинала, а под ними. : Цифры номинала довольно толстые. : M# известны с префиксами «MD» и «MM». : КШ: ПС в прямоугольнике : Ц/Н: {{space|4}} 000,00 |} <br> {| |- |style="width:400px; vertical-align: top;"| [[Файл:Monaco Type B15.jpg|297px|left]] |style="vertical-align: top;"| : '''B15. Neopost «IS5000» / «IS6000»''' (цифровая). : Аналогичен типу «B11», но c надписью «LA POSTE» под номиналом. : №М с префиксом «HZ». : КШ: прямоугольный : Ц/Н: {{space|4}} 000,00 |} <br> ---- == <span style="color: blue;">ГРУППА «C»: С надписью «MONTE-CARLO» вместо названия страны</span> == <br> [[Файл:Monaco stamp type C1.jpeg|left|500px]] '''C1. Satas''' (МН), 1958 г. {{space|4}} [''Крайне раритетный''] : Как тип «A5», но с надписью «MONTE-CARLO» вверху ЗПО вместо названия страны. : Только франкировальная машина «M 1691». : Известен один экземпляр, датированный 12 февраля 1958 г. У этой же франкировальной машины, датированной сентябрем 1958 г., надпись «PRINCIPAUTE DE MONACO» вверху (тип «A5»). : КШ: ПС : Ц/Н: {{space|4}} ★000<sup>F</sup> ---- == <span style="color: blue;">ГРУППА «PO»: Специальные франкотипы, печатавшиеся только франкировальными машинами в почтовых отделениях и впечатывающими устройствами</span> == <br> [[Файл:image needed.jpg|left|170px]] ::::::::::::::::::: '''PO1. Secap «Junior» ''' (МН). ::::::::::::::::::: Очень похож на тип «A19B», но №М с префиксом «N1». ::::::::::::::::::: КШ: ОК ::::::::::::::::::: Ц/Н: {{space|4}} 00''','''00 ---- {{font/top|color=green}} Известны типы «PO2» и выше, напечатанные на самоклеящихся этикетках со следующими рисунками фоновой печати: : '''A'''. Окно слева с птичьей рамкой, хвост кометы справа (голубой) : '''B'''. Птицы в полете в полнолуние (голубой) : '''C'''. Замок Монте-Карло (розовый и серый) На всех франкотипах на иллюстрациях ниже, изображена фоновая печать «С». {{font/end}} ---- <br> [[Файл:Monaco stamp type PO2.jpg|left|400px]] ::::::::::::::::::: '''PO2. SERCEM''' (цифровая). ::::::::::::::::::: Текст впечатывался цифровым способом в черном цвете на предварительно напечатанную самоклеящуюся этикетку с рисунком розового и серого цвета, представляющим собой замок слева и ромбы справа. ::::::::::::::::::: ЗПО аналогичен по рисунку предыдущим типам. ::::::::::::::::::: КШ: ПС столбиком слева в прямоугольной рамке, незамкнутой по бокам. ::::::::::::::::::: Дата, час и цифры номинала высокие (~3 мм). ::::::::::::::::::: №М с префиксом «GO2 PC» или «GO3 PC». ::::::::::::::::::: Ц/Н: {{space|4}} 0000''','''00 [[Файл:Monaco stamp type PO3.jpg|left|400px]] ::::::::::::::::::: '''PO3. Olivetti «PR50» ''' (цифровая). ::::::::::::::::::: Аналогичен типу «PO2», но у ЗПО и КШ нет рамок. ::::::::::::::::::: Дата и цифры номинала довольно жирные и несколько угловатые, наиболее заметно у «6» и «9», у которых прямые выступающие части. «1» — с горизонтальной черточкой внизу. ::::::::::::::::::: Дата, час и цифры номинала короткие (~2 мм). ::::::::::::::::::: №М с префиксом «G04 PC». ::::::::::::::::::: Ц/Н: {{space|4}} 0000''','''00 [[Файл:Monaco stamp type PO4.jpg|left|400px]] [[Файл:Monaco stamp type PO4C.jpg|left|400px]] ::::::::::::::::::: '''PO4. Olivetti «PR2» ''' (цифровая). ::::::::::::::::::: Аналогичен типу «PO3», но цифры номинала довольно жирные, подобно типу «PO-D1», при этом они чуть-чуть более закругленные. Это наиболее заметно у цифр «6» и «9», у которых выступающие части полукругом. У «1» нет горизонтальной черточки внизу. ::::::::::::::::::: №М с префиксом «G03 PC» или «GO6 PC». :::::::::::::::::::: '''A'''. Франки (FRF) над евро (EUR) :::::::::::::::::::: '''B'''. Евро (EUR) над франками (FRF) :::::::::::::::::::: '''C'''. Только евро (EUR) ::::::::::::::::::: Ц/Н: {{space|4}} 0''','''00 <br><br><br><br> [[Файл:Monaco stamp type PO5.jpg|left|405px]] ::::::::::::::::::: '''PO5. Olivetti «PR50» ''' (цифровая). ::::::::::::::::::: Очень похож на тип «PO4B», но дата и цифры номинала подобны дате и цифрам номинала у типа «PO3», то есть несколько угловатые, наиболее заметно у цифр «6» и «9», у которых прямые выступающие части, и с «1» с горизонтальной черточкой внизу. ::::::::::::::::::: №М с префиксом «G08 PC». ::::::::::::::::::: Ц/Н: {{space|4}} 0''','''00 <br><br><br> [[Файл:Monaco Type PO6.jpg|371px|left]] ::::::::::::::::::: '''PO6.''' Неидентифицированная (цифровая). ::::::::::::::::::: Очень похож на тип «PO4C», но без названия Почтового отделения, со шрифтом с засечками, а также с указанием вида почтового отправления под цифрами номинала. ::::::::::::::::::: №М с префиксом «G06». ::::::::::::::::::: Ц/Н: {{space|4}} 0''','''00 :::::::::::::::::::: '''a'''. Вид почтового отправления: Lettre Suivre Inter <br><br><br> ---- == <span style="color: blue;">ГРУППА «PD»: Специальные франкотипы, использовавшиеся для взимания Доплаты</span> == <br> [[Файл:Monaco stamp type PD1.jpg|left|340px]] '''PD1. Frama ''' (цифровая). : Квадратный ЗПО шириной 23 мм с надписями «PRINCAPAUTE / DE MONACO» вверху, «POSTES» внизу. : Справа надпись «MONTE CARLO» (Монте-Карло) прямая вверху над датой и временем с крупной надписью «TIMBRE TAXE» (Доплатная марка) внизу. : Без номера франкировальной машины. : Ц/Н: {{space|4}} 00000 '''ПРИМЕЧАНИЕ''': См. тип «PD-A2» раздела [[Международный каталог франкотипов/Франция|Франция]] ----<div style="text-align: center;"><span style="font-size: medium;"><span style="color: green;">На главную страницу каталога</span> ⇒</span> <u>[[../]]</u></div> <div style="text-align: center;"><span style="font-size: medium;"><span style="color: green;">На начало</span> ⇒</span> <u>[http://ru.wikibooks.org/wiki/Международный_каталог_франкотипов/Монако Монако]</u></div> {{BookCat}} qes038l5xwf9g8fafg4ad6tynlo2k86 Фоторецептурный справочник/Kodak DK-60b 0 35890 270184 2026-10-05T20:55:17Z Def2010 48479 Стаб по Питарро 270184 wikitext text/x-wiki '''Kodak DK-60b''' — метол-гидрохиноновый проявитель с [[w:Метаборат натрия|кодалком]]. Предназначен для обработки аэрофотоплёнок{{sfn|Pittaro|1979|с=318}}. == Состав == * Вода (52 °C) — 750 мл; * [[w:Метол|Метол]] — 1,25 г; * [[w:Сульфит натрия|Сульфит натрия]] б/в — 25,0 г; * [[w:Гидрохинон|Гидрохинон]] — 1,25 г; * [[w:Метаборат натрия|Метаборат натрия]] — 10,0 г; * [[w:Сульфат натрия|Сульфат натрия]] б/в — 50,0 г; * [[w:Бензотриазол|Бензотриазол]] 0,2 % — 80,0 г; * [[w:Бромид калия|Бромид калия]] — 0,25 г; * Вода (холодная) — до 1 л. == Обработка == Для получения низкого контраста время проявления составляет 6 минут, для среднего контраста — 13 минут, для высокого контраста — 20 минут при температуре 20 °C{{sfn|Pittaro|1979|с=318}}. == Замечания == Если необходимо увеличить контраст сильнее — вместо DK-60b следует использовать проявитель [[Фоторецептурный справочник/Kodak D-19|Kodak D-19]], если снизить — проявлять в течение 15 минут при 20 °C в [[Фоторецептурный справочник/Kodak D-76|Kodak D-76]]{{sfn|Pittaro|1979|с=318}}. == Примечания == {{Примечания}} == Литература == * {{книга | автор = Pittaro E. M. | заглавие = The Сompact Photo-Lab-Index | ссылка = https://archive.org/details/aa143-PhotoLabIndexCompactEdition/page/n319/mode/2up | издание = 2nd Compact Edition | издательство = Morgan & Morgan | год = 1979 | место = N. Y.| ref = Pittaro}} [[Категория:Проявители|Kodak D-060b]] tlu7894cdlaks2jpzul2q9twvsa2cxn 270185 270184 2026-10-05T23:20:57Z Def2010 48479 уточнение 270185 wikitext text/x-wiki '''Kodak DK-60b''' — метол-гидрохиноновый проявитель с [[w:Метаборат натрия|кодалком]]. Предназначен для обработки аэрофотоплёнок{{sfn|Pittaro|1979|с=318}}. == Состав == * Вода (52 °C) — 750 мл; * [[w:Метол|Метол]] — 1,25 г; * [[w:Сульфит натрия|Сульфит натрия]] б/в — 25,0 г; * [[w:Гидрохинон|Гидрохинон]] — 1,25 г; * [[w:Метаборат натрия|Метаборат натрия]] — 10,0 г; * [[w:Сульфат натрия|Сульфат натрия]] б/в — 50,0 г; * [[w:Бензотриазол|Бензотриазол]] 0,2 % р-р — 80,0 г; * [[w:Бромид калия|Бромид калия]] — 0,25 г; * Вода (холодная) — до 1 л. == Обработка == Для получения низкого контраста время проявления составляет 6 минут, для среднего контраста — 13 минут, для высокого контраста — 20 минут при температуре 20 °C{{sfn|Pittaro|1979|с=318}}. == Замечания == Если необходимо увеличить контраст сильнее — вместо DK-60b следует использовать проявитель [[Фоторецептурный справочник/Kodak D-19|Kodak D-19]], если снизить — проявлять в течение 15 минут при 20 °C в [[Фоторецептурный справочник/Kodak D-76|Kodak D-76]]{{sfn|Pittaro|1979|с=318}}. == Примечания == {{Примечания}} == Литература == * {{книга | автор = Pittaro E. M. | заглавие = The Сompact Photo-Lab-Index | ссылка = https://archive.org/details/aa143-PhotoLabIndexCompactEdition/page/n319/mode/2up | издание = 2nd Compact Edition | издательство = Morgan & Morgan | год = 1979 | место = N. Y.| ref = Pittaro}} [[Категория:Проявители|Kodak D-060b]] 7yk8wbtmi2tpzcmz20b7lyxskbda8r9