Приветствую всех, кому еще не надоело мое брюзжание и тех, кто только собирается начать его читать! Начну с того, что дам ответ любознательному подписчику, чьего имени и почтового адреса я не знаю. Он/она попросил в каждом выпуске выкладывать какие-нибудь примеры кода на Java Script. К моему величайшему сожалению я совершенно не силен в этом языке, во-первых, по тому, что мне это пока не представлялось интересным, а интерес, вероятно, еще не возник по причине сравнительно небольшого опыта и возраста. Но это
натолкнуло меня на мысль о том, что пора бы нам немного попрактиковаться. Почему бы ни разобрать скрипт более близкой мне сферы? Итак, сегодня соберем по частям и заставим работать полезную для многих вещь - скрипт для публикации статей на сайте.
Какие должны быть требования для нашей нехитрой программы? Во-первых, должна быть форма для ввода текста статьи. Во-вторых, неплохо бы, чтобы в тексте можно было заменять HTML-символы на их эквиваленты, чтобы знаки <, >, "" и т.п. выглядели сами собой. Предлагаю идти по пути наименьшего сопротивления и записывать каждую статью в отдельный текстовый файл. Так мы упростим работу с выводом статей, но не сможем организовать, например сложную систему рейтинга, комментариев etc (то есть, конечно, сможем, но это будет
более громоздко и некрасиво, как если бы мы хранили все данные в базе данных (см. третий выпуск подшивки)). Итак, приступим
$dir = "stat";
mkdir($dir, 0755); //на всякий случай создаем новый каталог с правами доступа 775
//Прверяем нажата ли кнопка отправки
if (isset($_REQUEST['newarticl'])) {
if ($_REQUEST['statname'] == ""){
//вдруг забыли ввести название новой статьи :)
//также назовем и файл, в котором она будет хранитьчя
$mes = "Не введено название новой статьи";
}
else { //если название есть..
$ras = "txt"; //расширение будущего файла
$stat = "$dir/".$_REQUEST['statname'].".txt";
$f = fopen ($stat, "a+"); //открываем новый файл с нашим названием статьи
if (!$f) {$mes = "Ошибочка вышла";}
else {
flock ($f, 2); //блокировка на всякий случай
//проверяем нужно ли заменять спецсимволы
if ($_REQUEST['zamena'] == 1) {
$st = htmlspecialchars($_REQUEST['stattext']);
}
//если не нужно, так и сохраняем
else {
$st = $_REQUEST['stattext'];}
//а надо ли заменять перенос строки?
if (@$_REQUEST['perenos'] == 1) {
$st = str_replace("\n", "<br>\n", $st);
}
//обработанную по полной программе строку
//записываем в открытый ранее файл
fwrite ($f, $st);
fclose ($f);
$mes = "Статья создана";
chmod ($stat, 0755); //устанавливаем на новый файл права доступа
}
}
}
//сама форма отправки данных
//выводим ее в конце, чтобы в начале шла проверка
//а ни отправлены ли уже данные
echo '
<FORM ACTION="admin.php?act=public" METHOD=POST NAME="pub"><p>
Название новой статьи<br>(латинскими буквами без расширения) :<br>
<INPUT TYPE="text" NAME="statname" VALUE=""><br><br>
Текс :<br>
<TEXTAREA NAME="stattext" WRAP="virtual" COLS="80" ROWS="15">Вставьте текст статьи</TEXTAREA><br>
<INPUT TYPE="hidden" NAME="zamena" VALUE="0">
<INPUT TYPE="checkbox" NAME="zamena" VALUE="1">Заменить HTML-символы на их эквиваленты<br>
<INPUT TYPE="checkbox" NAME="perenos" VALUE="1">Заменить перенос строки на <br><br><br>
<INPUT TYPE="submit" NAME="newarticl" VALUE="Добавить"></p>
</FORM>';
echo '<p>'.@$mes.'</p>';//Выводим сообщения
?>
</div>
</body>
Правда придется еще выключить режим magic_quotes_gpc, т.к. при записи в файл, будут автоматически экранированы все ковычки, что нас совсем не устраивает.
Создайте в данной директории файл .htaccess и пропишите в нем строку
php_flag magic_quotes_gpc Off
По непонятной мне пока причине этот метод не на всех хостингах работает так корректно, как
на локальной машине. Возможно, придется проконсультироваться с администрацией хостинга. Если кто знает в чем дело, пожалуйста, поделитесь соображениями.
Не составит труда добавить систему авторизации и некоторые навороты вроде редактирования старых статей.
На сегодня все, скачивайте подшивку, пишите в обратную связь, жду все пожелания с нетерпением. Следующий выпуск, возможно, задержится на несколько дней, но мы наверстаем :)
Сделай свой сайт оригинальнее вместе с Еженедельником сайтостроителя!