Исходники и листинги ::: PHP ::: Новостной скрипт

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
  ------------------
  .htaccess
  ------------------
  php_value error_reporting 7
 
  ------------------
  add.php
  ------------------
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  <link rel=stylesheet type="text/css" href="main.css">
  <title>Добавление новости</title>
  <?
  error_reporting(0);
  $filename = "content.databases";
  $lost = file_get_contents('content.databases');
  $date=date("d.m.Y H:i");
  if ($proverka==y):
  $data = "$date|$autor|$news|n$lost";
  // Если файл существует и в него возможна запись
  if ( is_writeable($filename) ) :
  // Открыть файл
  $fh = fopen($filename, "w");
  // Записать содержимое $data в файл
  $success=fwrite($fh, $data);
  // Закрыть файл
  fclose($fh); else :
  print "И где бл*** файл???";
  endif;
  echo "<center><hr><b>Новость добавлена</b><hr>Новость успешно записана в базу данных<hr></center>";
  else:
  echo "<center><hr><b>Добавление новости</b><hr>
  <form action="add.php" method="post">
  <input type="hidden" name="proverka" value="y">Автор:<br>
  <input type="text" name="autor" size="82" maxlength="30"><br>Новость:<br>
  <textarea name="news" rows="5" cols="80"></textarea><br>
  <input type="submit" value="Добавить новость">
  </form><hr>
  </center>";
  endif;
  ?>
  ------------------
  content.databases
  ------------------
 
  ------------------
  main.css
  ------------------
  body, td, ol, ul, li , p {
  &nbsp;&nbsp;FONT-SIZE: 10pt;
  &nbsp;&nbsp;FONT-FAMILY: Verdana, Arial, Helvetica, Tahoma, sans-serif;
  }
  .text {
  &nbsp;&nbsp;FONT-SIZE: 10pt; COLOR: #000000; FONT-WEIGHT: normal;
  &nbsp;&nbsp;FONT-FAMILY: Verdana, Arial, Helvetica, Tahoma, sans-serif;
  }
  H3 { COLOR: #8f0000;&nbsp;&nbsp;FONT-FAMILY: Arial;&nbsp;&nbsp;FONT-SIZE: 12pt;&nbsp;&nbsp;FONT-WEIGHT: bold; TEXT-ALIGN: center }
  H4 { COLOR: #8f0000;&nbsp;&nbsp;FONT-FAMILY: Arial;&nbsp;&nbsp;FONT-SIZE: 11pt;&nbsp;&nbsp;FONT-WEIGHT: bold; MARGIN-BOTTOM: 5px;}
  H5 { COLOR: #4f0000;&nbsp;&nbsp;FONT-FAMILY: Arial;&nbsp;&nbsp;FONT-SIZE: 11pt;&nbsp;&nbsp;FONT-WEIGHT: bold; MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px;}
  a,a:visited { text-decoration: none; FONT-WEIGHT: bold; color: #003388; }
  a:active { color: #6F0000}
  a:hover { color: #0066FF}
  .date { font-family: Courier; font-size: 8pt; text-decoration:none; font-weight:normal; color: #007000}
  .date2 { font-family: Courier; font-size: 8pt; text-decoration:none; font-weight:normal; color: #007000; background-color: #00FFAA}
  .sysdate { font-family: Courier; font-size: 8pt; text-decoration:none; font-weight:normal; color: #B00000}
  .private { font-weight:bold; color: red; background-color: #FAE0E0}
  .number { font-size: 11pt; font-weight: bold; color: #6F0000}
  .dsc { color: #606060; font-weight:normal; }
  select,textarea,input { border: solid 1pt #B0B0B0; font-family: MS Sans Serif; font-size: 10px; color: #191970; MARGIN-BOTTOM: 2px; MARGIN-TOP: 1px;}
 
  .ahint {font-family: MS Sans Serif; font-size:8px; text-decoration:none; color:#000080}
  #hint2 {position:absolute; width:140; background-color:#FFF6DD; layer-background-color:#FFF6DD; visibility:hidden}
  #hint3 {position:absolute; width:240; background-color:#FFF6DD; layer-background-color:#FFF6DD; visibility:hidden}
  #hint4 {position:absolute; width:240; visibility:hidden}
 
  .B1 { font-weight:bold; color: #6666CC}
  .B2 { font-weight:bold; color: #B06A00}
  img,table {border:0}
 
  ------------------
  view.php
  ------------------
  <?
  error_reporting(0);
  /************* НАСТРОЙКИ ****************/
  &nbsp;&nbsp;&nbsp;&nbsp;$guest_file="content.databases";
  /************* НАСТРОЙКИ ****************/
 
  echo "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <html>
  <head>
  <style type="text/css">
  TABLE, TR, TD { font-family: Verdana, Tahoma, Arial, sans-serif; font-size: 11px; color: #000 }
  #userlinks { border: 1px solid #928ECA; background-color: #C8C6E4 }
  </style>
  <title>Новости</title>
  </head>
  <body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
  <p align="left"><div align="center">";
  // Если в файле гостевой книги имеются данные...
  if (filesize($guest_file) > 0) :
  // Открыть файл данных гостевой книги
  $fh = fopen("$guest_file", "r") or die("Couldn't open $guest_file");
  // Повторять до конца файла
  while (! feof($fh)) :
  // Прочитать следующую строку
  $line=fgets($fh, 4096);
  // Разбить строку на компоненты
  // и присвоить каждый компонент переменной
  list($date, $name, $news) = explode("|", $line);
  // Если указано имя посетителя, вывести его
  if ($name != "") :
  print "
  <table width="75%" id="userlinks" cellspacing="2" cellpadding="2">
  <tr>
  <td align="left" height="17"><p align="right"><i><font face="Tahoma">$date</font></i></td>
  </tr>
  <tr>
  <td align="left"><font face="Tahoma">$news</font></td>
  </tr>
  <tr>
  <td align="left" height="17"><p align="right">$name</td>
  </tr>
  <br>";
  endif;
  endwhile;
  print "</table>
  </body>
  </html>";
  // Закрыть файл
  fclose($fh);
  else :
  print "<h3>Косяк...</h3>";
  endif;
  ?>
<<< Предыдущая работа

Вернуться в галерею исходников
Новостной скрипт
Автор: RapteR*
Город: Омск
Дата: 05.05.2006  03:28
Комментариев: 10
Просмотров: 588
Оценка: 2 (0|1|1|0|0) [0]

Вернуться на главную
Авторский комментарий к работе: Самый мой первый скрипт, простенькая новостная лента без секъюрной части. Можно использовать как гостевую книгу.
Вы не можете оценивать

КОММЕНТАРИИ К РАБОТЕ:
JeRR* ::: комментарий от 17.03.2007 | 22:30
JeRR Неофит (ур.7)
Очки: 977
Город: Юрга
Тв. работ: 7
Рег: 13.01.2007 (2324)
отлично, только через регуляры следовло бы вырезать из новостей ява-скрипты (чтобы смотрящий не пострадал от рук размещающего). И думаю не плохо бы было подумать о "PHP отдельно, HTML отдельно"
mr. Twister ::: комментарий от 24.02.2007 | 17:51
  Герой (ур.14)
Очки: 12378
Город: 1
Тв. работ: 80
Рег: 26.01.2007 (3187)
ан нет рабочий он, вот токо где его третья часть?


--------------------
1
mr. Twister ::: комментарий от 24.02.2007 | 17:43
  Герой (ур.14)
Очки: 12378
Город: 1
Тв. работ: 80
Рег: 26.01.2007 (3187)
мне кажется, что не рабочий скрипт


--------------------
1
Videot* ::: комментарий от 28.01.2007 | 17:13
Videot Неофит (ур.7)
Очки: 809
Город: Норильск
Тв. работ: 2
Рег: 26.01.2007 (3188)
Странный какойта скрипт..


--------------------
Punk not DEAD!
nopox ::: комментарий от 17.07.2006 | 16:26
  Дух (ур.1)
Очки: 13
Город: Томск
Тв. работ: 0
Рег: 19.06.2006 (285)
Ниже плинтуса. По-другому оценить, извините, сложно. Это были амбиции, извините А теперь конструктив:



1. Начнем с того, что в коде присутствуют нарушения синтаксиса: в некоторых блоках (например строки 31-32, 88... дальше не смотрел, но не исключаю, что могут быть) echo "..." не экранируются ковычки.



2. Программа написана при Register_globals = On. Сложно найти сервер, где это так. Хотя бы в .htaccess вынесли что-то вроде php_flag register_globals 1



3. Объявленный в .htaccess php_value error_reporting 7 переопределяется на нулевой уровень (отсутствие вывода сообщений об ошибках). Учитывая то, что в скрипте полно косяков с нарушением синтаксиса (см. п.1), то неподготовленный пользователь увидит просто белый экран.



4. Про грубейшее нарушение трациций MVC (отделение биснес-логики от логики отображения, или грубо говоря, отсутствие внятных шаблонов) умолчу



5. Про использование текстовых файлов вместо базы данных умолчу



6. Про то, что если изменить имя файла базы в переменной, скрипт работать будет не так, умолчу



7. Про нотисы тоже умолчу, хотя про уровень вывода ошибок я говорил.



Больше нуля не поставил бы. Максимум - единицу. Да и то за старание. Надеюсь, что все это выглядело не слишком грубо


--------------------
Я - часть той силы, что вечно хочет зла и вечно совершает благо
wolong ::: комментарий от 18.06.2006 | 15:59
wolong Искатель (ур.5)
Очки: 383
Город: Tomsk
Тв. работ: 1
Рег: 15.06.2006 (280)
Zloy прав if ($name != "") : длиннее чем emerty()

но я бы сам if написал - проще это, привычнее...


--------------------
$_="1K8}3v3w8(5f1o2q5y6n3h1s5%2R0e9{7s9)5m1b6i2m6k3u";s/(.)(.)/pack('C',ord($2)-$1)/eg;print;
RapteR* ::: комментарий от 22.05.2006 | 18:32
RapteR Приверженец (ур.6)
Очки: 722
Город: Омск
Тв. работ: 14
Рег: 02.05.2006 (61)
ты чрезвычайно туп, что кароче empty() или !="" ??? зачем программе веса добавлять?


--------------------
Хочеш сделать хорошо, сделай сам!
Zloy ::: комментарий от 16.05.2006 | 14:30
  Человек (ур.3)
Очки: 154
Город: Томск
Тв. работ: 0
Рег: 02.05.2006 (64)
if ($name != "")

ты про empty() слышал?
RapteR* ::: комментарий от 15.05.2006 | 13:00
RapteR Приверженец (ур.6)
Очки: 722
Город: Омск
Тв. работ: 14
Рег: 02.05.2006 (61)
Ну на счёт матов я проглядел, их было больше)

на счёт разделителей, лучше как бы избегать текстовиков в принципе, а если уж на то пошло то фильтровать поля на наличие | чем то вроде:

$date = str_replace( "|"," ",$date);

$autor = str_replace( "|"," ",$autor);

$news = str_replace( "|"," ",$news);

всё это можно сунуть в 17 строку после if`ака.


--------------------
Хочеш сделать хорошо, сделай сам!
Chronos ::: комментарий от 06.05.2006 | 13:19
Chronos Приверженец (ур.6)
Очки: 748
Город: Томск
Тв. работ: 4
Рег: 05.05.2006 (80)
Позволю себе несколько коменариев ;-)



Имеет смысл не использовать не нормативную лексику для вывода исключительных ситуаций .

///print "И где бл*** файл???";

Особенно это касаеться веб приложений, так как увидеть его могут разные люди, а у некоторых с людей с которыми ты как то можешь быть связан может не оказаться юмора ;-) например у заказчика разрабатываемого тобой сайта :о)



И второй совет, у тебя в качестве разделителя используеться символ "|", если пользователь передаст скрипту данные сожержащие такой символ, то при отображении данных обязательно будут искажения ;-). Рекомендую использовать более длинный сплитер(разделитель), что то вроде т.е. такая комбинация которая с высокой вероятностью не будет переданна из формы ;-)



А в целом вполне одекватная реализация ;-)


--------------------
Хорошо смееться тот кто стреляет последним