Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Dyskusja] Akcja po wpisaniu nieistniejącego Slug'a
Forum PHP.pl > Forum > PHP
Pyton_000
No ta. Temat może mało mówiący o problemie a raczej różnych rozwiązaniach.

Nakreślę kontekst. Zacząłem sobie w Laravelu dłubać bardzo prosty system blogowy. WP zaczyna mnie denerwować wink.gif

Koncepcja jest taka że wchodząc na adres blog.moj/slug przenosi nas do konkretnego posta. Nihil novi.

Alee... Co zrobić jak ktoś wpisze/wejdzie w nieistniejący slug? Pomysłów rozwiązań mam kilka.

- Rzucić userowi w pysk 404 z ładną stroną że nie ma tu nic
- Rucić userowi 404 i dodatkowo propozycję której mógł szukać np: "Czy szukałeś może tematu: 'Gorące laski w czekoladzi?'
- Zrobić losowanko z BD i wpuścić usera gdziekolwiek (oczywiście robić redirect tak aby był dobry adres, ale co z 404? bo przecież tamtego nie ma)
- Wziąć slug i dopasować końcówkę do czegoś co jest w BD np.: wpisuję "maly-domek" (takiego sluga nie ma w BD) a system wyszuka np: "maly-domek-z-piernika"
- Wziąć slug i obliczyć odległość levenshtein od wszystkich z BD i wybrać najbardziej pasujący
- J.w tylko similar_text lub soundex (tego nie wiedziałbym jak użyć żeby porównać sensownie, poza tym sprawdza się to najlepiej dla angielskiego)

Co sądzicie o takich rozwiązaniach. Mają swoje wady i zalety. Dysputę czas zacząć wink.gif
kayman
url = dokument (strona) nawet jeżeli jest on wirtualny więc imo 404 (410 jeżeli kiedykolwiek był i go usunięto) ale np takie -> http://www.webusability.pl/kurs-usability-2.pdf (strona 22) lub przynajmniej z linkiem do poprzedniej prawidłowej strony jeżeli taka była
phpion
Ja bym rzucił samo 404 z prostym komunikatem. Wszystkie dodatkowe elementy, o których wspomniałeś, to dodatkowy bajer. Nie wiem na ile będziesz w stanie zrobić by uzyskiwane podpowiedzi były sensowne i faktycznie pomocne, a nie tylko powodowały dodatkowy zamęt. Jeśli jednak uda Ci się to ogarnąć to może to być ciekawe i przydatne dla użytkownika.
thek
Zależy na czym polega błąd. Jeśli to kwestia literówki, ale przykładowo slug to "/jakis_walnięty_slug,105" zamiast "/jakis_walniety_slug,105", to tutaj robimy standardowe przekierowanie na właściwy. Tu myślę sam wiesz co zrobić.

Gdyby jednak adres był całkowicie skopany i nie istniejący, to najprostsze rozwiązania są najlepsze. Standardowa strona błędu 404, z właściwym nagłówkiem serwowanym i najlepiej wspólna dla wszystkich. Umieszczanie tam jakichś bonusów sprawi, że zwyczajnie wywołanie jej będzie wolne. Ta strona ma być generowana jak rakieta. User nie ma czekać pół minuty, bo postanowiłeś mu zaserwawać algorytmy jakieś podpowiedzi o tym "co autor miał na myśli". Jeśli skopał, to możesz mu zaserwować formularz wyszukiwania albo link do strony głównej. Ważne by było to jednolite i trzymało się kupy z resztą strony.

Tu chodzi o czas reakcji. User może się zgodzić poczekać chwilkę dłużej jeśli dostanie to czego chce, ale jesli to są tyko Twoje domysły czego chce, to niekoniecznie musisz w nie trafić. Dodatkowy czas który na działanie takiego skryptu stracisz nie musi być tym czego chce użytkownik. A przeszukiwanie bazy pod kątem tego co pasuje jako "sugestia" w formie konkretnej strony czy strony agregującej w formie "taga" do stron powiązanych, niekoniecznie musi być dobre i wydajne (z reguły nie jest wink.gif ).

Lepiej userowi dać szybko informację "nie mam, poszukaj inaczej", niż kazać mu czekać i pokazać coś, co niekoniecznie mu się przyda. Przede wszystkim postaw na czytelność i funkcjonalność niż bajery gdzie myślisz za użytkownika wink.gif
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.