Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Księga gości oparta na txt
Forum PHP.pl > Inne > Oceny
Outside
Witam, jest to mój pierwszy większy kod wykonany w całości przeze mnie, postanowiłem zrobić księgę gości opartą na plikach tekstowych, mógłby ktoś przeanalizować kod i powiedzieć co zrobiłem źle?
Jak już podpatrzę jak to zrobić to jeszcze dodam tam, że gdy liczba komentarzy jest większa niż 5 niech tworzy drugą stronę i na drugiej stronie pokazuje kolejne 5, na 3 kolejne 5 itd

Dodawanie nowych wpisów
  1. <?php
  2. // Utworzenie krótkich nazw zmiennych
  3. $nick = trim($_POST['nick']);
  4. $komentarz = trim($_POST['komentarz']);
  5. $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
  6. $ip = $_SERVER['REMOTE_ADDR'];
  7. $data = date('H:i, j F Y');
  8. $komentarz = htmlspecialchars($komentarz);
  9. $nick = htmlspecialchars($nick);
  10.  
  11. if($nick == '')
  12. {
  13. $nick = 'Gość';
  14. }
  15.  
  16. if($komentarz == '')
  17. {
  18. echo "Proszę o wpisanie komentarza";
  19. }
  20. echo '<hr/>';
  21. echo 'Nick: '.$nick.'<br />';
  22. echo 'IP: '.$ip.'<br />';
  23. echo 'Komentarz: '.$komentarz.'<br />';
  24.  
  25. $ciagwyjsciowy = $data."\t".$nick."\t".$ip."\t".$komentarz."\n";
  26.  
  27. //otwarcie pliku w celu dopisywania
  28. $wp = fopen("DOCUMENT_ROOT/../ksiega/ksiega.txt", 'ab');
  29. if(!wp)
  30. {
  31. echo 'Nie można teraz dopisać się do księgi gości.';
  32. }
  33.  
  34. fwrite($wp, $ciagwyjsciowy, strlen($ciagwyjsciowy));
  35. flock($wp, LOCK_UN);
  36. fclose($wp);
  37. echo '<br />Twój wpis został dodany!<br />';
  38.  
  39. ?>


Wyświetlanie wpisów

  1. <?php
  2. $wpisy = file("DOCUMENT_ROOT/../ksiega/ksiega.txt");
  3. if(!wpisy)
  4. {
  5. echo 'Nie można wczytać wpisów!';
  6. }
  7. else
  8. {
  9. $ilosc_wpisow = count($wpisy);
  10. if($ilosc_wpisow == 0)
  11. {
  12. echo 'Brak wpisów! Bądź pierwszy!';
  13. }
  14. echo ' Wszystkich wpisów '.$ilosc_wpisow.'';
  15. for ($i=0; $i < $ilosc_wpisow; $i++) {
  16. //Rozbicie każdej linii
  17. $linia = explode( "\t", $wpisy[$i]);
  18.  
  19.  
  20. echo "<table width=\"600px\" border=\"1\" cellpadding=\"5px\" cellspacing=\"0px\">
  21. <tr style=\"background-color: #CCCCFF;\" height=\"30px\"><td width=\"100px\">Nick: $linia[1] </td><td width=\"100px\">Data: $linia[0]</td><td width=\"100px\">IP: $linia[2]</td></tr>
  22. <tr><td colspan=\"3\" style=\"text-align:left;\">$linia[3] </td></tr>
  23. </table>";
  24.  
  25.  
  26.  
  27. }
  28. }
  29.  
  30.  
  31. ?>



Edit:Jeszce teraz wpadłem na pomysł, aby w przyszłości wprowadzić tam możliwość kasowania pojedynczych wpisów.
fiszol
Nie ma za bardzo co oceniać. ale dam Ci kilka sugestii. Przede wszystkim:
  1. if($nick == '')
  2. {
  3. $nick = 'Gość';
  4. }
  5.  
  6. if($komentarz == '')
  7. {
  8. echo "Proszę o wpisanie komentarza";
  9. }
Użyj empty.


Zamiast date lepiej zapisać time
Zamiast fopen, fwrite itd użyj file_get_contents, file_put_contents;

  1. $nick = trim($_POST['nick']);
  2. $nick = htmlspecialchars($nick);

Można zrobić w 1 linii:
  1. $nick = trim(htmlspecialchars($_POST['nick']))


  1. $ciagwyjsciowy = $data."\t".$nick."\t".$ip."\t".$komentarz."\n";

Źle łączysz. Jeśli separatorem ma być tab, to musisz wykluczyć go z zawartości którą wprowadza użytkownik albo użyć innego separatora.

  1. $wpisy = file("DOCUMENT_ROOT/../ksiega/ksiega.txt");
  2. if(!wpisy)

1. if(!$wpisy)
2. file wczytuje Ci do tablicy po nowej linii, co jeśli komentarz będzie takie znaki zawierał?

Brakuje jakiejkolwiek kontroli nad spamowaniem.

Jak na pierwszy w życiu skrypt, nie ma tragedii ;-p
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.