Система за новини + странициране без sql

Bummer

Registered
Demo
add.php
Код:
<?php    
include "antihack.php";    
antihack();    
echo "<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>";    
echo "<form method=post>Заглавие на новината:<br><input type=text name=title><p>Съдържание:<br><textarea input type=text  name=new cols=50 rows=25></textarea><p><input type=submit value=Добави></form>";    
$title = $_POST['title']; // Взимаме заявката и създаваме променливи с нейните стойности    
$new = $_POST['new'];    
if("$title" == "" or "$new" == ""){ // Ако някоя част е празна, прекратяваме изпълнението на скрипта    
exit;    
}    
do    
{    
$dir = $dir + 1;    
}    
while(is_dir("$dir")); // Правим нова променлива, като правим цикъл за добавяне на +1 към стойността и, докато има папка със името на стойността    
mkdir("$dir"); // Създаваме папка    
$file = "./$dir/title.inc";    
$action = fopen($file, 'a') or die("Не мога да отворя файла");    
$data = "$title";    
fwrite($action, $data);    
fclose($action);     
$ip = getenv("REMOTE_ADDR");    
$file = "./$dir/ip.inc";    
$action = fopen($file, 'a') or die("Не мога да отворя файла");    
$data = "$ip";    
fwrite($action, $data);    
fclose($action);     
$file = "./$dir/index.html";    
$action = fopen($file, 'a') or die("Не мога да отворя файла");    
$data = "$new";    
fwrite($action, $data);    
fclose($action); // Записваме заявките по съответните файлове в новосъздадената директория    
?>
antihack.php - Автор Jooorooo
Код:
 <?    
function antihack()    
{    
   if($_GET)    
      {    
      foreach($_GET as $a => $b)    
         {    
         $_GET[$a]=trim(strip_tags(addslashes(htmlspecialchars($b)))); // Добавят се слашес, ползваме функцията htmlspecialchars, за да не може да бъдат пускани новини с html / javascript /...    
         }    
      }    
   if($_POST)    
      {    
      foreach($_POST as $a => $b)    
         {    
         $_POST[$a]=trim(strip_tags(addslashes(htmlspecialchars($b))));    
         }    
      }    
}    
?>

edit.php
Код:
<head>    
<title>open file</title>    
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">    
</head>    
<body>    
<?php    
include "antihack.php";    
antihack();    
$new = $_GET['new'];    
if(!is_dir("$new")){ // Проверяваме дали има такава папка и ако няма, пренасочваме към началото    
die("<META HTTP-EQUIV='refresh' CONTENT='0;URL=index.php?page=1'>");    
}    
$ip = getenv("REMOTE_ADDR");    
$ipnew = file_get_contents("./$new/ip.inc");    
if("$ip" !== "$ipnew"){    
die("<META HTTP-EQUIV='refresh' CONTENT='0;URL=index.php?page=1'>");    
} // Пак правим проверка, дали този, който иска да промени новината е нейният автор и ако не е - пренасочваме го    
$fp = fopen ("./$new/index.html" ,"r");    
$file= fread($fp,100000); // Отваряме файла и го готвим за промяна    
echo'<form method="post" action="edited.php" ><TEXTAREA name="write" COLS=100 ROWS=25>';    
echo $file;    
echo"</TEXTAREA><p><input type=hidden value=$new name=new><INPUT TYPE=SUBMIT VALUE=Промени></FORM>";    
?>
edited.php
Код:
   <html>    
<head>    
<title>Промяна на файла</title>    
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">    
</head>    
<body>    
</body>    
</html>    
<?php    
$new = $_POST['new'];    
if(!is_dir("$new")){    
die("<META HTTP-EQUIV='refresh' CONTENT='0;URL=index.php?page=1'>");    
}    
$ip = getenv("REMOTE_ADDR");    
$ipnew = file_get_contents("./$new/ip.inc");    
if("$ip" !== "$ipnew"){    
die("<META HTTP-EQUIV='refresh' CONTENT='0;URL=index.php?page=1'>");    
} // Пак правим проверка за автора и съществуването на папката    
$text=$HTTP_POST_VARS['write'];    
$text=stripslashes($text);    
$fp = fopen ("./$new/index.html" ,"w"); // Извършваме промените    
fwrite($fp, $text );    
fclose($fp);    
echo "Вие успешно променихте новината.<br><a href=read.php?new=$new>Към новината</a> <a href=index.php?page=1>Към началото</a>";    
?>
index.php
Код:
<?php    
echo "<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>";    
$pc = 1;    
do    
{    
$pc = $pc + 10;    
}    
while(is_dir("$pc"));    
$pc = $pc + 9;    
$pc = $pc / 10;    
$pc = $pc - 1; // Изчисляваме броя на страниците    
$page = $_GET['page'];    
if("$page" == "" or "$page" <= "0" or !is_numeric("$page") or "$page" > "$pc"){    
die("<META HTTP-EQUIV='refresh' CONTENT='0;URL=index.php?page=1'>");     
} // Ако номерът на страницата не е цифрен, по-малък е от 1 или е по-голям от последната страница, пак пренасочваме към началото    
$pages = ($page * 10) - 1;    
$test = (($page - 1) * 10) + 1;    
$prove = (($page * 10) + 1); // Правим няколко изчисления, които ще служат за показване на предишна и следваща страница.Ако сме на страница 1, няма да излезе предишна, ако сме на последната - няма да излезе следваща    
do    
{    
$count = $count + 1;    
$count1 = $count + 1;    
$count2 = $count + 2;    
if(!is_dir("$count1") and is_dir("$count2")) rename("$count2","$count1");    
if(is_dir("$count") && "$count" >= "$test") $ipnew = file_get_contents("./$count/ip.inc");    
if(is_dir("$count") && "$count" >= "$test") $title = file_get_contents("./$count/title.inc");    
if(is_dir("$count") && "$count" >= "$test") echo "<a href=read.php?new=$count>$title</a><br>";    
} // Правим няколко изчисления, които ще служат за показване на предишна и следваща страница.Ако сме на страница 1, няма да излезе предишна, ако сме на последната - няма да излезе следваща    
while("$count" <= "$pages");    
$next = $page + 1;    
$previous = $page - 1;    
if("$previous" >= "1") $prevpage = "<a href=?page=$previous>$previous</a>";    
if(is_dir("$prove")) $nextpage = "<a href=?page=$next>$next</a>";    
echo "$prevpage $page $nextpage"; //Извеждаме предишна, сегашна и следваща страница    
do    
{    
$news = $news + 1;    
}    
while(is_dir("$news"));    
$news = $news - 1;    
echo "<br>В сайтa има $news новини, разпределени на $pc страници<br><a href=add.php>Добави новина</a>";    
?>
read.php
Код:
<?php    
echo "<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>";    
$new = $_GET['new'];    
if(!is_dir("$new")){    
die("<META HTTP-EQUIV='refresh' CONTENT='0;URL=index.php?page=1'>");    
}    
$title = file_get_contents("./$new/title.inc");    
$ip = getenv("REMOTE_ADDR");    
$ipnew = file_get_contents("./$new/ip.inc");    
if("$ip" == "$ipnew") $edit = "<br><a href=edit.php?new=$new>Промени</a>";    
echo "<table border=1 cellspacing=0><tr><td align=center><b>$title</b></td></tr><tr><td align=center>";    
include "./$new/index.html";    
echo "$edit</td></tr></table>";    
$next = $new + 1;    
$prev = $new - 1;    
if(is_dir("$next")) $nextnew = "<a href=?new=$next>$next</a>";    
if(is_dir("$prev")) $prevnew = "<a href=?new=$prev>$prev</a>";    
echo "$prevnew $new $nextnew"; // Изчисляваме, дали има предишна и слеваща новина и извеждаме    
?>
Урокът е авторски.
Преписването му без мое съгласие е забранено
 
Браво за урока обаче има един недостатък че не сортира новините.Тоест не слага всяка нова на първа страница а на последна.
 

Back
Горе