Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt komentarzy oparty na plikach *.txt.
Forum PHP.pl > Forum > PHP
moto0095
Witam.
Napisałem ostatnio skrypt komentarzy oparty na plikach txt:

1. Plik:index.php [nazwa nie gra tu roli]:
  1. <?
  2. include("config.php");
  3. ?>
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
  5. <HTML>
  6. <HEAD>
  7. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  8. <TITLE><? echo $title; ?></TITLE>
  9. <?
  10. <style type="text/css">
  11. a{
  12. color: '.$acolor1.';
  13. }
  14. a.hover{
  15. color: '.$acolor2.';
  16. }
  17. a.visited{
  18. color: '.$acolor3.';
  19. }
  20. </style>
  21. ';
  22. ?>
  23. </HEAD>
  24. <BODY bgcolor="<? echo $tlo; ?>" text="<? echo $text; ?>" style="font-size : <? echo $fontsize ?>; font-family: <? echo $czcionka ?>;">
  25.  
  26. <?
  27. //zapisywanie komentarzy
  28. if(isset($_GET["dodaj"])){
  29. $data = trim($_POST['data']);//data dodania wpisu
  30. $nick = trim($_POST['nick']);//nick użytkownika
  31. $mail = trim($_POST['mail']);//mail użytkownika
  32. $text = trim($_POST['text']);//treść komentarza
  33. $avatar = trim($_POST['avatar']);//avatar użytkownika
  34. $text = str_replace("\n","<br>",$text);//zamiana "enter" na <br>
  35.  
  36. if(empty($nick) and empty($text)){
  37. echo'<TABLE style="border: '.$border.' '.$bordercolor.' '.$borderstyle.'">
  38. <TR>
  39. <TD>Wypełnij poprawnie formularz</TD>
  40. </TR>
  41. </TABLE><br />';
  42. }else
  43. if(empty($avatar)){
  44. $dane = $data."|".$nick."|".$mail."|".$text."|niema.png\n";
  45. }else{
  46. $dane = $data."|".$nick."|".$mail."|".$text."|".$avatar."\n";
  47. }
  48. $file = "komen.txt";//plik do którego mają się zpisywać komentarze
  49. $fp=fopen("$file", "r+");
  50. $dane=$dane.fread($fp, filesize($file));
  51. rewind($fp);
  52. flock($fp, 2);
  53. fwrite($fp, $dane);
  54. flock($fp, 3);
  55. fclose($fp);
  56.  
  57. echo '<TABLE style="border: '.$border.' '.$bordercolor.' '.$borderstyle.'">
  58. <TR>
  59. <TD>Komentarz został dodany :)</TD>
  60. </TR>
  61. </TABLE><br />';
  62. }
  63. //wyświetlanie
  64. $file = file("komen.txt");
  65. foreach($file as $value) {
  66. $exp = explode("|",$value);
  67.  
  68. if(empty($exp[2])){
  69. $mailto = $exp[1];
  70. }else{
  71. $mailto = "<a href='mailto:".$exp[2]."'> ".$exp[1]."</a>";
  72. }
  73.  
  74. echo '
  75. <TABLE cellpadding="0" cellspacing="0" style="border: '.$border.' '.$bordercolor.' '.$borderstyle.';
  76. width: '.$tablew.';">
  77. <TR>
  78. <TD style="border-right: '.$border.' '.$bordercolor.' '.$borderstyle.';
  79. border-bottom: '.$border.' '.$bordercolor.' '.$borderstyle.';
  80. width: '.$avatarw.'; background: '.$tabletlo2.';" ALIGN="left">
  81. Nick: '.$mailto.'</TD>
  82. <TD style="border-bottom: '.$border.' '.$bordercolor.' '.$borderstyle.';
  83. background: '.$tabletlo3.';" ALIGN="right">
  84. Dodano: '.$exp[0].'</TD>
  85. </TR>
  86. <TR>
  87. <TD style="border-right: '.$border.' '.$bordercolor.' '.$borderstyle.'; width: '.$avatarw.';">
  88. <div style="overflow: hidden; width: '.$avatarw.'; height: '.$avatarh.';">
  89. <img src="'.$exp[4].'"></div></TD>
  90. <TD style="background: '.$tabletlo1.';" VALIGN="top">
  91. '.$exp[3].'</TD>
  92. </TR>
  93. </TABLE><p>';
  94. }
  95. ?>
  96.  
  97. <?
  98. //data
  99. $sdata = date("Y-m-d H:i:s");
  100. $d1 = strtotime($sdata);
  101. $d2 = 32400;
  102. $d = $d1 + $d2;
  103. $data = date("Y-m-d H:i:s", $d);
  104. ?>
  105.  
  106. <!--formularz-->
  107. <form action="?dodaj" method="POST">
  108. <TABLE style="border:"<? echo $border." ".$bordercolor." ".$borderstyle; ?>"; width: "<? echo $tablew; ?>";">
  109. <TR>
  110. <TD>*Nick: </TD><TD><input type="text" name="nick" style="width: 150px;" maxlength="15"></TD>
  111. <TD>E-Mail: </TD><TD><input type="text" name="mail" style="width: 150px;"></TD>
  112. </TR>
  113. <TR>
  114. <TD>Avatar: </TD><TD><input type="text" name="avatar" style="width: 150px;"></TD>
  115. <TD>Data: </TD><TD><input type="text" name="data" readonly="readonly" value="<? echo $data; ?>" style="width: 150px;"></TD>
  116. </TR>
  117. <TR>
  118. <TD>*Tresc: </TD><TD COLSPAN=3><textarea type="text" name="text" style="width: 360x; height: 100px;"></textarea></TD>
  119. </TR>
  120. <TR>
  121. <TD></TD><TD><input type="submit" value="Dodaj"></TD>
  122. </TR>
  123. </TABLE>
  124. <font size="2">
  125. Pola oznaczone * są wymagane!!
  126. </font>
  127. </form>
  128. <hr color="#ffffff">
  129. <font size="3">by<a href="http://2pac.site90.net"> moto0095.</a>:)</font><!--nie usuwaj tego-->
  130. </BODY>
  131. </HTML>


2. plik config.php:
  1. <?
  2. $title = "KOMENTARZE";//tytuł
  3. $tlo = "#000000";//kolor tła strony
  4. $text = "#ffffff";//kolor textu
  5. $fontsize = "5";//wielkość czcionki
  6. $czcionka = "Arial";//rodzj czcionki
  7. $tablew = "500";//szerokość tabeli z komentarzami
  8. $tabletlo1 = "#111111";//tło treści komentarza
  9. $tabletlo2 = "#333333";//tło nicka
  10. $tabletlo3 = "#111111";//tlo daty
  11. $border = "1px";//gróbość obramowania tabeli z komentarzami
  12. $borderstyle = "solid";//styl obramowania tabeli z komentarzami
  13. $bordercolor = "#ffffff";//kolor obramowania tabeli z komentarzami
  14. $acolor1 = "#ff6600";//kolor odnośnika
  15. $acolor2 = "#ff6600";//kolor odnośnika po najechaniu myszy
  16. $acolor3 = "#ff6600";//kolor odnośnika odwiedzonego
  17. $avatarw = "150";//szerokość avatara
  18. $avatarh = "100";//wysokość avatara
  19. ?>


Jeszce plik: komen.txt z chmodami 0666.

Demo:
tutaj

Download:
tutaj

Odrazu przepraszam jeżeli są jakieś błędy ortogtaficzne.

Jeżeli ma ktoś pomysł jak ulepszyć ten skrypt to niech napisze smile.gif.
Neo
Filtruj dane pochodzące od użytkownika

Zamieniaj znak | na np _
Komentarze podatne na XSS
moto0095
Starałem się aby były jak najprostsze smile.gif.
Oczywiście można dodać jeszcze takie zabezpieczeni
  1. $zab = array("<" => "<", ">" => ">", "|" => " ");
  2. foreach($zab as $tekst => $sss) $string = str_replace($tekst,''.$sss.'',$string);
MateuszS
Funkcja Strip_tags okazała by się tu bardzo pomocna,
Michaxxx
Po odświeżeniu strony znów dodaje komentarz.

Przemyśl czy obrazki do komentarzy to dobry pomysł bo zobacz co się stało smile.gif
Cytat
Fatal error: Cannot redeclare emotki() (previously declared in /home/a6265801/public_html/DEMO/index.php:76) in /home/a6265801/public_html/DEMO/index.php on line 76

hmm ? smile.gif Tera to nic nie widze po małych zabawach
moto0095
Ten błąd to moja sprawka.
Próbuje zapobiec wstawianiu kodu.

Już powinno działać.
Michaxxx
Date trzymac w polu tekstowym to dobry pomysł?
Zobacz jaką datę dodałem .
moto0095
Normalną

Ok. Mam taką prośbę zamiast zaśmiecać mi wersje demo to może byście coś pomogli??
Jakieś propozycje jak ulepszyć ten skrypt??
Michaxxx
Pokazując Ci błędy pokazujemy co masz naprawić biggrin.gif.
Ulepszyć . Hmm? może to żeby awatar musiał być obrazkiem?
moto0095
Cytat(Michaxxx @ 6.04.2010, 22:02:21 ) *
Ulepszyć . Hmm? może to żeby awatar musiał być obrazkiem?


A jakoś jaśniej questionmark.gif
Michaxxx
Zobacz ten obrazek
Bo tak mi się zdaje , że awatar to obrazek a nie <? smile.gif
Sprawdzaj czy w Awatarze jest obrazek czy co innego

EDIT

a teraz zobacz masz
Cytat
Dodano: BBBB



Edit
zrób żeby po odświeżaniu nie dodawało 2 raz komentarza.
moto0095
A w jaki sposób zmieniłeś datęquestionmark.gif
Michaxxx
Edytowałem źródło strony.
moto0095
A w jaki sposób temu zapobiec questionmark.gif
Michaxxx
Przed wpisaniem do pliku zamiast czerpać z _POST czy czego tam używasz daj po prostu
Coś = function.date
i Zapisz
moto0095
Oki zamykam temat.
Dopracuję jeszcze ten skrypt a jak na razie usuwam wersję demo.
Michaxxx
Jak coś pisz na PW to moge Ci coś pomóc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.