Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Księga Gości.
Forum PHP.pl > Forum > Przedszkole
amster
Witajcie:)

Słuchajcie robię sobie księgę gości na stronie, właściwie można powiedzieć, że będzie to też podobne do komentarzy z opiniami.. Puki co mam takie kody:

connect.php

  1. <!--c1--><div class='codetop'>Kod</div><div class='codemain'><!--ec1--><?
  2.  
  3. function MySQLConnect(){
  4.  
  5. mysql_connect('localhost' , 'login' , 'haslo')
  6.             or die('Nie udało połączyć się z naszą bazą danych. Spróbuj później.');
  7.  
  8. mysql_select_db('nazwa_bazy')
  9.             or die('Nie udało wybrać się bazy danych. Spróbuj później');
  10.             
  11. }
  12.  
  13. ?>]/code][/PHP]
  14.  
  15. dodaj.php
  16. [PHP][code]<?
  17.  
  18. include_once('connect.php');
  19. MySQLConnect();
  20.  
  21. if (isset($_POST['ok']))
  22. {
  23.         $nick = $_POST['nick'];
  24.         $email = $_POST['email'];
  25.         $tresc = $_POST['tresc'];
  26.             $data = date('d.m.Y, H:i');
  27.         
  28.         
  29.          if(empty($nick) || empty($tresc) || empty($email))
  30.         
  31.                 echo 'Wpisz wszystkie pola!';
  32.                 
  33.                 else
  34.                 {
  35.                 
  36.                         $nick = trim(strip_tags( mysql_real_escape_string( HTMLSpecialChars($nick))));
  37.                         
  38.                         if(preg_match('/^[_a-z0-9.-]*[a-z0-9]@[_a-z0-9.-]*[a-z0-9].[a-z]{2,3}$/D', $_POST['email']))
  39.                         {}
  40.                         else
  41.                         {
  42.                          echo '<p>Podałeś niepoprawny adres email.</p>';
  43.                          exit();
  44.                         }
  45.                         
  46.                         $tresc = trim(strip_tags( mysql_real_escape_string( HTMLSpecialChars($tresc))));
  47.                         
  48.                         
  49.                         
  50.                 mysql_query("INSERT INTO komentarze VALUES(0 , '$nick' , '$email' , '$tresc' , '$data')");
  51.                 
  52.                 echo 'Pomyślnie dodano komentarz do naszej bazy danych! Dziękujemy za Państwa opinie.</b>';
  53.  
  54.                 }
  55. }
  56.  
  57. //zamykanie bazy danych
  58.  
  59.  
  60. ?><!--c2--></div><!--ec2-->


Czy myślicie, że wstępnie może być coś takiego? Mam w planach jeszcze zrobić połączenie do panelu admina, żeby niestosowne wpisy usuwać. Nie mam jednak zielonego pojęcia jak zrobić, żeby z jednego IP dodanie kolejnego wpisu odbywało się po np. 5 minutach, żeby uniknąć spamu. Druga sprawa, chciałbym zrobić ocenianie gwiazdkami, ale również nie wiem jak za to się zabrać, żeby po kliknięciu na dana gwiazdkę przyznawana była odpowiednia ilość punktów.
redelek
oj to moim zdaniem dużo pól ci brakuje:)

ip_goscia ( tu odnotowuj ip odwiedzającego )
data lub data_czas ( tu będziesz miał datę lub czas i będziesz mógł przyrównać do aktualnego jeśli minie 5 minut to dodaj )
status ( jeśli admin zaakceptuje wpis to się dopiero pojawi, nie dawaj tak że można dodawać i od razu się pokazuje).
email ( nie ma sensu go tak sprawdzać ) ktoś ci wpisze kochamphp@alejestemamatorem.pl i też Ci doda. Jeśli chcesz sprawdzać czy taki adres naprawdę istnieje to musisz poszukać czegoś bardziej zaawansowanego. Z praktyki ludzie nigdy nie podają prawidłowych e-mail , więc niepotrzebne i zbędne. Moim zdaniem

Nie zaprzęgaj funkcji do tak prostych zadań. Poza tym funkcja powinna zwracać true lub false, a nie tam jakieś krzaki

o i będzie dobrze smile.gifsmile.gif
sadistic_son
Lepiej byłoby umożliwić dodawanie wpisów tylko zalogowanym. Ale jeśli nie chcesz tak to samo IP to za mało, zrób jeszcze chociaż zabezpieczenie po ciastku.
Reszta, tak jak wyżej.

Dla zabezpieczeń po ciachu dodaj coś w tym stylu:
  1. //tworzenie ciastka przy dodaniu pierwszego wpisu
  2. setcookie('nazwaciastka',$login,time()+300);
  3. // time()+300 bo ciastko ma być wazne 300 sekund (5 minut) od daty utworzenia
  4.  
  5. //sprawdzenie czy ciastko istnieje, jesli nie to mozna utworzyc nowy wpis
  6. if(!isset($_COOKIE['nazwaciastka'])){
  7. echo 'dodawanie wpisu';
  8. }
  9. else{
  10. echo 'czekaj';
  11. }
Pamiętaj, że setcookie musi być w kodzie przed wysłaniem jakichkolwiek nagłówków, czyli przed jakimkolwiek kodem html. Najlepiej na samym początku pliku php.
To nadal niewielkie zabezpieczenie bo wystarczy ciacho usunąć z menu przeglądarki ale już lepsze niż samo IP.
CuteOne
redelek:: co do funkcji - głupoty pleciesz

Co do tematu:
1. Filtrujesz nick a treści już nie ?
2. Wpisy co 5min możesz załatwić poprzez COOKIE + zapis IP i czasu wpisu do bazy
3. Gwiazdki - poszukaj na necie pluginu do jQuery (google -> jquery plugins ocenianie)
amster
Hmmm, dzięki Kolego za tak szybką odpowiedźsmile.gif

Co do akceptowania przez admina to odpada, myślałem o tej kwestii ale stwierdziłem , że jednak pozostanę nad zwykłym dodawaniem, ewentualnie późniejsze usuwanie. Właściwie jeszcze nie wiem dokłądnie jak się za to wziąć ale zobaczymy;)
redelek
CuteOne::
Od razu głupoty. To moje propozycje. Do przekopania grządki używa się łopaty , a nie wyciąga się traktor. smile.gif)
CuteOne
I tu się właśnie mylisz smile.gif traktorem było by pakowanie kodu "bez opakowania" do jednego pliku.

1. Funkcja nie musi zwracać tylko true/false - bo nie takie jest jej zadanie [zobacz na frameworki pisane pod php4]
2. Funkcja umożliwia hermetyzację pewnych działań - dzięki czemu nie musimy się martwić, że jakieś ustrojstwo dostanie się nam do obliczeń
3. Dzięki funkcjom nie musisz pisać w kółko tego samego kodu w każdym pliku, w którym będziesz go potrzebował
4. Powielając w kółko ten sam kod narażasz się na błędy - funkcje jako tako zabezpiecza webmastera przed samym sobą smile.gif

Dawnymi czas sam pakowałem co tylko się dało do funkcji a pisząc kolejne projekty kopiowałem to co potrzebowałem oszczędzając sobie kupę czasu
amster
Hmm, Kurcze próbowałem zrobić z ciasteczkami:/ I kiepsko idzie:/ Nie wiem jak zrobić, żeby po wysłaniu komentarza, np robiło się ciasteczko na dany nick chociażby, ponieważ z formularza wychodzą dane tylko do kolejnego pliku w którym są one odczytywane:/ Google nie pomogło smile.gif Ale czytając w necie zrozumiałem, że to ciacho będzie najodpowiedniejsze i po głębszych zastanowieniach stwierdziłem , że będę szukał informacji jak przekształcić to w taki sposób, żeby było to akceptowane przez admina, bo to chyba lepsze niż niekontrolowane wpisy.
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.