Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dekodowanie zmiennych z urla
Forum PHP.pl > Forum > PHP
rafiksq
Próbowałem ale się poddałem.
Mam pewien serwis z ogłoszeniami orfin.net.pl i paginacją. Po wybraniu pozycji z wyszukiwarki np. miejscowości z polskimi znakami i kliknięciu szukaj w urlu wyświetlają się z polskimi znakami ale po wybraniu kolejnej strony serwer koduje polskie znaki. Wie ktoś dlaczego ?
http://www.orfin.net.pl/?section=search&am...=Szukaj&a=1

Na lokalnym serwerze wszystko jest ok, na home.pl było ale raptem przestało działać.
bostaf
Ciężko powiedzieć nie widząc kodu, ale...

Mamy do czynienia z dwoma typami URLi:
1. Inicjowane przez formularz wyszukiwania na górze strony przyciskiem "Szukaj"
2. Generowane przez aplikację i pokazany użytkownikowi jako link "następna >>>" na dole strony.

Ten drugi, jak podejrzysz na źródle strony, ma polskie znaki zakodowane. Czyli, że to paginator generując link koduje znaki specjalne (urlencode?).

Pierwszy jest tworzony przez formularz, i wygląda na to, że to co formularz widzi polu <select id="lokalizacje1" name="locations[]" ...> jest żywcem brane przez funkcję przetwarzającą formularz na redirecta. Tak jakby ta funkcja nie kodowała znaków specjalnych.

Gdybym chciał zmienić ten drugi tym URLi, to zacząłbym od sprawdzenia w jaki sposób paginator buduje linki i szukałbym wystąpień funkcji urlencode.

Chociaż z drugiej strony, to nie wyjaśnia dlaczego na localu jest OK a na home.pl nie... chyba, że paginator bierze pod uwagę jakieś ustawienia środowiskowe...

A możesz udostępnić kod paginatora?
rafiksq
Już chyba znalazłem przyczynę ale nie wiem jak naprawić. Otóż:

$skrypt=$_SERVER['QUERY_STRING'].'&';
<a href=\"index.php?".$skrypt."a=$i\" class=\"pasek_wyniki_link\">

klikająć w ten link w url nie ma polskich znaków a są 'krzaki' smile.gif

Jak z linku usunę 'index.php?' albo sam znak zapytania czyli:
<a href=\"index.php?".$skrypt."a=$i\" class=\"pasek_wyniki_link\"> to wszystko działa tzn są polskie znaki ale wiadomo mam 'white page'

Rozwiązane, usunąłem z linku 'index.php' i zostawiłem sam znak zapytania ?zmienna=dddd i działa smile.gif
nospor
Nie wiem na jakim etapie jest twoj projekt, ale taka rada na przyszlosc:
miniaturka ma byc miniaturka a nie na sile w html/css zmniejszonym oryginalem. Teraz twoja strona wazy ponad 3MB bo ladujesz pelne obrazki w miejsce miniaturek
rafiksq
Cytat(nospor @ 21.04.2017, 13:37:47 ) *
Nie wiem na jakim etapie jest twoj projekt, ale taka rada na przyszlosc:
miniaturka ma byc miniaturka a nie na sile w html/css zmniejszonym oryginalem. Teraz twoja strona wazy ponad 3MB bo ladujesz pelne obrazki w miejsce miniaturek


Tak wiem to też będzie zmienione ale dziękuję za przypomnienie smile.gif
bostaf
Cytat(rafiksq @ 21.04.2017, 13:14:21 ) *
Rozwiązane, usunąłem z linku 'index.php' i zostawiłem sam znak zapytania ?zmienna=dddd i działa smile.gif


A to zdaje się, że to przez mod_rewrite. Bo on domyślnie zamienia znaki specjalne na kodowane procentowo.
Masz tam w .htaccess albo w konfiguracji virtual hosta coś w rodzaju
Kod
RewriteRule ^index.php ...

?
Gdybyś na końcu dodał flagę NE (tak jak tu w manualu opisane), to powinno hulać z- i bez index.php ...chyba smile.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.