Robię stronę w Laravel, gdzie można dokonywać rezerwacji terminów (formularz z chechbox'ami), po kliknięciu rezerwuj przenosi do strony gdzie wyświetlona jest lista wybranych rezerwacji. Tam mam przyciski do zatwierdzenia rezerwacji lub jej anulowania.
Nie mam pomysłu w jaki sposób powinienem przekazywać ID wybranych terminów do kontrolera, który zapisze to w bazie danych. Po raz kolejny przesyłać je formularzem? Zapisać te ID do sesji flash? Czy może w trakcie dokonania rezerwacji tworzyć tymczasową tabelę w bazie danych i w momencie potwierdzenia rezerwacji kasować tymczasową i zapisywać to w docelowej tabeli? Dzięki temu w między czasie nikt inny by nie mógł rezerwować terminu, który jest aktualnie 'w oczekiwaniu' w tymczasowej tabeli rezerwacji.
Może należy zastosować transakcje? Jak się rozwiązuje taką kwestę najczęściej?
@vault1337: W sensie, że w kontrolerze wywołam odpowiedni model, który to w bazie zapisze.
@normanos: W jaki sposób zabezpiecza się rezerwację 'w trakcie' bez tymczasowej tabeli? Bo ktoś inny może w tym samym czasie wybrać ten sam termin i szybciej go potwierdzić. Nie powinno być to możliwe do momentu, gdy pierwsza osoba zatwierdzi lub anuluje.
@jasieq91: to jest kwestia do przemyślenia, bo pamiętaj, że to ma być przyjemne dla 99% zwykłych użytkowników, więc nie pozwól, by przez ten 1% intruzów zepsuć usability. Dobrym sposobem są blokady czasowe na IP, bo pamiętaj, że intruza sesje czy inne ciasteczka nieobowiązują.
Po co Ci mieszać w sesji/ciastkach? Na drugim etapie masz wszystkie potrzebne informacje – potwierdzenie jest dla użytkownika (jako upewnienie się), a nie dla serwera (jako zabezpieczenie).
Klika „zaniechaj”? Olewasz. Klika „akceptuj”? Tym razem faktycznie zapisujesz te dane, zamiast tylko przekierować na
Zobaczcie co odwaliło ABC/NBC. Trump jest wyższy od Kamali o 30 centymetrów. A wygląda na tak samo wysoką a w niektórych momentach nawet na troxhę wyższą XD Tak ustawili kamery. Można rozpoznać to też po wysokości mikrofonów, które są przecież w takiej samej odległości od ust. #trump #usa #debata
Nie mam pomysłu w jaki sposób powinienem przekazywać ID wybranych terminów do kontrolera, który zapisze to w bazie danych.
Po raz kolejny przesyłać je formularzem?
Zapisać te ID do sesji flash?
Czy może w trakcie dokonania rezerwacji tworzyć tymczasową tabelę w bazie danych i w momencie potwierdzenia rezerwacji kasować tymczasową i zapisywać to w docelowej tabeli? Dzięki temu w między czasie nikt inny by nie mógł rezerwować terminu, który jest aktualnie 'w oczekiwaniu' w tymczasowej tabeli rezerwacji.
Może należy zastosować transakcje?
Jak się rozwiązuje taką kwestę najczęściej?
#naukaprogramowania #php #webdev #laravel #bazydanych
@jasieq91: kontroler NIE POWINIEN zapisywać nic do bazy danych
@normanos: W jaki sposób zabezpiecza się rezerwację 'w trakcie' bez tymczasowej tabeli? Bo ktoś inny może w tym samym czasie wybrać ten sam termin i szybciej go potwierdzić. Nie powinno być to możliwe do momentu, gdy pierwsza osoba zatwierdzi lub anuluje.
W jaki sposób? Trigger w bazie czy w inny sposób?
Po co Ci mieszać w sesji/ciastkach? Na drugim etapie masz wszystkie potrzebne informacje – potwierdzenie jest dla użytkownika (jako upewnienie się), a nie dla serwera (jako zabezpieczenie).
Klika „zaniechaj”? Olewasz.
Klika „akceptuj”? Tym razem faktycznie zapisujesz te dane, zamiast tylko przekierować na