Давно интересуюсь, но из тех, что находил, одни либо слишком навороченные, либо недоделанные. Даже сложилось ощущение, что авторы начинают изучение php с написания такого движка, на середине понимают, что бд лучше и бросают, переходят на mysql. Я тоже решил попробовать, так как пока тоже новичок... не могу сказать, что получается сделать так как хотелось... вернее, пока есть только идея.
Хочу поделится, потому что может у кого-то есть похожие идеи, реализованные или в стадии. Пока получилось так:
файл config.php (пароли и имя пользователя)
1. black_ru - 15 Октября, 2010 - 15:35:57 - перейти к сообщению
Файл adminka.php
CODE (htmlphp):
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?php
- include 'config.php';
- //Контрольный вопос
- $askss = array( 'В каком году основан город Москва?'=>'1147',
- 'Как называется наша планета?'=> 'Земля', 'Кто светит нам утром в окно?'=> 'Солнце');
- $fraf = array_rand($askss);
- if (isset($askss[$_GET['ques']]) && $askss[$_GET['ques']] == $_GET['thekey']) {
- chkod ();
- } else {
- echo "<p align=center><b>Следует правильно ответить на контрольный вопрос<b></p>";
- }
- //Проверка заполнены ли поля
- function chkod () {
- include 'confnews.php';
- if (($_GET[user_login]!='') && ($_GET[user_pass]!='')) {
- chus ();
- }else {
- }
- }
- //Проверка имени и пароля
- function chus () {
- if (($_GET[user_login]!=username) || ($_GET[user_pass]!=password)) {
- echo "<b>Неудачно</b>";
- } else {
- echo "<b>Вы вошли в систему</b>";
- mkdirr ();
- exit;
- }
- }
- //Функция проверки создания текущей папки (по году) для базы новостей
- function mkdirr () {
- if (file_exists($mkdrr)) {
- addnew ();
- }
- else {
- addnew ();
- }
- }
- // добавление новостей
- function addnew () {
- echo "<form action method=post>
- Заголовок<br>
- <input type='headl' name='headl' value='' size='60' maxlength='200'><br
- Новость<br>
- <textarea name='text' rows='10' cols='60' value=''></textarea>
- <input type=submit name=sav value='добавить новость'>
- </form>";
- //Проверка заполнена ли поля для предотвращения пустой отравки
- if (isset($_POST['sav'])) {
- postnew ();
- }
- else {
- echo "Not saved";
- }
- }
- //Сама отрправка
- function postnew () {
- $text=($_POST['text']);
- if (($_POST['text'] = '') || ($_POST['headl'] = '')) {
- echo "Не заполнены поля";
- }
- else {
- $f=fopen($headl, 'a+');
- fwrite($f, $text);
- fclose($f);
- }
- }
- echo "<br>Новости <br><form action method=GET>
- <input type=text name='user_login' size='10' maxlength='30' value=''>
- <input type=password name=user_pass size=10 maxlength=15 value=''>";
- echo "<table width=350><tr><td width=350>$fraf</td></tr></table>";
- echo "<br><input type='hidden' name='ques' value='".($fraf)."' size=50>
- <input type='text' name='thekey' value=''></br>
- <input type='submit' size=8 value=Войти>
- </form>";
- ?>
(Добавление)
С выводом новостей мне менее всего понятно... пока сделал так, что новости выводятся только за один месяц,
в случае отсутствия новостей, выводятся за предыдущей, далее не выводятся (я сделал так с учетом того, что новости пишутся не чаще одного раза в день в небольшом объеме)
Простейший поиск тоже сделал, а также вывод по месяцам за текущий год, но проблема возникла, когда я подумал о нормальной пагинации, честно говоря не появилось идей, как уже с учетом такого вывода реализовать человеческий постраничный вывод.
Да, чуть не забыл, заголовок новости - это имея файла с прилепленной к нему датой, что избежать совпадений имен.
файл news.php
CODE (htmlphp):
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?php
- //Функция вывода(поиска) по году и дате
- function letop () {
- $ddta=($_GET['letop']);
- $mdir="news/";
- $slsh="/";
- $ldir="/*";
- $arFiless = glob($mdir.$ddta.$ldir);
- krsort($arFiless);
- foreach($arFiless as $filenam) {
- echo "<p align=left><br></br>";
- echo "<b>$filenam</b>";
- echo $filenam . "\n";
- echo "</a>";
- $homm = file_get_contents($filenam);
- echo "<br>$homm";
- }
- }
- $month = array( 1=>'Январь', 2=>'Февраль', 3=>'Март', 4=>'Апрель', 5=>'Май', 6=>'Июнь', 7=>'Июль', 8=>'Август', 9=>'Сентябрь', 10=>'Октябрь', 11=>'Ноябрь', 12=>'Декабрь');
- foreach ( $month as $k=>$v )
- {
- echo "<a href=?mn=$k> " .$v." </a>";
- }
- //Вывод сообщений (по текущему году и месяцу)
- $mdir="news/";
- $slsh="/";
- $datty=date('Y');
- $dattm=date('n');
- $ldir="/*";
- $arFiles = glob($mdir.$datty.$slsh.$dattm.$ldir);
- krsort($arFiles);
- foreach($arFiles as $filename) {
- echo "<p align=left><br></br>";
- echo "<b>";
- echo $filename . "\n";
- $hom = file_get_contents($filename);
- echo "</b><br>$hom";
- }
- //Проверка, надены ли файлы за текущий год и месяй, если нет вывод за прошлый
- if (!file_exists($filename)) {
- $mindat=--$dattm;
- $arFiless = glob($mdir.$datty.$slsh.$mindat.$ldir);
- krsort($arFiless);
- foreach($arFiless as $filenam) {
- echo "<p align=left><br></br>";
- echo "<b>";
- echo $filenam . "\n";
- $hom = file_get_contents($filenam);
- echo "</b><br>$hom";
- }
- }
- //Поиск за прошлый год, если новостей нет за январь (не очень удачный вариант, вероятно)
- if (($dattm < "2") && (!file_exists($filename))) {
- $mingod=--$datty;
- $arFiless = glob($mdir.$mingod.$slsh."12".$ldir);
- krsort($arFiless);
- foreach($arFiless as $filenam) {
- echo "<p align=left><br></br>";
- echo "<b>";
- echo $filenam . "\n";
- $hom = file_get_contents($filenam);
- echo "</b><br>$hom";
- }
- }
- echo "<form action method='get'>
- <p align=left> Введите год и месяц:
- <input type='letop' name='letop' value='2010/01'><input type='submit' value='искать в новостях'></form>";
- if (isset($_GET['letop'])) {
- letop ();
- }
- //Вывод по месяцам
- if (isset($_GET['mn'])) {
- echo "Архивные записи...";
- $kb=($_GET['mn']);
- $mdirr="news/";
- $datty1=date('Y');
- $dattm=date('n');
- $slsh="/";
- $ldirr="/*";
- $arFilesss = glob($mdirr.$datty1.$slsh.$kb.$ldirr);
- krsort($arFilesss);
- foreach($arFilesss as $filenamm) {
- echo "<p align=left><br></br>";
- echo "<b>$filenamm</b>";
- echo $filenamm . "\n";
- echo "</a>";
- $hommm = file_get_contents($filenamm);
- echo "<br>$hommm";
- }
- }
- ?>