Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt komentarzy
Forum PHP.pl > Forum > Gotowe rozwiązania
Tracid
Znalazłem skrypt komentarzy ( http://www.mmorpg.6r.pl/komentarze.zip )
Wszystko jest ok tylko że niewiem jak zrobić aby osoba która już napisała komentaerz nie mogła wysyłać nowego komentarza np. w ciągu 5 minut.
Czy ktoś może zmodyfikowaćten skrypt aby osoba o takim samym IP nie mogła ponownie pisac komentarz przez określony czas np. 5 min.
Będe wdzięcny za pomoc. Moge zaoferować w reklame w moim serwisie przez np. miesiac tongue.gif
zbig13
Wystarczy wysłać cookie lub sesje i ustawic na 5 minut. Potem tylko sprawdzasz if'em czy istnieje takie ciasteczko: jeśli tak - wyświetlasz komunikat że nie można teraz dodać komentarza, jeśli nie - dodajesz komantarz. Dodawanie komentarzy powinno wyglądać tak:
  1. <?php
  2.  
  3. if (isset($_COOKIE['dodano'])) {
  4. echo &#092;"Już dodałeś komentarz! Spróbuj za chwilę.\";
  5. } else {
  6. setcookie ('dodano', 'wartosc_mozeBycAutorKomenta', time()+300);
  7. //dodawanie komentarza
  8. }
  9.  
  10. ?>

A z przerobieniem skryptu chyba już sobie poradzisz.
Tracid
Jak wysłac cookie lub sesje nierozumiem questionmark.gif Jestem zielony jesli chodzi o php sad.gif
zbig13
Już Ci napisałem w kodzie php. Wysyłanie cookie wygląda tak:
  1. <?php
  2.  
  3. setcookie ('nazwa_ciasteczka', 'wartosc', 'data_wygasniecia', 'sciezka', 'domena', bezpieczne_0-nie_1-tak)
  4.  
  5. ?>

Z tym że wymagane są tylko dwa pierwsze argumenty (nazwa cookie i jego wartość), reszta to parametry opcjonalne. Natomiast sesje rozpoczyna się tak:
  1. <?php
  2.  
  3. session_start(); // Rozpoczęcie sesji.
  4. $_SESSION['nazwa_sesji'] = 'wartość'; // Utworzenie sesji o nazwie 'nazwa_sesji'.
  5. // Można też tak:
  6. session_register('nazwa_sesji');
  7.  
  8. ?>

Powinieś zajrzeć do manuala: ciasteczka, sesje
Tracid
Ja naprawde jestem zielony w php. sad.gif Dlatego to co piszesz to dla mnie czarna mgia :/
Powiedz proszę gdzie mam to wkleic a jeśli to nie problem mogłbyś zedytować sam ten skrypt ? Tutaj jest link do niego http://www.mmorpg.6r.pl/komentarze.zip

Będe bardzo wdzięczny
zbig13
@Tracid: Przerobiłem Ci ten kod i zmieniłem to co mi się nie podobało bo ten skrypt był trochę przestarzały (już nie mówiąc, że nie zgodny ze standardami XHTML ale tego nie poprawiałem).
  1. <?php
  2.  
  3. if (isset($_POST['submit'])) {
  4. if (isset($_POST['message'])) {
  5. if (isset($_COOKIE['dodano'])) {
  6. echo &#092;"Już dodałeś komentarz! Spróbuj za chwilę.\";
  7. } else {
  8. $message = $_POST['message']
  9. $message = ereg_replace(&#092;"rnrn\", \"n<P>\", $message);
  10. $date = date(&#092;"l, F j Y, h:i a\");
  11. $message = &#092;"<B>\".$_POST['name'].\"</B> -- \".$date.\"<P> \".$message.\" <BR><HR>\";
  12. $fp = fopen (basename($_SERVER['PHP_SELF']) . &#092;".comment\", \"a\");
  13. fwrite ($fp, $message);
  14. fclose ($fp);
  15. setcookie (&#092;"dodano\", \"{$_POST['name']}\", time()+300);
  16. }
  17. }
  18. }
  19. @readfile(basename(($_SERVER['PHP_SELF'] . &#092;".comment\")));
  20. ?>
  21. <FORM method=\"post\">
  22. <b>Your name:</b><BR><INPUT name=\"name\" type=\"text\" size=\"55\"><BR>
  23. <b>Your comment:</b><BR><TEXTAREA name=\"message\" rows=10 cols=55 wrap=virtual>
  24. </TEXTAREA><BR>
  25. <INPUT name=\"submit\" type=\"submit\" value=\"Post your comments\">
  26. </FORM>

Nie sprawdzałem czy działa, ale gdyby było coś nie tak to pisz.

@Qel: Skorzystaj z tego kodu co go zmieniłem Tracidowi. Być może miałeś wyłączoną opcje register_globals, a w kodzie nie były używane zmienne superglobalne dlatego nie wyświatlało komentarzy.
Pozdrawiam!
Manfred
A ustawiłeś odpowiednio chmody?
P.S Też miałem taki problem.... wszystko przez te chmody smile.gif
zbig13
Powineś chyba jeszcze nadać odpowiednie uprawnienia (chmoda) dla katalogu komentarze bo to w nim przechowujesz wszystkie pliki i do niego odwołujesz się przez include.
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-2024 Invision Power Services, Inc.