Динамічний форум.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Програмного забезпечення (ПЗ)

Інформація про роботу

Рік:
2006
Тип роботи:
Курсова робота
Предмет:
Об’єктно-орієнтоване програмування
Група:
КН-4

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет “Львівська політехніка” Кафедра ПЗ Пояснювальна записка до курсової роботи з дисципліни “Об’єктно-орієнтоване програмування” на тему: “Динамічний форум”. Виконав: ст. гр. КН-4 Перевірив: Львів 2006 Довідникова програмна інтернет система ─ Форум. Завдання. Курсова робота повинна включати в себе можливість додавання записів, повинна бути передбачена можливість видалення записів; елементи ООП (об’єктно-орієнтованого програмування), які забезпечуються за допомогою мови PHP; зовнішній вигляд інтернет-сторінки, що забезпечується мовою HTML чи JAVA-скриптами. Виконання поставленого завдання. Вступ. Форум має лінійну тсруктуру. При перегляді теми можна прочитати всі повідомлення підряд зверху вниз і між повідомленнями немає ніякої службової інформації, лише ледь помітні горизонтальні лінії. При створенні нової теми чи додаванні повідомлення в тему вона “випливає” на перше місце в списку тем. Створений також режим адміністрування, у якому можна налаштувати зовнішній вигляд та внутрішні функції форуму. Текст програми. Дана курсова робота розроблялася в основному засобами мови програмування PHP і її текст складається з багатьох файлів. Текст кожного з них подано нижче. Файл .htaccess. Файл connect.inc повинен бути захищений засобами Apache за допомогою .htaccess, директива Files. <Files connect.inc> order allow,deny deny from all </Files> <Files .htaccess> order allow,deny deny from all </Files> Файл index.php. Цей файл використовується під’єднання основного скрипту, шо розмішений у файлі forum.php і для виведення привітання „Welcome to our forum”. <html> <head> <title> Forum </title> </head> <body> <font style="background: #479E47; color: white; margin: 0px 0 4px 0; font: normal 18px sans-serif; padding: 4px 2px 4px 4px; width: 100%">Welcome to our forum</font><br> <center> <? $f_incl_script="forum.php"; include($f_incl_script); ?> </center> </body> </html> Файл forum.php. Цей файл – це php-скрипт, який є основним файлом що відображає форум і підключає додаткові файли потрібні для роботи і адміністрування форуму. Ці файли розташовані в папці incl. <? if (empty($f_incl_script)) { $f_for_relative=""; } else { $f_for_relative=dirname($f_incl_script)."/"; } $forchangelines="one"; $showemails=trim(file_get_contents($f_for_relative."conf/showemails.txt")); include($f_for_relative."incl/scandir.php"); include($f_for_relative."incl/smilies.php"); if (empty($_GET['pagenum'])) { $_GET['pagenum']=0; } echo "\n \n \n <!-- Free forum provided by: ".file_get_contents($f_for_relative.'admin/conf/supporturl.txt')." -->\n \n \n"; echo "<link href=\"".$f_for_relative."templ/styles/".file_get_contents($f_for_relative."conf/css.txt").".css\" type=text/css rel=stylesheet>"; $layarr=file($f_for_relative."templ/layouts/".file_get_contents($f_for_relative."conf/layout.txt").".txt"); $f_top=$layarr[1]; $f_pre=$layarr[3]; $f_pre_two=$layarr[5]; $f_after=$layarr[7]; $f_bottom=$layarr[9]; $f_separ=$layarr[11]; $f_postinfoend=$layarr[13]; $f_posts_pre=$layarr[15]; $f_posts_after=$layarr[17]; $f_postr_pre=$layarr[19]; $f_postr_after=$layarr[21]; $f_beforeposttable=$layarr[23]; $f_afterposttable=$layarr[25]; $f_numofthispage=$layarr[27]; $f_numofthispage_end=$layarr[29]; $f_postnewsubj=$layarr[31]; $f_postnewreply=$layarr[33]; $f_smilies=$layarr[35]; if (empty($_GET['act'])) { $_GET['act']="subj"; } $f_messonpage=file_get_contents($f_for_relative."conf/messonpage.txt"); if ($_GET['act']=="subj") { // SHOW TOPICS START echo $f_top; $scandir=$f_for_relative."mess"; get_dir_files(); $filesoutput=$filearray; @sort($filesoutput); $filesoutput=@array_reverse($filesoutput); $f_i=$_GET['pagenum']*$f_messonpage; if (count($filesoutput)-$f_i>$f_messonpage) { $f_till=$f_i+$f_messonpage; } else { $f_till=count($filesoutput); $f_i=$_GET['pagenum']*$f_messonpage; } while ($f_i<$f_till) { if (is_dir($f_for_relative."mess/".$filesoutput[$f_i])) { if ($forchangelines=="one") { echo $f_pre; $forchangelines="two"; } else { echo $f_pre_two; $forchangelines="one"; } echo "<a href=?act=choosesubj&&id=".$filesoutput[$f_i]." class=f_link>"; $f_subj=stripslashes(file_get_contents($f_for_relative."mess/".$filesoutput[$f_i]."/topic.txt")); echo smilies($f_subj); echo "</a>"; echo $f_separ; echo substr($filesoutput[$f_i], 4, 2)."/".substr($filesoutput[$f_i], 6, 2)."/".substr($filesoutput[$f_i], 2, 2)." ".substr($filesoutput[$f_i], 8, 2).":".substr($filesoutput[$f_i], 10, 2).":".substr($filesoutput[$f_i], 12, 2); echo " by: "; echo stripslashes(file_get_contents($f_for_relative."mess/".$filesoutput[$f_i]."/addedby.txt")); if ($showemails=="yes") { echo " ("; echo stripslashes(file_get_contents($f_for_relative."mess/".$filesoutput[$f_i]."/email.txt")); echo ")"; } echo ","; echo " views: ".stripslashes(file_get_contents($f_for_relative."mess/".$filesoutput[$f_i]."/views.txt")); echo ","; unset($numofposts); unset($filearray); $scandir=$f_for_relative."mess/".$filesoutput[$f_i]."/mess"; get_dir_files(); $numofposts=count($filearray); echo " posts: "; echo $numofposts; echo $f_postinfoend; echo $f_after; } $f_i++; } echo $f_bottom; // start the pagenumbers links if (count($filesoutput)>$f_messonpage) { if ($_GET['pagenum']!=0) { $f_i_bef=0; while($f_i_bef<$_GET['pagenum']) { $f_i_toshow=$f_i_bef+1; echo "<a href=\"?act=subj&&pagenum=".$f_i_bef."\" class=f_pagenums>".$f_i_toshow."</a>"; $f_i_bef++; } } } echo $f_numofthispage; echo $_GET['pagenum']+1; echo $f_numofthispage_end; $f_pagenumnext=$_GET['pagenum']+1; if (count($filesoutput)>$f_messonpage*$f_pagenumnext) { $f_i_aft=$f_pagenumnext; while($f_i_aft*$f_messonpage<count($filesoutput)) { $f_i_toshow=$f_i_aft+1; echo "<a href=\"?act=subj&&pagenum=".$f_i_aft."\" class=f_pagenums>".$f_i_toshow."</a>"; $f_i_aft++; } } // end of the pagenumbers links // start new subject ?> <SCRIPT language=javascript> function validate() { if (add_subj.name.value == "") { alert("Your name, please!"); return false; } if (add_subj.email.value == "") { alert("Your email, please!"); return false; } if (add_subj.mess.value == "") { alert("And where is the subject?"); return false; } return true; } function smilies() { window.open("<? echo $f_for_relative;?>incl/opensmilies.php", "smilies", "toolbar=no, menubar=no, location=no, status=no, scrollbars=yes, width=20, height=500, left=100, top=200"); } </script> <? echo $f_postnewsubj; echo "<form action=\"".$f_for_relative."incl/addsubject.php\" method=post name=add_subj onsubmit=\"return validate();\" class=form_class>"; echo "<table><tr><td><font class=f_wordb4form>Name: </font></td><td><input type=text name=\"name\" class=f_text_form maxlength=22></td></tr>"; echo "<tr><td><font class=f_wordb4form>Email: </font></td><td><input type=text name=\"email\" class=f_text_form maxlength=50></td></tr>"; echo "<tr><td><font class=f_wordb4form>Message:</font></td><td><textarea class=addsubj name=mess>Your subject goes here</textarea><a href=\"javascript: smilies();\" class=smilies_link>".$f_smilies."</a></td></tr>"; echo "<tr><td>&nbsp;</td><td><input type=submit value=\"Add Subject\" class=f_submit_button></td></tr></table>"; echo "</font>"; // \"#\" onClick= // end of new subject // END OF SHOW TOPICS } if ($_GET['act']=="choosesubj") { // START OF SHOW POSTINGS echo str_replace("<!-- don't change this comment -->", "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'], $f_beforeposttable); $postviews=file_get_contents($f_for_relative."mess/".$_GET['id']."/views.txt"); $postviews++; $inputfp=fopen($f_for_relative."mess/".$_GET['id']."/views.txt", "w"); $inputnew=fputs($inputfp, $postviews); fclose($inputfp); echo $f_top; echo $f_pre; echo $f_posts_pre; $f_subj=stripslashes(file_get_contents($f_for_relative."mess/".$_GET['id']."/topic.txt")); echo smilies($f_subj); echo $f_posts_after; echo $f_separ; echo substr($_GET['id'], 4, 2)."/".substr($_GET['id'], 6, 2)."/".substr($_GET['id'], 2, 2)." ".substr($_GET['id'], 8, 2).":".substr($_GET['id'], 10, 2).":".substr($_GET['id'], 12, 2); echo " by: "; echo stripslashes(file_get_contents($f_for_relative."mess/".$_GET['id']."/addedby.txt")); if ($showemails=="yes") { echo " ("; echo stripslashes(file_get_contents($f_for_relative."mess/".$_GET['id']."/email.txt")); echo ")"; } echo ","; echo " views: ".stripslashes(file_get_contents($f_for_relative."mess/".$_GET['id']."/views.txt")); echo ","; unset($numofposts); unset($filearray); unset($numofposts); $scandir=$f_for_relative."mess/".$_GET['id']."/mess/"; get_dir_files(); $numofposts=count($filearray); echo " posts: "; echo $numofposts; echo $f_postinfoend; echo $f_after; unset($filearray); unset($filesoutput); unset($numofposts); $scandir=$f_for_relative."mess/".$_GET['id']."/mess"; get_dir_files(); $filesoutput=$filearray; @sort($filesoutput); $filesoutput=@array_reverse($filesoutput); $f_i=$_GET['pagenum']*$f_messonpage; if (count($filesoutput)-$f_i>$f_messonpage) { $f_till=$f_i+$f_messonpage; } else { $f_till=count($filesoutput); $f_i=$_GET['pagenum']*$f_messonpage; } while ($f_i<$f_till) { echo $f_pre_two; echo $f_postr_pre; $f_subj=stripslashes(file_get_contents($f_for_relative."mess/".$_GET['id']."/mess/".$filesoutput[$f_i]."/mess.txt")); echo smilies($f_subj); echo $f_postr_after; echo $f_separ; echo substr($filesoutput[$f_i], 4, 2)."/".substr($filesoutput[$f_i], 6, 2)."/".substr($filesoutput[$f_i], 2, 2)." ".substr($filesoutput[$f_i], 8, 2).":".substr($filesoutput[$f_i], 10, 2).":".substr($filesoutput[$f_i], 12, 2); echo " by: "; echo stripslashes(file_get_contents($f_for_relative."mess/".$_GET['id']."/mess/".$filesoutput[$f_i]."/addedby.txt")); if ($showemails=="yes") { echo " ("; echo stripslashes(file_get_contents($f_for_relative."mess/".$_GET['id']."/mess/".$filesoutput[$f_i]."/email.txt")); echo ")"; } echo $f_postinfoend; echo $f_after; $f_i++; } echo $f_bottom; // start the pagenumbers links if (count($filesoutput)>$f_messonpage) { if ($_GET['pagenum']!=0) { $f_i_bef=0; while($f_i_bef<$_GET['pagenum']) { $f_i_toshow=$f_i_bef+1; echo "<a href=\"?act=choosesubj&&id=".$_GET['id']."&&pagenum=".$f_i_bef."\" class=f_pagenums>".$f_i_toshow."</a>"; $f_i_bef++; } } } echo $f_numofthispage; echo $_GET['pagenum']+1; echo $f_numofthispage_end; $f_pagenumnext=$_GET['pagenum']+1; if (count($filesoutput)>$f_messonpage*$f_pagenumnext) { $f_i_aft=$f_pagenumnext; while($f_i_aft*$f_messonpage<count($filesoutput)) { $f_i_toshow=$f_i_aft+1; echo "<a href=\"?act=choosesubj&&id=".$_GET['id']."&&pagenum=".$f_i_aft."\" class=f_pagenums>".$f_i_toshow."</a>"; $f_i_aft++; } } // end of the pagenumbers links echo str_replace("<!-- don't change this comment -->", "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'], $f_afterposttable); // start new post ?> <SCRIPT language=javascript> function validate() { if (add_subj.name.value == "") { alert("Your name, please!"); return false; } if (add_subj.email.value == "") { alert("Your email, please!"); return false; } if (add_subj.mess.value == "") { alert("And where is the subject?"); return false; } return true; } function smilies() { window.open("<? echo $f_for_relative;?>incl/opensmilies.php", "smilies", "toolbar=no, menubar=no, location=no, status=no, scrollbars=yes, width=20, height=500, left=100, top=200"); } </script> <? echo $f_postnewreply; echo "<form action=\"".$f_for_relative."incl/addpost.php\" method=post name=add_subj onsubmit=\"return validate();\" class=form_class>"; echo "<table><tr><td><font class=f_wordb4form>Name: </font></td><td><input type=text name=\"name\" class=f_text_form maxlength=22></td></tr>"; echo "<tr><td><font class=f_wordb4form>Email: </font></td><td><input type=text name=\"email\" class=f_text_form maxlength=50></td></tr>"; echo "<tr><td><font class=f_wordb4form>Message: </font></td><td><textarea class=addsubj name=mess>Your reply goes here</textarea><a href=\"javascript: smilies();\" class=smilies_link>Smilies</a></td></tr>"; echo "<input type=hidden name=id value=".$_GET['id'].">"; echo "<tr><td>&nbsp;</td><td><input type=submit value=\"Post a Reply\" class=f_submit_button></td></tr></table>"; echo "</form>"; // end of new post //END OF SHOW POSTINGS } ?> Файл connect.inc. Цей файл ─ це PHP-скрипт який додає відповідь на вибрану тему. <? $MessLength=trim(file_get_contents("../conf/replylength.txt")); $err[1] = "Invalid e-mail"; $err[2] = "The subject cannot be longer than ".$MessLength." characters!"; function output_err($num) { global $err; ?> <center><h1>Error!</h1></center> <p><?=$err[$num];?> <? exit(); } if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email'])) { output_err(1); } $_POST['email']=substr($_POST['email'], 0, 50); if (trim(file_get_contents("../conf/safeemails.txt"))=="yes") { $_POST['email']=str_replace("@"," at ",$_POST['email']); $_POST['email']=str_replace("."," dot ",$_POST['email']); } $_POST['name']=strip_tags($_POST['name']); $tagsallowedarr=file("../conf/tagsallowed.txt"); $tagsallowedstr=implode(", ", $tagsallowedarr); $_POST['mess']=strip_tags($_POST['mess'], $tagsallowedstr); $_POST['mess']=str_replace("\n","<br>",$_POST['mess']); if (strlen($_POST['mess'])>$MessLength) output_err(2); $_POST['name']=substr($_POST['name'], 0, 22); $mess_time="20".date('y').date('m').date('d').date('H').date('i').date('s'); mkdir("../mess/".$_POST['id']."/mess/".$mess_time); include("badwords.php"); $_POST['mess']=badwords($_POST['mess']); // For size of mess dir; $sizeformessdir=0; $sizeformessdir=strlen($_POST['name'])+strlen($_POST['email'])+strlen($_POST['mess']); if (!file_exists("../conf/sizeofmessdir.txt")) { $fp = fopen("../conf/sizeofmessdir.txt", "w"); $buffer = fputs($fp, "0"); fclose($fp); } $sizeformessdir=$sizeformessdir+file_get_contents("../conf/sizeofmessdir.txt"); $fp = fopen("../conf/sizeofmessdir.txt", "w"); $buffer = fputs($fp, $sizeformessdir); fclose($fp); // For size of mess dir END; $fp = fopen("../mess/".$_POST['id']."/mess/".$mess_time."/addedby.txt", "w"); $buffer = fputs($fp, $_POST['name']); fclose($fp); $fp = fopen("../mess/".$_POST['id']."/mess/".$mess_time."/email.txt", "w"); $buffer = fputs($fp, $_POST['email']); fclose($fp); $fp = fopen("../mess/".$_POST['id']."/mess/".$mess_time."/mess.txt", "w"); $buffer = fputs($fp, $_POST['mess']); fclose($fp); $if_notifyarr=file("../conf/notifynewreply.txt"); if (trim($if_notifyarr[0])=="yes") { $messtomail=substr($mess_time, 4, 2)."/".substr($mess_time, 6, 2)."/".substr($mess_time, 2, 2)." ".substr($mess_time, 8, 2).":".substr($mess_time, 10, 2).":".substr($mess_time, 12, 2)." ".$_POST['name']."(".$_POST['email']."): ".$_POST['mess']; if (trim($if_notifyarr[2])-17<strlen($messtomail)) { $messtomail=substr($messtomail, 0, $if_notifyarr[2]-20).".."; } $messtomail=stripslashes($messtomail); mail($if_notifyarr[1], "New forum reply added", $messtomail); } $backlocation= $_SERVER['HTTP_REFERER']; if (headers_sent()) { echo "The reply has been saved<br><form action=".$backlocation." method=get><input type=submit value=\"Go to forum\"</form>"; } else { header("Location: ".$backlocation); } ?> Файл addsubject.php. Цей файл ─ це PHP-скрипт який додає нову тему. <? $MessLength=trim(file_get_contents("../conf/messlength.txt")); $err[1] = "Invalid e-mail"; $err[2] = "The subject cannot be longer than ".$MessLength." characters!"; function output_err($num) { global $err; ?> <center><h1>Error!</h1></center> <p><?=$err[$num];?> <? exit(); } if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email'])) { output_err(1); } $_POST['email']=substr($_POST['email'], 0, 50); if (trim(file_get_contents("../conf/safeemails.txt"))=="yes") { $_POST['email']=str_replace("@"," at ",$_POST['email']); $_POST['email']=str_replace("."," dot ",$_POST['email']); } $_POST['name']=strip_tags($_POST['name']); $tagsallowedarr=file("../conf/tagsallowed.txt"); $tagsallowedstr=implode(", ", $tagsallowedarr); $_POST['mess']=strip_tags($_POST['mess'], $tagsallowedstr); $_POST['mess']=str_replace("\n","<br>",$_POST['mess']); if (strlen($_POST['mess'])>$MessLength) output_err(2); $_POST['name']=substr($_POST['name'], 0, 22); include("badwords.php"); $_POST['mess']=badwords($_POST['mess']); // For size of mess dir; $sizeformessdir=0; $sizeformessdir=strlen($_POST['name'])+strlen($_POST['email'])+strlen($_POST['mess'])+6; if (!file_exists("../conf/sizeofmessdir.txt")) { $fp = fopen("../conf/sizeofmessdir.txt", "w"); $buffer = fputs($fp, "0"); fclose($fp); } $sizeformessdir=$sizeformessdir+file_get_contents("../conf/sizeofmessdir.txt"); $fp = fopen("../conf/sizeofmessdir.txt", "w"); $buffer = fputs($fp, $sizeformessdir); fclose($fp); // For size of mess dir END; if (file_get_contents("../conf/sizeofmessdir.txt")>file_get_contents("../conf/maxsizeofmessdir.txt")) { include("messdircleanup.php"); } $mess_time="20".date('y').date('m').date('d').date('H').date('i').date('s'); mkdir("../mess/".$mess_time); mkdir("../mess/".$mess_time."/mess"); $fp = fopen("../mess/".$mess_time."/addedby.txt", "w"); $buffer = fputs($fp, $_POST['name']); fclose($fp); $fp = fopen("../mess/".$mess_time."/email.txt", "w"); $buffer = fputs($fp, $_POST['email']); fclose($fp); $fp = fopen("../mess/".$mess_time."/topic.txt", "w"); $buffer = fputs($fp, $_POST['mess']); fclose($fp); $fp = fopen("../mess/".$mess_time."/views.txt", "w"); $buffer = fputs($fp, "0"); fclose($fp); $if_notifyarr=file("../conf/notifynewsubj.txt"); if (trim($if_notifyarr[0])=="yes") { $messtomail=substr($mess_time, 4, 2)."/".substr($mess_time, 6, 2)."/".substr($mess_time, 2, 2)." ".substr($mess_time, 8, 2).":".substr($mess_time, 10, 2).":".substr($mess_time, 12, 2)." ".$_POST['name']."(".$_POST['email']."): ".$_POST['mess']; if (trim($if_notifyarr[2])-17<strlen($messtomail)) { $messtomail=substr($messtomail, 0, $if_notifyarr[2]-20).".."; } $messtomail=stripslashes($messtomail); mail($if_notifyarr[1], "New forum subject", $messtomail); } $nogets=explode("?", $_SERVER['HTTP_REFERER']); $backlocation=$nogets[0]; if (headers_sent()) { echo "The new subject has been saved<br><form action=".$backlocation." method=get><input type=submit value=\"Go to forum\"</form>"; } else { header("Location: ".$backlocation); } ?> Файл badwords.php. Цей файл ─ це PHP-скрипт, який виконує перевірку на погані слова і заміняє їх заданими альтернативами. <? function badwords($checkthis) { $badwords_arr=file("../conf/badwords.txt"); $i_badw=0; while ($i_badw<count($badwords_arr)) { $badwords_arr[$i_badw]=trim($badwords_arr[$i_badw]); $i_badw++; } $replwith=trim(file_get_contents("../conf/badwordsrepl.txt")); $checked=str_replace($badwords_arr, $replwith, $checkthis); return $checked; } ?> Файл index.php. Цей файл забезпечує перегляд списку тем і показує список 20 тем по сторінках. Читає дані з таблиці topics. В кінці сторінки є форма для вводу нової теми, яка викликає скрипт newtopic.php. <? include("scandir.php"); function fixthemessdirsize($whatfile) { $alreadymessdirsize=file_get_contents("../conf/sizeofmessdir.txt"); $newmessdirsize=$alreadymessdirsize-filesize($whatfile); $fp = fopen("../conf/sizeofmessdir.txt", "w"); $buffer = fputs($fp, $newmessdirsize); fclose($fp); unlink($whatfile); } function cleanmess($dir) { if($objs = glob($dir."/*")){ foreach($objs as $obj) { is_dir($obj)? cleanmess($obj) : fixthemessdirsize($obj); } } rmdir($dir); } while (file_get_contents("../conf/sizeofmessdir.txt")>file_get_contents("../conf/maxsizeofmessdir.txt")) { $scandir="../mess/"; get_dir_files(); $filearray=array_reverse($filearray); $numofoldestdir=count($filearray)-1; $oldestdir=$filearray[$numofoldestdir]; cleanmess("../mess/".$oldestdir); } Файл messdircleanup.php. Цей файл виконує очистку папки з повідомленнями. <? include("scandir.php"); function fixthemessdirsize($whatfile) { $alreadymessdirsize=file_get_contents("../conf/sizeofmessdir.txt"); $newmessdirsize=$alreadymessdirsize-filesize($whatfile); $fp = fopen("../conf/sizeofmessdir.txt", "w"); $buffer = fputs($fp, $newmessdirsize); fclose($fp); unlink($whatfile); } function cleanmess($dir) { if($objs = glob($dir."/*")){ foreach($objs as $obj) { is_dir($obj)? cleanmess($obj) : fixthemessdirsize($obj); } } rmdir($dir); } while (file_get_contents("../conf/sizeofmessdir.txt")>file_get_contents("../conf/maxsizeofmessdir.txt")) { $scandir="../mess/"; get_dir_files(); $filearray=array_reverse($filearray); $numofoldestdir=count($filearray)-1; $oldestdir=$filearray[$numofoldestdir]; cleanmess("../mess/".$oldestdir); } Файл opensmiles.php. Цей фал вставляє потрібне позначення смайлика. <SCRIPT language=javascript> function dosmile(smilecode) { window.opener.document.add_subj.mess.value=window.opener.document.add_subj.mess.value+smilecode; window.opener.set_focus(); return false; } </script> <? $smiliestype=trim(file_get_contents("../conf/smilies.txt")); include("../templ/smilies/".$smiliestype."/codes.txt"); $sm_type=array_keys($smilies); $sm_i=0; while ($sm_i<count($smilies)) { echo "<a href=\"javascript: dosmile('".$sm_type[$sm_i]."')\"><img src=\"../templ/smilies/".$smiliestype."/img/".$smilies[$sm_type[$sm_i]]."\" border=0></a><br>"; $sm_i++; } ?> Файл security.php. Цей файл сканує вміст заданої папки ї записує отримані дані в масив. <? function get_dir_files() { global $filearray, $scandir, $messdir, $magicpath; $i=0; if ($handle = opendir($scandir)) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $filearray[$i]=$file; $i++; } } closedir($handle); } @sort($filearray); } ?> Файл smilies.php. Цей файл заміняє позначення смайлика на сам малюнок. body { margin: 20px; background-image: url(background.gif); } A:link {color: #3333FF}: visited {color: #333366}:active {color: #0000CC} .lbg { border-bottom: 1px solid #EEE; border-left: 1px solid #EEE; } .fld { border: 1px outset #CCC; background-color: #FFF; } .bbl { border-bottom: 1px solid #CCC; border-left: 1px solid #CCC; } .tbl { border-top: 1px solid #CCC; border-left: 1px solid #EEE; } .btn { border: 1px solid #999; background-color: #EEE; } Файл manageposts.php. Цей файл використовується при адмініструванні для видалення тем чи відповідей. <? if (!empty($_POST['pass'])) { $_SESSION['pass']=$_POST['pass']; } include("conf/pass.php"); if (!empty($_SESSION['pass'])) { if ($_SESSION['pass']==$goodpass) { $forchangelines="one"; $showemails=trim(file_get_contents($f_for_relative."conf/showemails.txt")); include($f_for_relative."incl/scandir.php"); include($f_for_relative."incl/smilies.php"); if (empty($_GET['pagenum'])) { $_GET['pagenum']=0; } echo "<link href=\"".$f_for_relative."templ/styles/".file_get_contents($f_for_relative."conf/css.txt").".css\" type=text/css rel=stylesheet>"; $layarr=file($f_for_relative."templ/layouts/".file_get_contents($f_for_relative."conf/layout.txt").".txt"); $f_top=$layarr[1]; $f_pre=$layarr[3]; $f_pre_two=$layarr[5]; $f_after=$layarr[7]; $f_bottom=$layarr[9]; $f_separ=$layarr[11]; $f_postinfoend=$layarr[13]; $f_posts_pre=$layarr[15]; $f_posts_after=$layarr[17]; $f_postr_pre=$layarr[19]; $f_postr_after=$layarr[21]; $f_beforeposttable=$layarr[23]; $f_afterposttable=$layarr[25]; $f_numofthispage=$layarr[27]; $f_numofthispage_end=$layarr[29]; $f_postnewsubj=$layarr[31]; $f_postnewreply=$layarr[33]; $f_smilies=$layarr[35]; if (empty($_GET['f_man_act'])) { $_GET['f_man_act']="subj"; } if ($_GET['f_man_act']=="subj") { echo "Subjects<br>"; } else { echo "Replies<br>"; } $f_messonpage=file_get_contents($f_for_relative."conf/messonpage.txt"); if ($_GET['f_man_act']=="subj") { // SHOW TOPICS START echo "<form action=\"?act=del_subj\" method=post name=form_del_subj>"; echo $f_top; $scandir=$f_for_relative."mess"; get_dir_files(); $filesoutput=$filearray; @sort($filesoutput); $filesoutput=@array_reverse($filesoutput); $f_i=$_GET['pagenum']*$f_messonpage; if (count($filesoutput)-$f_i>$f_messonpage) { $f_till=$f_i+$f_messonpage; } else { $f_till=count($filesoutput); $f_i=$_GET['pagenum']*$f_messonpage; } $try_this_arr=Array(); while ($f_i<$f_till) { if (is_dir($f_for_relative."mess/".$filesoutput[$f_i])) { if ($forchangelines=="one") { echo $f_pre; $forchangelines="two"; } else { echo $f_pre_two; $forchangelines="one"; } echo "<input type=checkbox name=del_this_thing-".$filesoutput[$f_i].">"; echo "<a href=?act=manageposts&&f_man_act=choosesubj&&id=".$filesoutput[$f_i]." class=f_link>"; $f_subj=stripslashes(file_get_contents($f_for_relative."mess/".$filesoutput[$f_i]."/topic.txt")); echo smilies($f_subj); echo "</a>"; echo $f_separ; echo substr($filesoutput[$f_i], 4, 2)."/".substr($filesoutput[$f_i], 6, 2)."/".substr($filesoutput[$f_i], 2, 2)." ".substr($filesoutput[$f_i], 8, 2).":".substr($filesoutput[$f_i], 10, 2).":".substr($filesoutput[$f_i], 12, 2); echo " by: "; echo stripslashes(file_get_contents($f_for_relative."mess/".$filesoutput[$f_i]."/addedby.txt")); if ($showemails=="yes") { echo " ("; echo stripslashes(file_get_contents($f_for_relative."mess/".$filesoutput[$f_i]."/email.txt")); echo ")"; } echo ","; echo " views: ".stripslashes(file_get_contents($f_for_relative."mess/".$filesoutput[$f_i]."/views.txt")); echo ","; unset($numofposts); unset($filearray); $scandir=$f_for_relative."mess/".$filesoutput[$f_i]."/mess"; get_dir_files(); $numofposts=count($filearray); echo " posts: "; echo $numofposts; echo $f_postinfoend; echo $f_after; } $f_i++; } echo $f_bottom; // start the pagenumbers links if (count($filesoutput)>$f_messonpage) { if ($_GET['pagenum']!=0) { $f_i_bef=0; while($f_i_bef<$_GET['pagenum']) { $f_i_toshow=$f_i_bef+1; echo "<a href=\"?act=manageposts&&f_man_act=subj&&pagenum=".$f_i_bef."\" class=f_pagenums>".$f_i_toshow."</a>"; $f_i_bef++; } } } echo $f_numofthispage; echo $_GET['pagenum']+1; echo $f_numofthispage_end; $f_pagenumnext=$_GET['pagenum']+1; if (count($filesoutput)>$f_messonpage*$f_pagenumnext) { $f_i_aft=$f_pagenumnext; while($f_i_aft*$f_messonpage<count($filesoutput)) { $f_i_toshow=$f_i_aft+1; echo "<a href=\"?act=manageposts&&f_man_act=subj&&pagenum=".$f_i_aft."\" class=f_pagenums>".$f_i_toshow."</a>"; $f_i_aft++; } } // end of the pagenumbers links echo "<br><input type=submit value=\"Delete checked subjects\">"; // echo "<input type=hidden value=".$arr_to_del." name=post_arr>"; echo "</form>"; // END OF SHOW TOPICS } if ($_GET['f_man_act']=="choosesubj") { // START OF SHOW POSTINGS echo "<form action=\"?act=del_reply\" method=post name=form_del_reply>"; $postviews=file_get_contents($f_for_relative."mess/".$_GET['id']."/views.txt"); $postviews++; $inputfp=fopen($f_for_relative."mess/".$_GET['id']."/views.txt", "w"); $inputnew=fputs($inputfp, $postviews); fclose($inputfp); echo $f_top; echo $f_pre; echo $f_posts_pre; $f_subj=stripslashes(file_get_contents($f_for_relative."mess/".$_GET['id']."/topic.txt")); echo smilies($f_subj); echo $f_posts_after; echo $f_separ; echo substr($_GET['id'], 4, 2)."/".substr($_GET['id'], 6, 2)."/".substr($_GET['id'], 2, 2)." ".substr($_GET['id'], 8, 2).":".substr($_GET['id'], 10, 2).":".substr($_GET['id'], 12, 2); echo " by: "; echo stripslashes(file_get_contents($f_for_relative."mess/".$_GET['id']."/addedby.txt")); if ($showemails=="yes") { echo " ("; echo stripslashes(file_get_contents($f_for_relative."mess/".$_GET['id']."/email.txt")); echo ")"; } echo ","; echo " views: ".stripslashes(file_get_contents($f_for_relative."mess/".$_GET['id']."/views.txt")); echo ","; unset($numofposts); unset($filearray); unset($numofposts); $scandir=$f_for_relative."mess/".$_GET['id']."/mess/"; get_dir_files(); $numofposts=count($filearray); echo " posts: "; echo $numofposts; echo $f_postinfoend; echo $f_after; unset($filearray); unset($filesoutput); unset($numofposts); $scandir=$f_for_relative."mess/".$_GET['id']."/mess"; get_dir_files(); $filesoutput=$filearray; @sort($filesoutput); $filesoutput=@array_reverse($filesoutput); $f_i=$_GET['pagenum']*$f_messonpage; if (count($filesoutput)-$f_i>$f_messonpage) { $f_till=$f_i+$f_messonpage; } else { $f_till=count($filesoutput); $f_i=$_GET['pagenum']*$f_messonpage; } $try_this_arr=Array(); while ($f_i<$f_till) { echo $f_pre_two; echo $f_postr_pre; echo "<input type=checkbox name=del_this_thing-".$filesoutput[$f_i].">"; $f_subj=stripslashes(file_get_contents($f_for_relative."mess/".$_GET['id']."/mess/".$filesoutput[$f_i]."/mess.txt")); echo smilies($f_subj); echo $f_postr_after; echo $f_separ; echo substr($filesoutput[$f_i], 4, 2)."/".substr($filesoutput[$f_i], 6, 2)."/".substr($filesoutput[$f_i], 2, 2)." ".substr($filesoutput[$f_i], 8, 2).":".substr($filesoutput[$f_i], 10, 2).":".substr($filesoutput[$f_i], 12, 2); echo " by: "; echo stripslashes(file_get_contents($f_for_relative."mess/".$_GET['id']."/mess/".$filesoutput[$f_i]."/addedby.txt")); if ($showemails=="yes") { echo " ("; echo stripslashes(file_get_contents($f_for_relative."mess/".$_GET['id']."/mess/".$filesoutput[$f_i]."/email.txt")); echo ")"; } echo $f_postinfoend; echo $f_after; $f_i++; } echo $f_bottom; // start the pagenumbers links if (count($filesoutput)>$f_messonpage) { if ($_GET['pagenum']!=0) { $f_i_bef=0; while($f_i_bef<$_GET['pagenum']) { $f_i_toshow=$f_i_bef+1; echo "<a href=\"?act=manageposts&&f_man_act=choosesubj&&id=".$_GET['id']."&&pagenum=".$f_i_bef."\" class=f_pagenums>".$f_i_toshow."</a>"; $f_i_bef++; } } } echo $f_numofthispage; echo $_GET['pagenum']+1; echo $f_numofthispage_end; $f_pagenumnext=$_GET['pagenum']+1; if (count($filesoutput)>$f_messonpage*$f_pagenumnext) { $f_i_aft=$f_pagenumnext; while($f_i_aft*$f_messonpage<count($filesoutput)) { $f_i_toshow=$f_i_aft+1; echo "<a href=\"?act=manageposts&&f_man_act=choosesubj&&id=".$_GET['id']."&&pagenum=".$f_i_aft."\" class=f_pagenums>".$f_i_toshow."</a>"; $f_i_aft++; } } // end of the pagenumbers links echo "<br><input type=submit value=\"Delete checked replies\">"; echo "<input type=hidden name=subj_id value=\"".$_GET['id']."\">"; echo "</form>"; //END OF SHOW POSTINGS } // password check end } } ?> Файл index.php. Цей файл виконує виводить вікно для перевірки пароля адміністратора <? session_start(); session_destroy(); session_unset(); ?> <html> <head> </head> <body> <center> <form action="manage.php" method=post> Password: <input type=password name="pass"><br> <input type=submit value="Enter"> </form> </center> </body> </html> Файл manage.php. Цей файл призначений для адміністрування форуму. <? session_start(); if (!empty($_POST['pass'])) { $_SESSION['pass']=$_POST['pass']; } include("conf/pass.php"); function commonhead() { ?> <html> <head> <title> Forum admin manager </title> </head> <body> <center> <link href="img/style.css" type=text/css rel=stylesheet> <table border=0 cellspacing=5> <tr> <td> <a href="manage.php?act=changepassform">Change password</a> </td> <td> <a href="manage.php?act=gensettings">General Settings</a> </td> <td> <a href="manage.php?act=appear">Appearence</a> </td> <td> <a href="manage.php?act=manageposts">Manage Posts</a> </td> <td> <a href="index.php">Log out</a> </td> </tr> </table> <? } function commonend() { ?> <br> </center> </body> </html> <? } if (!empty($_SESSION['pass'])) { if ($_SESSION['pass']==$goodpass) { // FUNCTIONS function rmdirr($dir) { if($objs = glob($dir."/*")){ foreach($objs as $obj) { is_dir($obj)? rmdirr($obj) : unlink($obj); } } rmdir($dir); } //Show default page in "admin" mode if (empty($_GET['act'])) { $_GET['act']="appear"; } if ($_GET['act']=="appear") { commonhead(); include("../incl/scandir.php"); ?> Change layout and style of your forum.<br> <? if (!empty($_POST['submit1'])) { $_POST['submit']=$_POST['submit1']; } // Activate layout Start: if (!empty($_POST['submit']) && $_POST['submit']=="Activate") { $fp = fopen("../conf/layout.txt", "w"); $buffer = fputs($fp, trim($_POST['ch_layout'])); fclose($fp); echo "Active layout is: \"".trim($_POST['ch_layout'])."\"<br>"; } // Activate layout End. // Activate style Start: if (!empty($_POST['submit']) && $_POST['submit']=="Activate Style") { $fp = fopen("../conf/css.txt", "w"); $buffer = fputs($fp, trim($_POST['ch_style'])); fclose($fp); echo "Active style is: \"".trim($_POST['ch_style'])."\"<br>"; } // Activate style End. // Delete layout Start: if (!empty($_POST['submit']) && $_POST['submit']=="Delete") { unlink("../templ/layouts/".$_POST['ch_layout'].".txt"); echo "The lyout \"".trim($_POST['ch_layout'])."\" has been deleted<br>"; // Delete layout End. // Delete style Start: if (!empty($_POST['submit']) && $_POST['submit']=="Delete Style") { unlink("../templ/styles/".$_POST['ch_style'].".css"); echo "The style \"".trim($_POST['ch_style'])."\" has been deleted<br>"; } // Delete style End. // Edit through Copy Layout Start: if (!empty($_POST['submit']) && $_POST['submit']=="Edit through copy") { $forcopyl=explode("_", $_POST['ch_layout']); $n_l_arr=$forcopyl; $i_newname=0; $new_layout_n=$_POST['ch_layout']; while (file_exists("../templ/layouts/".$new_layout_n.".txt")) { if (count($forcopyl)==1) { $new_layout_n=$_POST['ch_layout']."_".$i_newname; } else { // $sub_untill=strlen($_POST['ch_layout'])-strlen($forcopyl[count($forcopyl)-1]); // $new_layout_n=substr($_POST['ch_layout'], 0, $sub_untill)."_".$i_newname; $n_l_arr[count($n_l_arr)-1]=$i_newname; $new_layout_n=implode("_", $n_l_arr); // $new_layout_n=implode("_", $new_layout_n); } $i_newname++; } copy("../templ/layouts/".$_POST['ch_layout'].".txt", "../templ/layouts/".$new_layout_n.".txt"); ?> <form action="manage.php?act=appear" method=post name="form"> <input type=hidden name="submit1" value="Edit"> <input type=hidden name="ch_layout" value="<? echo $new_layout_n; ?>"> <input type=submit value="Click here to go to the next step" name=hmm> </form> <script language=javascript> function subm() { document.form.submit(); } subm(); </script> <? echo "You want to copy this layout \"".trim($_POST['ch_layout'])."\"<br>"; } // Edit through Copy Layout End. // Edit through Copy Style Start: if (!empty($_POST['submit']) && $_POST['submit']=="Edit Style through copy") { $forcopyl=explode("_", $_POST['ch_style']); $n_l_arr=$forcopyl; $i_newname=0; $new_style_n=$_POST['ch_style']; while (file_exists("../templ/styles/".$new_style_n.".css")) { if (count($forcopyl)==1) { $new_style_n=$_POST['ch_style']."_".$i_newname; } else { // $sub_untill=strlen($_POST['ch_style'])-strlen($forcopyl[count($forcopyl)-1]); // $new_style_n=substr($_POST['ch_style'], 0, $sub_untill)."_".$i_newname; $n_l_arr[count($n_l_arr)-1]=$i_newname; $new_style_n=implode("_", $n_l_arr); // $new_style_n=implode("_", $new_style_n); } $i_newname++; } copy("../templ/styles/".$_POST['ch_style'].".css", "../templ/styles/".$new_style_n.".css"); ?> <form action="manage.php?act=appear" method=post name="form"> <input type=hidden name="submit1" value="Edit Style"> <input type=hidden name="ch_style" value="<? echo $new_style_n; ?>"> <input type=submit value="Click here to go to the next step" name=hmm> </form> <script language=javascript> function subm() { document.form.submit(); } subm(); </script> <? echo "You want to copy this style \"".trim($_POST['ch_style'])."\"<br>"; } // Edit through Copy Style End. // Save Layout Start: if (!empty($_POST['submit']) && $_POST['submit']=="Save changes to this layout") { // get the array with sv_lt_arr_.. names $i_postarr=0; $i_narr=0; while ($i_postarr<count($_POST)) { if (key_exists("sv_lt_arr_".$i_postarr, $_POST)) { $sv_lt_newarr[$i_narr]=str_replace("\n", "", stripslashes($_POST["sv_lt_arr_".$i_postarr])); if ($sv_lt_newarr[$i_narr]=="") { $sv_lt_newarr[$i_narr]=" "; } $i_narr++; } $i_postarr++; } $lt_input=implode("\n", $sv_lt_newarr); $fp = fopen("../templ/layouts/".$_POST['layout_name'].".txt", "w"); $buffer = fputs($fp, $lt_input); fclose($fp); echo "Save layout<br>"; } // Save Layout End. // Save Style Start: if (!empty($_POST['submit']) && $_POST['submit']=="Save changes to this style") { $st_input=$_POST['sv_st']; $fp = fopen("../templ/styles/".$_POST['style_name'].".css", "w"); $buffer = fputs($fp, $st_input); fclose($fp); echo "Changes to this style have been saved.<br>"; } // Save Style End. if (empty($_POST['submit']) || $_POST['submit']!="Edit" && $_POST['submit']!="Edit Style") { // to protect from Edit; // Layouts line start $scandir="../templ/layouts"; get_dir_files(); ?> <form action="manage.php?act=appear" method=post> <? $i_am=0; echo "Current active layout: <select name=ch_layout>"; $for_selctd_check=trim(file_get_contents("../conf/layout.txt")); while ($i_am<count($filearray)) { echo "<option"; if ($for_selctd_check==basename($filearray[$i_am], ".txt")) echo " selected"; echo ">"; echo basename($filearray[$i_am], ".txt"); echo "</option>"; $i_am++; } echo "</select>"; echo "<input type=submit name=submit value=\"Activate\" class=f_submit_b>"; echo "<input type=submit name=submit value=\"Edit through copy\" class=f_submit_b>"; echo "<input type=submit name=submit value=\"Edit\" class=f_submit_b>"; echo "<input type=submit name=submit value=\"Delete\" class=f_submit_b>"; echo "</form>"; // Layouts line end // Styles line start $scandir="../templ/styles"; get_dir_files(); ?> <form action="manage.php?act=appear" method=post> <? $i_am=0; echo "Current active style: <select name=ch_style>"; $for_selctd_check=trim(file_get_contents("../conf/css.txt")); while ($i_am<count($filearray)) { echo "<option"; if ($for_selctd_check==basename($filearray[$i_am], ".css")) echo " selected"; echo ">"; echo basename($filearray[$i_am], ".css"); echo "</option>"; $i_am++; } echo "</select>"; echo "<input type=submit name=submit value=\"Activate Style\" class=f_submit_b>"; echo "<input type=submit name=submit value=\"Edit Style through copy\" class=f_submit_b>"; echo "<input type=submit name=submit value=\"Edit Style\" class=f_submit_b>"; echo "<input type=submit name=submit value=\"Delete Style\" class=f_submit_b>"; echo "</form>"; // Layouts line end commonend(); } // Edit Layout Start: if (!empty($_POST['submit']) && $_POST['submit']=="Edit") { $layout_ed_arr=file("../templ/layouts/".$_POST['ch_layout'].".txt"); echo "The name of the chosen layout is: \"".trim($_POST['ch_layout'])."\"<br>"; echo "The version of this layout is: ".$layout_ed_arr[0]."."; echo "<form action=\"manage.php?act=appear\" method=post>"; echo "<input type=hidden name=sv_lt_arr_0 value=\"".$layout_ed_arr[0]."\">";...
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!