Мы рассмотри каталог ссылок на PHP который не использует MySQL. Данный каталог работает на моём сайте, т.е. я выкладываю исходники каталога + документацию к нему.
Функции
Наш каталог будет не простым. Он будет иметь администрирование, причём администрирование будет защищено логином и паролем. Сначала разбёрём фнукции каталога: 1. Добавление ссылки 2. Вывод ссылок 3. Подсчёт количества ссылок в каждой категории(разделе). Функции администрирования 1. Вывод ссылок непровернных 2. Вывод проверенных ссылок 3. Редактирование любых сcылок 4. Удаление ссылок 5. Оценка ссылок Файлы Мы будем использовать вот какие файлы:
1. addlink.php В этом файле стоит форма для добавления ссылок. А именно: Название, Адрес, Категория, Описание. Эта форма ссылаеться на файл tomoder.php - action=tomoder.php.
2. tomoder.php В этом файле обрабатываеться ссылка, ей присваеться значение check=0, имееться ввиду то что она ещё непроверена, а значит не допущена к выводу.
3. файлы вывода ссылок В этих файлох будет выводиться ссылки
4. admin.php Файл администрирования защищенный паролем и логином. Использует edit.php
5. edit.php Содержит в себе форму для редактирования ссылок в admin.php 6. id.txt содержит id ссылки 6. links.txt содержит ссылки
Код addlink.php <form method=post action=tomoder.php> Название:<input type=text name=name><br> Адрес:<input value="http://" type=text name=website><br> <select name="kat" style="width:200"> <option value="1">Веб-мастеру</option> <option value="2">Программирование на PHP</option> <option value="3">Архив скриптов</option> <option value="4">Графика, Photoshop и др.</option> <option value="5">Раскрутка сайта</option> <option value="6">Архив документаций</option> <option value="7">Разное</option> </select> <br> <textarea rows="5" name="op" cols="30"></textarea><br> <input type=submit name=button value=Добавить> </form> Здесь сложного ничего нет - простая форма.
tomode.php $idopen = fopen('id.txt','r'); // открываем файл с id прошлой ссылки $idlink = fgets($idopen, 1000); // переменной idlink присвоем значение id прошлой ссылки $idlink++; // увеличиваем id на 1 fclose($idopen); // закрываем файлик $idopen = fopen('id.txt', 'w'); // открываем заново fputs($idopen, $idlink); // добавляем новый id fclose($idopen); // закрываем файлик
$file = fopen('links.txt', 'r'); // открываем файл со ссылками $links = unserialize(fread($file, 100000)); // расшифровыаем данный массив со ссылками fclose($file); // закрываем файлик
function replace ($string) {
$string = str_replace("::","::",$string); $string = str_replace("<","<",$string); $string = str_replace(">",">",$string); $string = str_replace('\'',""",$string); $string = str_replace("\n"," ",$string); $string = str_replace('"',""",$string); $string = str_replace("%20"," ",$string); $string = str_replace("$","S;",$string); return $string;
} // это функция для заменения некоторых символов в данных ввёденых пользователем
$moder = "0"; // ссылка не проверена $op = replace($op); // испльзуем функцию для заменения тэгов и т.д. $name = replace($name); // испльзуем функцию для заменения тэгов и т.д. $website = replace($website); // испльзуем функцию для заменения тэгов и т.д. $links[] = array ( 'url' => "$website", // адрес 'name' => "$name", // имя 'description' => "$op", // описание 'cat' => "$kat", // категория 'stars' => "$starz", // оценка модератора 'check' => "$moder", // проверена или нет 'id' => "$idlink", // id ссылки );
// создаём массив ссылки
$file = fopen('links.txt', 'w'); // открываем файлик со ссылками $text = serialize($links); // зашифровываем новую ссылку fwrite ($file,"$text"); // записываем в файлик
fclose($file); // закрываем файлик
admin.php <? if (($PHP_AUTH_USER!='login')||($PHP_AUTH_PW!='pass')) { // login - ваш логин, pass - ваш пароль header("WWW-Authenticate: Basic realm=\"Введите логин и пароль\""); header("HTTP/1.0 401 Unauthorized"); exit(); } ?>
<? $filename = "links.txt"; // файл со ссылками function open_links($filename) { $open = fopen($filename, "r"); $links = unserialize(fread($open,100000)); fclose($open); return $links; } // функция для открывания ссылок
function save_links($filename, $links) { $open = fopen($filename, "w"); fputs($open, serialize($links)); fclose($open); return 1; } // функция для открывания ссылок ?>
<? $links = open_links($filename); // открываем ссылки echo "Непроверенные: "; // говорим что щас будут непроверенные ссылки foreach ($links as $link) { // раскрадываем массив массивов if($link[check]==0) { // если не проеренно echo "<a href=\"?id=$link[id]\">$link[name]</a><br>$link[url]<br>$link[description]<br>$link[cat]<br>$link[id]<br><br>\n"; // вывод ссылок $idd = $id; } }
echo "Проверенные: "; // говорим что щас будут проверенные ссылки foreach ($links as $link) { // раскрадываем массив массивов if($link[check]==1) { // если проверено echo "<a href=\"?id=$link[id]\">$link[name]</a><br>$link[url]<br>$link[description]<br>$link[cat]<br>$link[id]<br><br>\n"; // вывод ссылок $idd = $id; } } ?>
<? foreach($links as $link) { if ($id==$link[id]) { // если id в урле совпадает с id ссылки то.. . include "edit.php"; // ... то открываем файл edit.php для редактирования данной ссылки break; } } ?>
<? if(!empty($button)){ // если кнопка сохранения не пуста (в edit.php) if (isset($editlink)) { // если есть новая подредактированая ссылка foreach($links as $key=>$link) { // передаём ключ к массиву if ($link[id]==$editlink[id]) { // если совпадают id $links[$key] = $editlink; // вносим новые значения в эту ссылку save_links($filename, $links); // и записываем эту ссылку в файл break; } } }
}
if(!empty($button1)){ // если кнопка удаления не пуста (в edit.php) if (isset($editlink)) { если есть новая подредактированая ссылка foreach($links as $key=>$link) { // передаём ключ к массиву if ($link[id]==$editlink[id]) { // если совпадают id $links[$key] = $editlink; // вносим новые значения в эту ссылку unset($links[$key]); // удаляем ссылку save_links($filename, $links); // сохраняем массив break; } } }
} ?>
edit.php <form method=post action="<?=$PHP_SELF;?>"> Название:<input type=text value="<?=$link[name];?>" name=editlink[name]><br> Адрес:<input value="<?=$link[url];?>" name=editlink[url] type=text ><br> Оценка:<input value="<?=$link[stars];?>" name=editlink[stars] type=text ><br> CHECK:<input value="<?=$link[check];?>" name=editlink[check] type=text ><br> <select name="editlink[cat]" style="width:200"> <option value="1">Веб-мастеру</option> <option value="2">Программирование на PHP</option> <option value="3">Архив скриптов</option> <option value="4">Графика, Photoshop и др.</option> <option value="5">Раскрутка сайта</option> <option value="6">Архив документаций</option> <option value="7">Разное</option> </select> <input type="hidden" name="editlink[id]" value="<?echo $link[id];?>"> <br> <? echo "<textarea rows=5 name=editlink[description] cols=30>$link[description]</textarea><br>"; ?> <input type=submit name=button value=Сохранить> <input type=submit name=button1 value=Удалить> </form>
Автор статьи - Zealot www.rupixel.com |