Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Dekodowanie url
potreb
post
Post #1





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam.
Potrzebuje porady na temat przesyłania danych z formularza metodą get.
Dane pochodzą z wyszukiwarki. Pod IE polskie znaki są zakodowane natomiast pod Firefox jeżeli wkleję link dopiero się kodują tak jak w IE.
Jak najlepiej zabezpieczyć się przed źle zakodowanymi znakami w urlu.
Go to the top of the page
+Quote Post
hostingekspert
post
Post #2





Grupa: Zarejestrowani
Postów: 51
Pomógł: 5
Dołączył: 12.04.2007
Skąd: 1=1

Ostrzeżenie: (0%)
-----


użyj urldecode i urlencode
Go to the top of the page
+Quote Post
potreb
post
Post #3





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Spojrzałem szybciej do manuala, jednak mam problem.
W jaki sposób zakodować dane w url wszelkie, które się tam pojawiają.
Go to the top of the page
+Quote Post
kamil_biela
post
Post #4





Grupa: Zarejestrowani
Postów: 31
Pomógł: 7
Dołączył: 14.06.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Chyba nie do końca rozumiem Twój problem. Jeśli dobrze ustawisz kodowanie strony, to przeglądarka powinna dobrze zakodować url'a. Jeśli chcesz mieć pewność to przesyłaj POSTem
Go to the top of the page
+Quote Post
potreb
post
Post #5





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Wszystko mam w kodowaniu utf-8.
Przesyłając z wyszukiwarki dane metodą GET za pierwszym razem w pasku adresu polskie fonty są poprawnie wyświetlane, jeżeli wkleję te same dane do pasku adresu , to polskie czcionki się zakoduję w czym nie wiem.
Kod
?p=search&nazwisko=trrtrere%B9%9C%E6%9C&imie=&telefon=&pokoj=P


Przykład google:
Wklej: http://www.google.pl/search?q=ąśćśąą
Wtedy polskie czcionki się rypną, podaje jedynie przykłąd firefoxa, o dziwo IE nie ma problemu z urlencode.
Jeżeli będę chciał przesłać dane POSTEM, nie będę miał problemu, z tym, że aplikację całą napisałem pod GET, plus sortowanie. Musiałbym zmienić trochę oskryptowanie :/
Nie lubię obejść, szukam rozwiązania.
Go to the top of the page
+Quote Post
kamil_biela
post
Post #6





Grupa: Zarejestrowani
Postów: 31
Pomógł: 7
Dołączył: 14.06.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Edit:

"The superglobals $_GET and $_REQUEST are already decoded. Using urldecode() on an element in $_GET or $_REQUEST could have unexpected and dangerous results. "

Szczerze mówiąc, dalej nie wiem w czym problem.

Ten post edytował kamil_biela 17.06.2009, 20:47:40
Go to the top of the page
+Quote Post
potreb
post
Post #7





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


(IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Okey, wiem, że dane są już zakodowane.
I teraz chcąc odkodować:
  1. <?php
  2. echo urldecode($_GET['nazwisko']);
  3. ?>


Jednak jeżeli zmienię kodowanie na windows-1250 poprawnie się wyświetlą czcionki.

Ten post edytował potreb 17.06.2009, 21:01:19
Go to the top of the page
+Quote Post
kamil_biela
post
Post #8





Grupa: Zarejestrowani
Postów: 31
Pomógł: 7
Dołączył: 14.06.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Po co chcesz dekodować, skoro wg dokumentacji one już są zdekodowane. Wygląda raczej mi to na problem kodowania strony / wysyłanych header'ów przez serwer.

EDIT:

Jak robisz to na jakimś zewnętrznym serwerze, wrzuć linka, będzie szybciej

Ten post edytował kamil_biela 17.06.2009, 21:01:07
Go to the top of the page
+Quote Post
potreb
post
Post #9





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Masz rację. Jednak problem występuje tak jakby dla kodowania. Url są popranie dekodowane, a poprawnie litery wyświetlane w kodowaniu windows-1250, choć cała strona jest na utf.

Server IIS, teraz testy robię na Apachu.
Szlag mnie trafi. Niestety nie mam aplikacji w sieci, i nigdy ona nie będzie dostępna.
Go to the top of the page
+Quote Post
erix
post
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Wtedy polskie czcionki się rypną, podaje jedynie przykłąd firefoxa, o dziwo IE nie ma problemu z urlencode.

Z tego, co pamiętam, to musisz sprawdzać user_agent i konwertować. Niestety, nie jestem w stanie w tej chwili przytoczyć źródeł...

Podejrzewam, że rozwiązanie można by było znaleźć w źródłach skryptu Wikipedii; tam są URL-e przekazywane ze znakami narodowymi.
Go to the top of the page
+Quote Post
kamil_biela
post
Post #11





Grupa: Zarejestrowani
Postów: 31
Pomógł: 7
Dołączył: 14.06.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Zobacz czy Ci IIS nie wpycha jakiś domyślnych nagłówków z kodowaniem do odpowiedzi. Pod firebugiem czy czego tam używasz (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) .
Go to the top of the page
+Quote Post
potreb
post
Post #12





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Po zastosowaniu:
  1. <?php
  2. $str = ($_GET['nazwisko']);
  3. $return = iconv('cp1250', 'utf-8', $str);
  4. echo $return;
  5. ?>


Poprawnie mi wyświetla dane. Nie wiem naprawdę od czego to zależy. Zobaczę jutro pod IIS, jak się będzie zachowywał.

I funkcja
  1. <?php
  2. function decode($str) {
  3.    if(mb_detect_encoding($str, "auto") == 'UTF-8') {
  4.        return $str;
  5.    } else {
  6.        $str = iconv('cp1250', 'utf-8', $str);
  7.        return $str;
  8.    }
  9. }
  10. ?>


Co do źródeł wiki. Zrobiłem test i niestety wywala ś z urla w wiki :/
Nie wiem czy się czepiam, ale chcę mieć pewność, że wszystko będzie działać w należyty sposób.

Dzięki za pomoc.

Ten post edytował potreb 17.06.2009, 21:47:14
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 10:17