Demo
add.php
antihack.php - Автор Jooorooo
edit.php
edited.php
index.php
read.php
Урокът е авторски.
Преписването му без мое съгласие е забранено
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); // Записваме заявките по съответните файлове в новосъздадената директория
?>
Код:
<?
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>";
?>
Код:
<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>";
?>
Код:
<?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>";
?>
Код:
<?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"; // Изчисляваме, дали има предишна и слеваща новина и извеждаме
?>
Преписването му без мое съгласие е забранено