ankieta dla klienta

0

Zaszła potrzeba wykonania w PHP mini aplikacji, która ma działać następująco:

  • po zrealizowaniu danej usługi wysyłam klientowi link do niej
  • klient wypełnia ankietę
  • treść ankiety (3 pola tekstowe) wysyłane są na mój adres @

Zajęło mi to około godziny. Na szybko wrzuciłem pliki na serwer firmowy i niby działa. Ale zanim to upublicznię, to naturalnie chętnie i pokornie poczytam Wasze opinie.

https://github.com/radioactiveCode/ankieta-klienta

2

Albo jest już późno i nie czaję, albo masz trochę dziwnie zrobione przekierowania. Bo mi to wygląda, że:

  • brak ($_POST["opinia_pozytywna"])) przerzuca na HTML natychmiast, bez komunikatu
  • jeśli któreś z pól jest puste to wyświetla się komunikat o przekierowaniu, ale nic się nie dzieje
  • za to w else które się wykona jeśli zostały udzielone odpowiedzi mamy za to redirect na HTML. Czyli w wariancie, w którym informacja o sukcesie powinna zostać na stałe na ekranie, pojawia się komunikat że poszło OK, a potem leci redirect.

A tak poza tym, abstrahując od kodu, to zrobiłbym to inaczej. Nie każ ludziom pisać, bo często to oleją. Ja np. często jak wypełniam taką ankietę i każą mi coś napisać, to wyłączam. Daj raczej parę pól z oceną w skali 1-10, a do tego opcjonalnie pole do wpisania uwag.

I jeszcze jedna rzecz - lepiej byłoby sprawdzenie czy treści są poprawnie wprowadzone zrobić po stronie frontu w JS, a nie przerzucać wszystko jak leci na serwer.

5

Od strony funkcjonalnej to nie masz powiązania między usługą, osobą i opinią. Nie wiem jak się tam z kimś dogadałeś, ale od strony bizensowej to trochę taka konieczność. Jeśli jeden klient będzie realizować stale usługi to ankietę wypełni w zasadzie tylko jak będzie albo super zadowolony, albo super niezadowolony. Warto wtedy jest mieć jakiś odnośnik do konkretnej sprawy celem analizy przypadku.

Co do kodu, nie sprawdzasz np. czy klucze w POST istnieją, zakładając zapewne, że ktoś nie wejdzie na stronę bez przekierowania. To błąd bo wszelkie boty dostaną błąd, a i użytkownik może np cofnąć stronę w historii przeglądania lub wejść na nią bo mu przeglądarka zapamiętała.

Kwestia bezpieczeństwa : nie pchaj gołej tablicy POST do maila, bo nie wiadomo co ktoś Ci tam wklei.

Ogólnie mnóstwa kodu to tu nie ma, więc ciężko coś więcej sugerować.

0

No właśnie, jakie techniki walidacji wprowadzanych danych tutaj zastosować? Nie bez powodu przygotowałem pusty plik JS.

3

JS na froncie na początku do wstępnej walidacji, ale po stronie serwera również musisz to robić. XSS np. i jak ktoś wklei Ci jakiś kod Jsowy do treści? Pomyśl, potestuj, pokombinuj.

1

No to chyba przechwyć moment wciśnięcia przycisku "wyślij" i sprawdź, czy pola są puste. I jeśli którekolwiek z nich jest bez treści to wyświetl stosowny komunikat oraz zablokuj wysyłkę. Od tego bym zaczął.

0

Mogę użyć tego:
https://www.php.net/manual/en/function.htmlspecialchars.php

Tylko ta "ankieta" będzie wysyła sporadycznie do wybranych klientów. Jej treść trafi tylko na mojego @, nie na publiczną stronę. Opinie potrzebne są "wewnętrznie", czyli dla mnie i innej osoby z zespołu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1