• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Sprawdzenie czy dany URL istnieje. PHP, Symfony, PrestaShop

Object Storage Arubacloud
+1 głos
175 wizyt
pytanie zadane 25 lipca 2023 w PHP przez Beginner555 Obywatel (1,760 p.)
Cześć,

Chcę zrobić pewną funkcjonalność do mojego modułu do przekierowań. Funkcjonalność polega na tym, że przekierowujemy z starych url-i na nowe url-e, stare i nowe url-e przechowywane są w bazie danych. I chcę dodać taką funkcjonalność, która przed przekierowaniem będzie sprawdzała czy podany nowy url nie zwraca kodu 404, jeśli zwraca to w tabeli bazy danych jest jeszcze możliwość opcjonalnego zapisu id_produktu, do którego odnosi się url, jeśli podane id_produkty już nie istnieje w bazie, to przekierowuje nas na stronę kategorii po id_category, jeśli podane id_category nie istnieje przekierowanie jest po prostu na główną stronę sklepu. Ogólnie mi chodzi ,czy można jakoś sprawdzić czy podany URL na którego mamy być przekierowani istnieje i czy da się to zrobić jakoś aby nie robić podwójnych zapytań aby nie obciążyć serwera? Mam nadzieję, że zrozumiecie mi o co chodzi, za każdą cenną wskazówkę dziękuję :)

1 odpowiedź

+2 głosów
odpowiedź 25 lipca 2023 przez Pabllo26 Obywatel (1,280 p.)
wybrane 25 lipca 2023 przez Beginner555
 
Najlepsza
Witam.
Znalazłem pewną funkcje która może ci się przydać. Nazywa się ona get_headers (ref: https://www.php.net/manual/en/function.get-headers.php) generalnie z tego co wiem powinna ci zwrócić tablicę z parametrami witryny. Powinna więc też zwrócić 404 albo dać fałsz, więc polecam z tym pokombinować.
Pozdrawiam serdecznie :)
komentarz 25 lipca 2023 przez Beginner555 Obywatel (1,760 p.)

A czy taka funkcja by nie zadziała wydajniej? Tutaj wykorzystywane są funkcje z biblioteki curl które robią zapytania HEAD, które chyba w przeciwieństwie do funkcji get_headers nie robią pełnych zapytań GET. 

        function urlExists($url) {
            $ch = curl_init($url);
            curl_setopt($ch, CURLOPT_NOBODY, true);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
            curl_exec($ch);
            $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            curl_close($ch);
            return $statusCode >= 200 && $statusCode < 300;  
        }

 

komentarz 25 lipca 2023 przez Pabllo26 Obywatel (1,280 p.)
Owszem zadziała wydajniej, ale w tym przypadku myślę że w tym celu nawet pełne zapytanie nie jest wielkim obciążeniem. Mimo to jeżeli nie będziesz używał reszty info z GET'a to użyj twojej funkcji
komentarz 25 lipca 2023 przez Beginner555 Obywatel (1,760 p.)
Dzięki za pomoc ;)

Podobne pytania

0 głosów
0 odpowiedzi 81 wizyt
pytanie zadane 5 maja 2020 w PHP przez tgv Użytkownik (890 p.)
0 głosów
1 odpowiedź 868 wizyt
pytanie zadane 9 listopada 2018 w Inne języki przez luna22 Obywatel (1,420 p.)
0 głosów
1 odpowiedź 244 wizyt
pytanie zadane 16 czerwca 2017 w PHP przez dervil Gaduła (3,030 p.)

92,654 zapytań

141,543 odpowiedzi

319,954 komentarzy

62,023 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...