(Продолжение. Начало в Dev-КВ №3'2012)
В этот раз я хотел начать прямо с главного - с уроков PHP. Но, не могу не затронуть и свою, так сказать, "наболевшую" профессиональную тематику. Причина моего очередного "лирического отступления" - в происходящих на рынке СМИ страны событиях.
Радио есть, а счастья - нет
Когда-то, ещё во времена СССР (году эдак в 1986-м), я мечтал стать журналистом. Точнее, не мечтал, а несбыточно грезил, поскольку поступить в то время на журфак было практически нереально. Я даже написал несколько заметок в "Знамёнку" (газета "Знамя Юности" была чрезвычайно популярной). Их, конечно, не опубликовали, а мне прислали вежливый ответ, в котором посоветовали лучше работать над текстами.
Но лет десять спустя моя мечта-таки сбылась. Я опубликовал несколько заметок в одной газете, потом пару статей в другой, затем поработал внештатником в третьей, а в четвёртую устроился уже в качестве корреспондента. Редактор попросил показать мои публикации, рассчитывая, видимо, увидеть несколько маленьких заметок в рамочке. А я вывалил на его стол объёмную пачку газет. Естественно, меня приняли на работу в небольшое ведомственное издание почти сразу. Годы, проведённые там, были нужны, как сейчас говорят, "для приобретения опыта работы в компании".
Шёл уже 1997 год, набирал популярность интернет, постоянный доступ в который стал очередным предметом моих мечтаний. Кто же знал, что интернет станет могильщиком печатных СМИ, то есть, фактически "зароет в землю" моих работодателей и сделает ненужным мой опыт?
Теперь у меня, как и у большинства граждан, есть безлимитный интернет. Но, из-за него моя профессия, о которой я когда-то мечтал, обесценилась. Газеты уже не нужны. Зачем, когда есть интернет, который обеспечивает оперативной информацией всех желающих? Как говаривал Илья Ильф, "радио есть, а счастья - нет...". Это как раз мой случай.
Неожиданное сокращение
Крупнейшие в стране государственные газеты сокращают. Об этом стало известно уже после первого моего материала, где я писал, что государственная журналистика становится лишней отраслью. Вместо нескольких изданий будет выходить всего одно.
Это, в общем, правильно. Государственных печатных СМИ у нас в стране пока слишком много, и штат их невероятно раздут. Это было оправдано в предыдущем десятилетии, когда они несли не только информационную, но и идеологическую нагрузку, обеспечивая граждан правильно обработанной информацией. Каждое печатное слово выверялось и готовилось к печати не только журналистами, но и множеством корректоров, стилистов, редакторов.
К сожалению, в эпоху, когда интернет-проекты могут гораздо оперативнее, чем газеты, освещать события, а контролировать их практически невозможно, поскольку сам доступ в Сеть давно стал чем-то обыденным, вроде проводной телефонной связи, большинство газет уже не нужны.
Серьёзную экономическую и прочую аналитику сейчас пишут на специализированных интернет-ресурсах, где она не подвержена столь жёсткой, как в газетах, цензуре, и где авторы не ограничены небольшой площадью печатных изданий.
Многим, даже очень опытным и классным журналистам, придётся искать новую работу. И далеко не всегда она будет адекватной по зарплате и остальным критериям. Ведь рабочих мест для пишущей братии в нашей стране не так уж много. А "тёплых" - и вовсе единицы.
Лекарство от безработицы
Одно время все печатные СМИ начали в обязательном порядке комплектоваться интернет-порталами. Инициативная правительственная группа, которая финансировала разработку и создание этих ресурсов, почему-то рассчитывала на то, что сайты обретут читателей и станут популярными. Но, к сожалению, надежды не оправдались. Интернет-СМИ - совершенно другой вид бизнеса, со своими правилами и методами работы, кондовым и неповоротливым госизданиям в нём нет места. Их таким путём не спасти.
Коллеги выходят из положения, как могут. К примеру, несколько журналистов организовали новое информационное агентство. В принципе, это одна из немногих возможностей попытаться вклиниться на рынок и заработать деньги (хотя, на мой взгляд, информагентств в стране достаточно).
К слову, самые талантливые белорусские журналисты прошлых лет, которых я когда-то знал и которыми восхищался, сегодня либо вообще не работают по профилю, либо давно уехали из страны. Причём, судьбы у всех абсолютно разные. Знакомый талантливый парень, которого, в своё время часто хвалили и отмечали за блестящие статьи, сейчас работает охранником на Украине.
Одна из блестящих белорусских девушек-телерепортёров получила пару лет назад звание "Золотое перо России" и трудится на канале ОРТ, освещая деятельность российского правительства, ещё одна моя знакомая - не работает вовсе. Есть те, кто связался с политикой, в той или иной форме. Некоторые даже получили от этого определённые дивиденды. Но, это уже, ИМХО, не журналистика, а просто один из вариантов торговли собой.
Работы для журналистов, повторюсь, сейчас совсем немного. Другое дело - программист. Крепкий средний специалист этого профиля "из коробки" имеет всё то, к чему простой журналист у нас в стране может безрезультатно идти всю жизнь.
Формы PHP на сайте
Динамический сайт невозможен без обратной связи. Для ввода постов, комментариев, регистрации, словом, для любого обмена данными с интернет-ресурсом нужны формы, чтобы водить туда текст (как минимум). Формы на PHP могут выглядеть примерно так.
<form action="comment.php" method="post"> <p>Имя: <br><input type="text" name="name" /></p> <p>Комментарий: <br><textarea name="comment" cols="60" rows="10"></textarea></p> <p><input type="submit" value="Отправить"/> <input type="reset" name="Reset" value="Очистить"></p> </form>
Здесь всё просто - главное, лишний раз самому ничего не усложнять. Конструкция action указывает на обработчик данных форм. У нас ими будет заниматься скрипт comment.php. Слово метод (method) означает метод передачи данных обработчику форм comment.php. Если форма содержит небольшой текст, допустим, логин, или ссылку, то оправдан метод get - отправка данных в адресной строке. Если много текста - то лучше подойдёт метод post, тогда данные будут отправлены в теле запроса, без ограничений по объёму. Далее идут обычные поля text и textarea (с указанием размеров текстового поля), а также кнопка "отправить".
И, как раз здесь начинается самое интересное. Можно отправлять не только текст, но и файлы; тогда тип нужно изменить на <INPUT type="file">. Можно устроить список радиокнопок, переключателей и т.д.
Далее необходим обработчик форм. В зависимости от того, какой метод мы используем, наши данные попадают в различные суперглобальные массивы PHP - $_POST или $_GET. А можно использовать для обоих случаев универсальную переменную $_REQUEST.
Можно написать простейший обработчик (и разместить его на странице, скажем, comment.php).
<?php echo 'Имя <p><b>'. $_POST['name'].'</b></p><br>'; $msg=nl2br($_POST['comment']); echo 'Комментарий <p><b>'.$msg.'</b></p>'; ?>
Здесь всё понятно. Данные взяты из суперглобального массива $_POST (о нём я вам ещё расскажу в следующих материалах) и через оператор вывода вброшены на страничку, вперемешку с HTML-тегами (они обеспечивают форматирование текста в браузере). Интересная функция nl2br помогает вывести текст, согласно переводам строк, сделанным пользователем в форме.
Можно, конечно, ограничиться таким примером. Но, тогда мы увидим введённые нами данные только один раз. Это можно сделать для того, чтобы увидеть, как всё работает. Но, для сайта такой код не годится. Мы запишем наши данные в файл. Причём, файл для этого создавать не придётся - его сделает за нас PHP.
Итак, наш вариант comment.php:
<?php /*Забираем данные из формы и заодно вырезаем теги функцией strip_tags. Экранируем возможный ввод кавычек функцией addslashes. Теперь в базе будет только текст.*/ $name= addslashes( strip_tags ($_POST['name'])); $comment= addslashes( strip_tags ($_POST['comment'])); //формируем строку для записи $bd_str="<br>$name<br>$comment<br><br>";
/*Проверяем, существует ли файл базы данных функцией is_file, если его нет, то создаём*/ $test = "bd.txt";
//Итак, если файла нет... if (!is_file($test)) { //Cоздаём $Saved_File = fopen($test, 'a+'); //записываем строку fputs ($Saved_File, $bd_str); //закрываем файл fclose ($Saved_File); /*Редирект на главную страницу (index.php), чтоб увидеть наш комментарий и не запутать пользователя*/ header('Location: index.php'); } //иначе (если файл есть) else { /*Открываем его, ставим указатель в конец файла (указатель - нечто вроде курсора, которым мы пользуемся, только предназначен он для программы и выставляется на последний байт уже введённой информации при помощи аргумента (a+)), записываем туда строку c комментарием и возвращаемся на index.php */ $Saved_File = fopen($test, 'a+'); fputs ($Saved_File, $bd_str); fclose ($Saved_File); header('Location: index.php'); } ?> /*Теперь делаем вывод данных в файле content.php. Добавляем туда табличку HTML, форму ввода данных, а выше размещаем наш скрипт, чтобы комментарий можно было увидеть сразу.*/ <table width=100% height=85% style="background-color:#ffffff"> <tr> <td> <?php /*Выводим файл при помощи уже известной нам конструкции include, если комментариев нет, приказываем вывести сообщение "Комментариев пока нет"*/ //Записываем в переменную $filename содержание базы данных $filename='bd.txt'; //Если она пуста или её нет, то... if (!is_file($filename)) { echo '<br>Комментариев пока нет<br>'; } //Иначе... else { include ("bd.txt"); } ?> </td> </tr> <tr> <td> //Дальше идут наши формы <form action="comment.php" method="post"> <p>Имя: <br><input type="text" name="name" /></p> <p>Комментарий: <br><textarea name="comment" cols="60" rows="10"></textarea></p> <p><input type="submit" value="Отправить"/><input type="reset" name="Reset" value="Очистить"></p> </form> </td> </tr> </table>
Всё, формы готовы. Если вы забросите их в корень веб-сервера вместе с файлами, которые мы сделали на прошлом уроке, то на сайте заработает комментирование.
Правда, внимательный читатель, который попробует повторить мои инструкции, естественно, задаст мне много вопросов. К примеру, его может смутить тот факт, что комментировать на сайте пока, собственно, нечего. Ну что ж, это дело времени - в ходе следующих уроков мы попробуем написать простенький редактор для ввода сообщений, разработаем авторизацию на сайте, обеспечим разделение прав администратора и пользователей.
Пока что в нашем скрипте много недоделок. Например, если пользователь не введёт комментарий и нажмет "отправить", в ленте отобразится пустое место. Если комментарий будет слишком длинным, он займёт всю страницу. Коммент может состоять из ругательств (так называемых "стоп-слов") и мусора, в виде точек, запятых и т.д. Все проблемы это мы попробуем устранить в дальнейшем.
(Продолжение следует...)
Эдуард ТРОШИН
![Версия для печати Версия для печати](https://www.kv.by/sites/all/modules/print/icons/print_icon.png)
Комментарии
Страницы
>Parse error: syntax error, unexpected T_STRING in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\index.php on line 3
Чего то у вас не так. у меня всё окей.![Surprised Surprised](/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif)
Да нет, это вы умничаете, а я просто вывёл ваш код в браузере:-)
На этот раз бальзам...Да, можно делать и приложения, даже под Win.
Страницы