Chodzi o podwójne wykonanie skryptu. Dotyczy to komentarzy i np. głosowania.
Na stronie A jest OBIEKT, który można skomentować i ocenić na + i -.
Z bazy danych jest odczytywana odpowiednia wartość i wyświetlana.
Głosowanie.
Chcąc zagłosować np. na +. Klika się w link www.nazwa.pl/glosuj.php?id=12&akcja=plus
Na stronie glosuj.php jest prosty skrypt, który ma tylko zwiększyć wartość o jeden, a czasem zwiększa o 2. Dlaczego?
I to tylko zazwyczaj za pierwszym razem, bo dalej poruszając się po stronie, sytuacja się normalizuje i już działa poprawnie.
Oto skrypt na stronie glosuj.php:
<?php [b]$akcja=$_GET['akcja']; $id=$_GET['id'];[/b] [b]if ($akcja=='plus') { }[/b] [b]if ($akcja=='minus') { } ?>
[/b]Nic prostszego, prawda? Więc dlaczego, gdy skrypt się wykonuje, to zamiast zwiększyć/zmniejszyć wartość w bazie danych o jeden, zmienia ją o dwie jednostki?
Przy głosowaniu to tak źle nie wygląda, ale w systemie komentarzy już tak. Ponieważ dodaje mi dodatkowo jeden pusty komentarz, co już nie wygląda zbyt fajnie i estetycznie wizualnie... i go zlicza w bazie jako normalny.
O co w tym chodzi? gdzie jest błąd? Przecież ze strony z OBIEKTEM przekazuję wartość id przypisująca obiekt w bazie, oraz akcje, która identyfikuje, co ma być zrobione, a pomimo prostoty, gdzieś jest zapętlenie i czasem skrypt wykonuje się podwójne?


Z góry będę wdzięczy za rozjaśnienie tej sprawy.
Pozdrawiam