Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Интернет технологии -> PHP -> Система новостей на PHP


Система новостей на PHP

Сегодня нашей целью будет создание простенькой системы новостей. Мы не будем использовать базу данных. Всю информацию мы будем хранить в текстовом файле. Также мы создадим отдельную HTML страничку с формой, в которую мы будем вводить новости и защитим эту страничку паролем.

Для начала давайте создадим простую HTML форму для ввода наших новостей. Она будет иметь 3 текстовых поля. Первое поле давайте назовём headline. Оно будет содержать название новости. Второе поле назовём text, и будем помещать туда текст самой новости. Третье поле будет называться password. Теперь давайте посмотрим как должен выглядеть код нашей формы:

<FORM ACTION="<?=$PHP_SELF?>" METHOD="POST" NAME="ad_news">
Заголовок:<BR>
<INPUT TYPE="text" SIZE="30" NAME="headline"><BR>
Текст новости:<BR>
<TEXTAREA NAME="text" COLS="40" ROWS="5"></TEXTAREA><BR><BR>
Пароль:<BR>
<INPUT TYPE="password" SIZE="30" NAME="password"><BR>
<INPUT TYPE="submit" NAME="submit" VALUE="Добавить!"> <BR>
</FORM>

Проверка полей формы

Хорошо, теперь у нас есть форма для ввода новостей. Теперь нам нужно поместить эти новости в текстовый файл. Прежде чем сделать это, давайте для сначала проверим была ли наша форма правильно заполнена. Первое что для этого нужно сделать это проверить была ли нажата кнопка "Добавить". Для этого воспользуемся массивом $HTTP_POST_VARS в который после нажатия кнопки "Добавить" автоматически будут помещены переменный из нашей формы.

<?PHP 
if($HTTP_POST_VARS['submit'])
{ 
    echo "Форма успешно обработана";     
} 
?>
Если привёдённое выше условие истина, значит кнопка submut была нажата и массив $HTTP_POST_VARS содержит значения полей нашей формы. Далее проверим совпадает ли пароль введённый в форме с нашим секретным паролем.

<?PHP 
if($HTTP_POST_VARS['submit'])
{ 
    if($HTTP_POST_VARS['password'] == 'mysecretpassword')
	{ 
        echo "Форма успешно обработана"; 
    } 
	else
	{ 
        echo "Неверный пароль"; 
    } 
} 
?>

Следующим нашим шагом будет проверка на то содержат ли другие два поля введённую пользователем информацию. Приведённый ниже код показывает как это сделать.

<?PHP 
if($HTTP_POST_VARS['submit'])
{ 
    if($HTTP_POST_VARS['password'] == 'mysecretpassword')
    { 
        if(!$HTTP_POST_VARS['headline'])
        { 
            echo "Вы должны ввести заголовок новости"; 
            exit; 
        } 
        if(!$HTTP_POST_VARS['text'])
        { 
            echo "Вы должны ввести текст новости"; 
            exit; 
        }
        echo "Форма успешно обработана"; 
    } 
    else
    { 
        echo "Неверный пароль"; 
    } 
} 
?>

Последнее что нам нужно сделать перед записью новости в файл это проверить не содержит ли информация, введённая в поля формы символ "|". Дело в том, что когда мы будем записывать данные в файл, мы будем записывать каждую новость отдельной строкой, а разделителем полей формы в этой строке как раз и будет символ "|".

<?PHP 
if($HTTP_POST_VARS['submit'])
{ 
    if($HTTP_POST_VARS['password'] == 'mysecretpassword')
    { 
        if(!$HTTP_POST_VARS['headline'])
        { 
            echo "Вы должны ввести заголовок новости"; 
            exit; 
        } 
        if(!$HTTP_POST_VARS['text'])
        { 
            echo "Вы должны ввести текст новости"; 
            exit; 
        }
        if(strstr($HTTP_POST_VARS['headline'],"|"))
        { 
            echo "Заголовок не должен содержать символ - |"; 
            exit; 
        } 
        if(strstr($HTTP_POST_VARS['text'],"|"))
        { 
            echo "Текст не должен содержать символ - |"; 
            exit; 
        }
        echo "Форма успешно обработана"; 
    } 
    else
    { 
        echo "Неверный пароль"; 
    } 
} 
?>

Запись информации в файл

Теперь, когда мы убедились что данные в форме содержат именно то, что нам нужно преступим к сохранению полей формы в текстовый файл. Первое что нам нужно сделать это открыть наш текстовый файл для записи. Для этого воспользуемся функцией fopen().

<?PHP 
$fp = fopen('news.txt','a'); 
if(!$fp)
{ 
    echo "Ошибка открытия файла!"; 
    exit; 
} 
?>

Вот мы и открыли файл news.txt находящийся в той же директории что и запущенный нами скрипт. 'a' - означает что мы будем добавлять новую информацию в конец файла если он уже существует на диске если же нет, то будет создан новый файл.

Затем нам нужно построить строку, которую мы хотим поместить в файл. Для этого нам понадобится дата добавления новости и информация, введённая в форму. Также давайте в полученной нами строке заменим все переводы строки на HTML тэг
с помощью функции str_replace().

<?PHP 
$line = date("m.d.y") . "|" . $HTTP_POST_VARS['headline']; 
$line .= "|" . $HTTP_POST_VARS['text']; 
$line = str_replace("\r\n","
",$line); $line .= "\r\n"; ?>

Всё теперь наши новости заносятся в текстовый файл. Давайте поместим все это вместе и посмотрим, что у нас получилось.

<?PHP 

//Поместите этот код в один файл и назовите его addnews.php

if($HTTP_POST_VARS['submit'])
{ 
    if($HTTP_POST_VARS['password'] == 'mysecretpassword')
    { 
        if(!$HTTP_POST_VARS['headline'])
        { 
            echo "Вы должны ввести заголовок новости"; 
            exit; 
        } 
        if(!$HTTP_POST_VARS['text'])
        { 
            echo "Вы должны ввести текст новости"; 
            exit; 
        }
        if(strstr($HTTP_POST_VARS['headline'],"|"))
        { 
            echo "Заголовок не должен содержать символ - |"; 
            exit; 
        } 
        if(strstr($HTTP_POST_VARS['text'],"|"))
        { 
            echo "Текст не должен содержать символ - |"; 
            exit; 
        }
        $fp = fopen('news.txt','a'); 
        if(!$fp)
        { 
            echo "Ошибка открытия файла!"; 
            exit; 
        } 
        $line = date("m.d.y") . "|" . $HTTP_POST_VARS['headline']; 
        $line .= "|" . $HTTP_POST_VARS['text']; 
        $line = str_replace("\r\n","<BR>",$line); 
        $line .= "\r\n"; 
        if(!fclose($fp))
        { 
            echo "Ошибка закрытия файла!"; 
            exit; 
        } 
        echo "Форма успешно обработана"; 
    } 
    else
    { 
        echo "Неверный пароль"; 
    } 
} 
?>
<FORM ACTION="<?=$PHP_SELF?>" METHOD="POST" NAME="ad_news">
Заголовок:<BR>
<INPUT TYPE="text" SIZE="30" NAME="headline"><BR>
Текст новости:<BR>
<TEXTAREA NAME="text" COLS="40" ROWS="5"></TEXTAREA><BR><BR>
Пароль:<BR>
<INPUT TYPE="password" SIZE="30" NAME="password"><BR>
<INPUT TYPE="submit" NAME="submit" VALUE="Добавить!"> <BR>
</FORM>

Отображение Новостей

Итак, мы добились того, что информация вводимая в HTML форму браузера сохраняется в текстовом файле. Теперь всё что нам нужно это показать эти новости пользователям нашего сайта. Для этого нам нужно поместить содержимое файла в массив. Затем, поскольку новая информация находится в конце массива, нам нужно инвертировать массив при помощи функции array_reverse(). Далее разделить нашу строку на составные части, чтобы выделить отдельные поля формы и вывести всё это на экран.

Сначала занесём данные из файла в массив. Для этого мы используем функцию file(). Эта функция построчно считывает файл и заносит каждую строку в массив как отдельный элемент.

<?PHP 
$data = file('news.txt'); 
?> 

Так как новые новости у нас добавлялись в конец файла, нам нужно инвертировать массив чтобы самая последняя новость находилась в начале массива.

<?PHP 
$data = file('news.txt'); 
$data = array_reverse($data); 
?>

Теперь, когда мы получили данные из файла нам нужно разделить каждую строку на дату, заголовок и на текст новости. Для этого нам понадобится функция explode(). Которую мы будем запускать в каждом повторе цикла, пока не переберём все элементы массива.

<?PHP 
$data = file('news.txt'); 
$data = array_reverse($data); 
foreach($data as $element)
{ 
    $element = trim($element); 
    $pieces = explode("|", $element); 
    echo $pieces[0] . "<BR>" . "<b>" . $pieces[1] . "</b><BR>" . 
	$pieces[2] . "<BR><BR>"; 
} 
?>  

В этом примере функция trim() использована, чтобы удалить признак конца строки из всех элементов массива.

Ну, вот и всё, теперь помещайте этот код в любом месте вашей странички и наслаждайтесь результатом

Автор: Privater

 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.