Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt komentarzy- ciasteczka
Forum PHP.pl > Forum > PHP
compl
Witam. Znalazłem w necie taki oto skrypt komentarzy:
  1. <?php
  2. if (isset($_POST['submit'])) {
  3. if (isset($_POST['message'])) {
  4. if (isset($_COOKIE['dodano'])) {
  5. echo "Już dodałeś komentarz! Spróbuj za chwilę.<br>";
  6. } else {
  7. $message = str_replace('www','*',$_POST['message']);
  8. $message = ereg_replace("rnrn", "n<P>", $message);
  9. $date=date("H:i d.m.Y");
  10. $message = "<B>".$_POST['name']."</B><BR>".$date."<P>".$message."<BR><HR>";
  11. $fp = fopen (basename($_SERVER['PHP_SELF']) . ".comment", "a");
  12. fwrite ($fp, $message);
  13. fclose ($fp);
  14. setcookie ("dodano", "{$_POST['name']}", time()+300);
  15. }
  16. }
  17. }
  18. @readfile(basename(($_SERVER['PHP_SELF'] . ".comment")));
  19. ?>
  20.  


Powinien on korzystać z ciasteczek, lecz niestety chyba to niedziała, bo mogę dodawać wiele komentarzy w ciągu paru minut. Mógłby mi ktoś ten skrypt poprawić?
IceManSpy
Korzysta z ciasteczek, ale raczej nie w taki sposób, o który Tobie chodzi. On tylko zapisuje, że jakiś komentarz został dodany. Nigdzie nie sprawdza go.
compl
To czy mógłby ktoś go przerobić tak aby można było pisać jeden komentarz na godzinę?
bim2
  1. setcookie ("dodano", "{$_POST['name']}", time()+300);

Liczba 300 to sekundy przez ile istnieje ciastko. Jeśli chcesz godzinę to 60*60=3600 sekund smile.gif

@IceManSpy
Czytaj dokładnie kod. Dodaje ciastko, że dodano komentarz a potem przy próbie dodania sprawdza czy takie ciastko istnieje.
IceManSpy
Cytat(bim2 @ 30.12.2010, 19:59:56 ) *
@IceManSpy
Czytaj dokładnie kod. Dodaje ciastko, że dodano komentarz a potem przy próbie dodania sprawdza czy takie ciastko istnieje.


Faktycznie, musiałem coś przegapić smile.gif
compl
Coś jest nie tak, bo mogę robić dowolną ilosć komentarzy. Po dodaniu komentarza wyskakuje błąd:Warning: Cannot modify header information - headers already sent by (output started at /homez.379/swiatgot/www/naglowekart.php:1) in /homez.379/swiatgot/www/komentarzek.php on line 16
Próbuje użyć Notepada do zmiany kodowania, ale bez skutecznie zapisze w UTF-8 bez BOm. Otwieram ponownie, a tam ANSi mnie wita, więc kurde jak mam to zmienić?
bim2
Widocznie ciastko Ci nie dopisuje. Zobacz u siebie w przeglądarce czy masz ciastko.
compl
Mam kilka ciasteczek o różnych nazwach nawet nie wiem skąd, bo nie korzystam z ciasteczek. (chyba, że było wysyłane po jednym ciastku zajeden komentarz)
IceManSpy
Dodaj sobie echo przed i po setcookie z jakimś napisem i zobacz, czy Ci się one wyświetlają. Bo może nawet do tamtego miejsca nie dochodzi skrypt.
compl
Wstawiłem to echo i nic się nie zmieniło. Powiem także, że ten błąd dotyczy własnie linijki z setcookie.
bim2
W Notepad++ użyj Convert to UTF-8 without BOM powinno ci kodowanie permanentnie zmienić. Przed <? nie może być żadnych znaków, spacji, enterów, tabów, czegokolwiek. Ma być nic. winksmiley.jpg
compl
Jednak dodanie tego echa coś zmieniło:
Wysyłamy ciacho
Warning: Cannot modify header information - headers already sent by (output started at /homez.379/swiatgot/www/naglowekart.php:1) in /homez.379/swiatgot/www/komentarzek.php on line 17
ciacho wysłane

Tak to wygląda.
IceManSpy
Ten błąd oznacza, że coś jest przed setcookie. Usuń "Wysyłamy ciacho" i zobacz, czy po tym ustawia się ciastko. Opcjonalnie zrób echo $_COOKIE['dodano']; wtedy zobaczysz, co ciasteczko o nazwie dodano zawiera.
compl
Ok. Po prostu usunąłem tą linijkę i błedu już nie ma. Na razie obejde się bez ciasteczek. Mam inne pytanie. Na stronie głównej mam odnośniki to artykułów i chciałbym żeby koło odnośników było napisane ile jest komentarzy. Jak mogę takie coś zrobić?
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.