Php >> Tablica ogłoszeń
Polimax

Drukarnia w Warszawie realizująca druk wizytówek, plakatów jak również fotoksiążki, fotoobrazy i fotokalendarze - z wysyłką na terenie całego kraju.

Opis

Użytkownik dysponujący hasłem redaguje komunikaty i ogłoszenia wprost na stronie. Może być kompletnym laikiem w zakresie tworzenia stron WWW. Jeżeli słyszałeś(aś) o platformach CMS to jest to właśnie taki prosty przykład. Edycja tablicy jest możliwa po wpisaniu hasła. Proszę zawrócić uwagę, że tak jak pozostałe projekty umieszczane w dziale "Php" tak i ten powstał tylko i wyłącznie na bazie CSS i php. Gwarantuje to przejrzystość kodu i pewne wykonanie w komputerze użytkownika bez względu na ustawienia przeglądarki.
W dniu 14.07.2013 zrobiłem kilka poprawek. Na listingach pokazanych poniżej te zmiany nie są widoczne, poprawione są pliki do pobrania.

W załączonym przykładzie hasłem jest "admin" i takie hasło zawsze jest zapisywane pomimo prób wpisywania przez użytkownika innego hasła. Plik do ściągnięca nie ma tego zabezpieczenia. Po ściągnięciu i rozpakowaniu mamy folder "tablica_ogloszen" który wrzucamy na naszą stronę, dajemy odnośnik <a href="tablica_ogloszen/tablica_ogloszen.php">Moje ogłoszenia</a> i już powinno wszystko działać. Jeszcze jedno - obecnie przycisk "Powrót" kieruje nas na stronę na której obecnie jesteś, więc należy wstawić własny adres w plikach "tablica_ogłoszeń.php" oraz "komunikat.php". Dopasuj całość do własnych wymagań, np. żeby ogłoszenia były pokazywane w div-ie przy zachowaniu szablonu strony, możesz ten przykład wykorzystać do stworzenia swojego systemu zarządzania treścią - własnego CMS, itd, itp.

W pliku "operacje.php":
<? php /* author:Józef Kańczugowski, www.teacher.webd.pl, Programy komputerowe dla nauczycieli, 12.02.2013 */ //text to/from file------------------------------------- function text_to_file($text) { $file_path='ogloszenia.txt'; @$plik=fopen($file_path,'w'); if (!$plik) return false; flock($plik, LOCK_EX); fwrite($plik,$text); flock($plik, LOCK_UN); fclose($plik); } function text_from_file() { $file_path='ogloszenia.txt'; if (!file_exists($file_path)) { text_to_file(' ');return ''; } @$plik=fopen($file_path,'r'); if (!$plik) return ''; flock($plik, LOCK_SH); $tekst_z_pliku=fread($plik, filesize($file_path)); flock($plik, LOCK_UN); fclose($plik); return trim($tekst_z_pliku); } //password----------------------------------- function pass_to_file($text_hash) { $file_path=$_SERVER['DOCUMENT_ROOT'].'/../ogloszenia_pass.txt'; @$plik=fopen($file_path,'w'); if (!$plik) return false; flock($plik, LOCK_EX); fwrite($plik,$text_hash); flock($plik, LOCK_UN); fclose($plik); return true; } function pass_ok($text) { $file_path=$_SERVER['DOCUMENT_ROOT'].'/../ogloszenia_pass.txt'; if (!file_exists($file_path)) { if (trim($text)==='') return true; else return false; } @$plik=fopen($file_path,'r'); if (!$plik) return false; flock($plik, LOCK_SH); $tekst_z_pliku=fread($plik, filesize($file_path)); flock($plik, LOCK_UN); fclose($plik); if (md5(trim($text)) === $tekst_z_pliku) return true; else return false; } //visitors------------------------------------- function id_visit() { return $_SERVER['REMOTE_ADDR'].$_SERVER["HTTP_USER_AGENT"].session_id(); } function visit_start() { $visit=array(); $visit[0]=id_visit();//ip $visit[1]='0';//"ogloszenia" editing or read only $visit[2]='1';//"pass_text1" enabled $visit[3]='0';//"pass_text2" enabled $visit[4]='1';//"wyslij" "OK" enabled $visit[5]='0';//"wyslij" "Zmień hasło" enabled $visit[6]='0';//"wyslij" "Zapisz zmiany" enabled return $visit; } function visit_data_transfer($visit1, & $visit2) { $visit2=array();if (count($visit1)===0) return; for ($i=0; $i < count($visit1);$i++) $visit2[$i]=$visit1[$i]; } function visit_index($visits,$ip)//in visits array { $c=count($visits); if ($c===0) return -1; for ($i=0;$i < $c;$i++) if ($visits[$i][0]===$ip) return $i; return -1; } function visit_data($visits,$ip) { $index=visit_index($visits,$ip); if ($index===-1) return visit_start(); visit_data_transfer($visits[$index],$result); return $result; } function visit_add($visit, & $visits)//to visits array { $index=visit_index($visits,$visit[0]); if ($index!==-1) { visit_data_transfer($visit,$visits[$index]); return; } if (count($visits) < 50) { visit_data_transfer($visit,$visits[count($visits)]); return; } for ($i=0;$i < 50;$i++) visit_data_transfer($visits[$i+1],$visits[$i]); visit_data_transfer($visit,$visits[count($visits1)-1]); } function visits_save($visits) { @$plik=fopen('wizyty.txt','w'); if (!$plik) return false; flock($plik, LOCK_EX); $text=''; if (count($visits) > 0) { $text=$text.(string)count($visits)."\n"; for ($i=0;$i < count($visits);$i++) { for ($j=0; $j < count($visits[$i]);$j++) { if ($j < count($visits[$i])-1) $text=$text.$visits[$i][$j].'|'; else $text=$text.$visits[$i][$j]."\n"; } } } else $text='0'; fwrite($plik,$text); flock($plik, LOCK_UN); fclose($plik); return true; } function visits_load( & $visits) { $visits=array(); if (!file_exists('wizyty.txt')) return false; @$plik=fopen('wizyty.txt','r'); if (!$plik) return false; flock($plik, LOCK_SH); $visits_count=(int)trim(fgets($plik,5)); if ($visits_count > 0) { for ($i=0;$i < $visits_count & & !feof($plik);$i++) { $linia_pliku=trim(fgets($plik,250)); $visit=explode('|',$linia_pliku); $visits[$i]=array(); for ($j=0;$j < =6;$j++) $visits[$i][$j]=$visit[$j]; } } flock($plik, LOCK_UN); fclose($plik); return true; } function message_show($nr) { if (!file_exists('komunikaty.txt')) return; @$plik=fopen('komunikaty.txt','r'); if (!$plik) return 0; flock($plik, LOCK_SH); $tekst_z_pliku=fread($plik, filesize('komunikaty.txt')); flock($plik, LOCK_UN); fclose($plik); $tab = explode('|',trim($tekst_z_pliku)); echo $tab[$nr-1]; return 1; } //values------------------------------- function start_values( & $visit, & $visits) { $ip=id_visit(); visits_load($visits); $visit=visit_data($visits,$ip); } function end_values( & $visit,$visits) { visit_add($visit, $visits); visits_save($visits); } //post------------------------------------------------------------------------ function pass1_button_click($visit,$visits) { if (!isset($_POST['wyslij'])) return false; if (!isset($_POST['pass_text1'])) return false; if ($_POST['wyslij']!=='OK') return false; $pass=$_POST['pass_text1']; if (!pass_ok($pass)) { header('location:komunikat.php ? id=1'); return false; } $visit[1]='1'; $visit[2]='1'; $visit[3]='1'; $visit[4]='0'; $visit[5]='1'; $visit[6]='1'; end_values($visit,$visits); header('location:komunikat.php ? id=2'); return true; } function pass2_button_click($visit,$visits) { if (!isset($_POST['pass_text1'])) return false; if (!isset($_POST['pass_text2'])) return false; if (!isset($_POST['wyslij'])) return false; if ($_POST['wyslij']!=='Zmień hasło') return false; $pass1=trim($_POST['pass_text1']); $pass2=trim($_POST['pass_text2']); if ($pass1!== $pass2) { header('location:komunikat.php ? id=3'); return false; } //$pass1='admin';//tylko w wersji pokazowej @$text_hash=md5(trim($pass1)); if (!$text_hash) { header('location:komunikat.php ? id=4'); return false; } if (!pass_to_file($text_hash)) { header('location:komunikat.php ? id=5'); return false; } $visit[1]='1'; $visit[2]='1'; $visit[3]='1'; $visit[4]='0'; $visit[5]='1'; $visit[6]='1'; end_values($visit,$visits); header('location:komunikat.php ? id=6'); return true; } function zapisz_zmiany_click($visit,$visits) { if (!isset($_POST['ogloszenia'])) return false; if ($visit[1]==='0') return false; if (!isset($_POST['wyslij'])) return false; if ($_POST['wyslij']!=='Zapisz zmiany') return false; $text=$_POST['ogloszenia']; text_to_file($text); $visit[1]='1'; $visit[2]='1'; $visit[3]='1'; $visit[4]='0'; $visit[5]='1'; $visit[6]='1'; end_values($visit,$visits); return true; } function home_button_click() { if (!isset($_POST['wyslij'])) return; if ($_POST['wyslij']!=='Powrót') return; header('location:http://www.teacher.webd.pl/tablica_ogloszen.php'); } //enabled disabled form components //text area---------------------- function text_area_show_enabled($visit) { if ($visit[1]==='1') echo ''; else echo ' readonly="readonly" '; } //text save button-------------- function text_save_button_show_enabled($visit) { if ($visit[6]==='1') echo ''; else echo ' disabled="disabled" '; } function text_save_button_color_enabled($visit) { if ($visit[6]==='1') echo ''; else echo ' style="background-color:gray" '; } //pass1 edit-------------- function pass1_edit_show_enabled($visit) { if ($visit[2]==='1') echo ''; else echo ' disabled="disabled" '; } function pass1_edit_color_enabled($visit) { if ($visit[2]==='1') echo ''; else echo ' style="background-color:gray" '; } //pass2 edit-------------- function pass2_edit_show_enabled($visit) { if ($visit[3]==='1') echo ''; else echo ' disabled="disabled" '; } function pass2_edit_color_enabled($visit) { if ($visit[3]==='1') echo ''; else echo ' style="background-color:gray" '; } //pass1 button-------------- function pass1_button_show_enabled($visit) { if ($visit[4]==='1') echo ''; else echo ' disabled="disabled" '; } function pass1_button_color_enabled($visit) { if ($visit[4]==='1') echo ''; else echo ' style="background-color:gray" '; } //pass2 button-------------- function pass2_button_show_enabled($visit) { if ($visit[5]==='1') echo ''; else echo ' disabled="disabled" '; } function pass2_button_color_enabled($visit) { if ($visit[5]==='1') echo ''; else echo ' style="background-color:gray" '; } ?>

W pliku "tablica_ogloszen.php":
<?php @session_start();?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl"> <head> <title>Tablica ogłoszeń</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <!--author:Józef Kańczugowski, www.teacher.webd.pl, Programy komputerowe dla nauczycieli, 12.02.2013--> <body> <?php include('operacje.php');?> <?php start_values($visit,$visits); pass1_button_click($visit,$visits); pass2_button_click($visit,$visits); zapisz_zmiany_click($visit,$visits); home_button_click(); ?> <div class="tablica"> <form action="tablica_ogloszen.php" method="post"> <div class="text_box_panel"> <textarea name="ogloszenia" <?php text_area_show_enabled($visit);?> class="text_box" > <?php echo text_from_file();?> </textarea> </div> <div class="buttons_panel"> <label class="labels">Podaj hasło:</label> <input type="password" name="pass_text1" value="" maxlength="10" <?php pass1_edit_show_enabled($visit);?> class="pass_text" <?php pass1_edit_color_enabled($visit);?>/> <label class="labels">Powtórz hasło:</label> <input type="password" name="pass_text2" value="" maxlength="10" <?php pass2_edit_show_enabled($visit);?> class="pass_text" <?php pass2_edit_color_enabled($visit);?> /> <label class="labels">Zastosuj:</label> <input type="submit" value="OK" name="wyslij" <?php pass1_button_show_enabled($visit);?> class="buttons" <?php pass1_button_color_enabled($visit);?> /> <input type="submit" value="Zmień hasło" name="wyslij" <?php pass2_button_show_enabled($visit);?> class="buttons" <?php pass2_button_color_enabled($visit);?> /> <input type="submit" value="Zapisz zmiany" name="wyslij" <?php text_save_button_show_enabled($visit);?> class="buttons" <?php text_save_button_color_enabled($visit);?> /> <input type="submit" value="Powrót" name="wyslij" class="button_home" /> </div> </form> </div> </body> </html>

W pliku "komunikat.php":
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl"> <head> <title>Tablica ogłoszeń</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <!--author:Józef Kańczugowski, www.teacher.webd.pl, Programy komputerowe dla nauczycieli, 12.02.2013--> <body> <?php include('operacje.php');?> <?php home_button_click(); ?> <div class="tablica"> <form action="tablica_ogloszen.php" method="post"> <div class="text_box_panel"> <textarea name="ogloszenia" readonly="readonly" class="text_box" style="color:red;"> <?php $id=($_GET['id']); message_show($id); ?> </textarea> </div> <div class="buttons_panel"> <label class="labels">Podaj hasło:</label> <input type="password" name="pass_text1" value="" maxlength="10" disabled="disabled" class="pass_text" style="background-color:gray" /> <label class="labels">Powtórz hasło:</label> <input type="password" name="pass_text2" value="" maxlength="10" disabled="disabled" class="pass_text" style="background-color:gray" /> <label class="labels">Zastosuj:</label> <input type="submit" value="OK" name="wyslij" class="buttons" /> <input type="submit" value="Zmień hasło" name="wyslij" disabled="disabled" class="buttons" style="background-color:gray" /> <input type="submit" value="Zapisz zmiany" name="wyslij" disabled="disabled" class="buttons" style="background-color:gray" /> <input type="submit" value="Powrót" name="wyslij" class="button_home" /> </div> </form> </div> </body> </html>