Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Простой движок новостной на файлах

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
black_ru
Отправлено: 15 Октября, 2010 - 15:35:57
Post Id


Новичок


Покинул форум
Сообщений всего: 50
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Давно интересуюсь, но из тех, что находил, одни либо слишком навороченные, либо недоделанные. Даже сложилось ощущение, что авторы начинают изучение php с написания такого движка, на середине понимают, что бд лучше и бросают, переходят на mysql. Я тоже решил попробовать, так как пока тоже новичок... не могу сказать, что получается сделать так как хотелось... вернее, пока есть только идея.
Хочу поделится, потому что может у кого-то есть похожие идеи, реализованные или в стадии. Пока получилось так:
файл config.php (пароли и имя пользователя)
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. define ("username", admin, true);
  3. define ("password", 123, true);
  4. ?>
  5.  


Файл adminka.php
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. include 'config.php';
  3. //Контрольный вопос
  4. $askss = array( 'В каком году основан город Москва?'=>'1147',
  5. 'Как называется наша планета?'=> 'Земля', 'Кто светит нам утром в окно?'=> 'Солнце');
  6. $fraf = array_rand($askss);
  7. if (isset($askss[$_GET['ques']]) && $askss[$_GET['ques']] == $_GET['thekey']) {
  8. chkod ();
  9. } else {
  10. echo "<p align=center><b>Следует правильно ответить на контрольный вопрос<b></p>";
  11. }
  12.  
  13. //Проверка заполнены ли поля
  14. function chkod () {
  15. include 'confnews.php';
  16. if (($_GET[user_login]!='') && ($_GET[user_pass]!='')) {
  17. chus ();
  18. }else {
  19. }
  20.  
  21. }
  22.  
  23. //Проверка имени и пароля
  24. function chus () {
  25.  
  26. if (($_GET[user_login]!=username) || ($_GET[user_pass]!=password)) {
  27. echo "<b>Неудачно</b>";
  28. } else {
  29. echo "<b>Вы вошли в систему</b>";
  30. mkdirr ();
  31. }
  32. }
  33. //Функция проверки создания текущей папки (по году) для базы новостей
  34. function mkdirr () {
  35. $mkdrr="news/".date('Y')."/".date('n')."/";
  36. if (file_exists($mkdrr)) {
  37. addnew ();
  38. }
  39. else {
  40. mkdir("news/".date('Y')."/", 0755);
  41. mkdir("news/".date('Y')."/".date('n')."/", 0755);
  42. addnew ();
  43. }
  44. }
  45.  
  46. // добавление новостей
  47. function addnew () {
  48. echo "<form action method=post>
  49. Заголовок<br>
  50. <input type='headl' name='headl' value='' size='60' maxlength='200'><br
  51. Новость<br>
  52. <textarea name='text' rows='10' cols='60' value=''></textarea>
  53. <input type=submit name=sav value='добавить новость'>
  54. </form>";
  55. //Проверка заполнена ли  поля для предотвращения пустой отравки
  56. if (isset($_POST['sav'])) {
  57. postnew ();
  58. }
  59. else {
  60. echo "Not saved";
  61. }
  62. }
  63. //Сама отрправка
  64. function postnew () {
  65. $headl='news/'.date('Y').'/'.date('n')."/".date('d')." ".date('H').":".date('i')." ".htmlspecialchars($_POST['headl'].":" );
  66. $text=($_POST['text']);
  67. if (($_POST['text'] = '') || ($_POST['headl'] = ''))  {
  68. echo "Не заполнены поля";
  69. }
  70. else {
  71. $f=fopen($headl, 'a+');
  72. fwrite($f, $text);
  73. fclose($f);
  74. }
  75.  
  76. }
  77.  
  78. echo "<br>Новости <br><form action method=GET>
  79. <input type=text name='user_login' size='10' maxlength='30' value=''>
  80. <input type=password name=user_pass size=10 maxlength=15 value=''>";
  81. echo "<table width=350><tr><td width=350>$fraf</td></tr></table>";
  82. echo "<br><input type='hidden' name='ques' value='".($fraf)."' size=50>
  83. <input type='text' name='thekey' value=''></br>
  84. <input type='submit' size=8 value=Войти>
  85. </form>";
  86.  
  87. ?>

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

файл news.php
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. //Функция вывода(поиска) по году и дате
  4. function letop () {
  5. $ddta=($_GET['letop']);
  6. $mdir="news/";
  7. $slsh="/";
  8. $ldir="/*";
  9. $arFiless = glob($mdir.$ddta.$ldir);
  10. krsort($arFiless);
  11. foreach($arFiless as $filenam) {
  12. echo "<p align=left><br></br>";
  13. echo "<b>$filenam</b>";
  14. echo $filenam . "\n";
  15. echo "</a>";
  16. $homm = file_get_contents($filenam);
  17. echo "<br>$homm";
  18. }
  19. }
  20.  
  21. $month = array( 1=>'Январь', 2=>'Февраль', 3=>'Март', 4=>'Апрель', 5=>'Май', 6=>'Июнь', 7=>'Июль', 8=>'Август', 9=>'Сентябрь', 10=>'Октябрь', 11=>'Ноябрь', 12=>'Декабрь');
  22.  
  23. foreach ( $month as $k=>$v )
  24. {
  25.  
  26.   echo "<a href=?mn=$k> " .$v." </a>";
  27.  
  28. }
  29. //Вывод сообщений  (по текущему году и месяцу)
  30.  
  31. $mdir="news/";
  32. $slsh="/";
  33. $datty=date('Y');
  34. $dattm=date('n');
  35. $ldir="/*";
  36. $arFiles = glob($mdir.$datty.$slsh.$dattm.$ldir);  
  37. krsort($arFiles);
  38. foreach($arFiles as $filename) {
  39. echo "<p align=left><br></br>";
  40. echo "<b>";
  41. echo $filename . "\n";
  42. $hom = file_get_contents($filename);
  43. echo "</b><br>$hom";
  44. }
  45. //Проверка, надены ли файлы за текущий год и месяй, если нет вывод за прошлый
  46. if (!file_exists($filename)) {
  47. $mindat=--$dattm;
  48. $arFiless = glob($mdir.$datty.$slsh.$mindat.$ldir);
  49. krsort($arFiless);
  50. foreach($arFiless as $filenam) {
  51. echo "<p align=left><br></br>";
  52. echo "<b>";
  53. echo $filenam . "\n";
  54. $hom = file_get_contents($filenam);
  55. echo "</b><br>$hom";
  56. }
  57. }
  58. //Поиск за прошлый год, если новостей нет за январь (не очень удачный вариант, вероятно)
  59. if (($dattm < "2") && (!file_exists($filename))) {
  60. $mingod=--$datty;
  61. $arFiless = glob($mdir.$mingod.$slsh."12".$ldir);
  62. krsort($arFiless);
  63. foreach($arFiless as $filenam) {
  64. echo "<p align=left><br></br>";
  65. echo "<b>";
  66. echo $filenam . "\n";
  67. $hom = file_get_contents($filenam);
  68. echo "</b><br>$hom";
  69. }
  70. }
  71.  
  72. echo "<form action method='get'>
  73. <p align=left> Введите год и месяц:
  74. <input type='letop' name='letop' value='2010/01'><input type='submit' value='искать в новостях'></form>";
  75. if (isset($_GET['letop'])) {
  76. letop ();
  77. }
  78.  
  79. //Вывод по месяцам
  80. if (isset($_GET['mn'])) {
  81. echo "Архивные записи...";
  82. $kb=($_GET['mn']);
  83. $mdirr="news/";
  84. $datty1=date('Y');
  85. $dattm=date('n');
  86. $slsh="/";
  87. $ldirr="/*";
  88. $arFilesss = glob($mdirr.$datty1.$slsh.$kb.$ldirr);
  89. krsort($arFilesss);
  90. foreach($arFilesss as $filenamm) {
  91. echo "<p align=left><br></br>";
  92. echo "<b>$filenamm</b>";
  93. echo $filenamm . "\n";
  94. echo "</a>";
  95. $hommm = file_get_contents($filenamm);
  96. echo "<br>$hommm";
  97. }
  98. }
  99. ?>

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

(Отредактировано автором: 15 Октября, 2010 - 17:08:24)

 
 Top
JustUserR
Отправлено: 16 Октября, 2010 - 13:33:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




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


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB