Мы рассмотри каталог ссылок на 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
Источник: woweb.ru