Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Polskie Znaki i $_GET
tomasz_po
post 13.07.2008, 03:56:27
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 18.10.2007

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


Witam, mam problem dotyczący polskich znaków moja strona ma kodowanie iso-8859-2 poniżej zamieszczam kod którym chce przechwycić i wyświetlić zmienna $_GET
  1. <?
  2. $word = $_GET['akcja'];
  3. echo $word;
  4. }
  5. ?>

i cały problem w tym że nie chce on wyświetlać polskich znaków, znaków specjalnych np. ( ), liczb
zamiast litery ą wyświetla mi Ä…
Powód edycji: dodałem tag (cysiaczek)
Go to the top of the page
+Quote Post
pyro
post 13.07.2008, 05:49:19
Post #2





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


spróbuj używając urlencode" title="Zobacz w manualu PHP" target="_manual


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
Cysiaczek
post 13.07.2008, 06:34:48
Post #3





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Nie powinno się używać polskich znaków w adresach URL.

Przenoszę na Przedszkole


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
tomasz_po
post 13.07.2008, 12:52:42
Post #4





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 18.10.2007

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


A widzisz inne rozwiazanie wyszukiwarki? Wikipedia kożysta z takiego rozwiazania i działa
Go to the top of the page
+Quote Post
b4x
post 13.07.2008, 13:08:29
Post #5





Grupa: Zarejestrowani
Postów: 658
Pomógł: 95
Dołączył: 20.12.2005
Skąd: N54,35° E18,63° (Gdańsk)

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


Proponowałbym zakodować link w urlencode" title="Zobacz w manualu PHP" target="_manual

A później:
  1. <?
  2. $word = urldecode($_GET['akcja']);
  3. echo $word;
  4. }
  5. ?>


--------------------
Go to the top of the page
+Quote Post
tomasz_po
post 13.07.2008, 13:22:59
Post #6





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 18.10.2007

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


Słowo łąka po urlencode wychodzi %B3%B1ka a po urldecode ³±ka i nadal sie wykłada. A co ciekawe przy znakach specjalnych, spacjach i cyfrach wyskakuje

The requested URL /szukaj-³±ka.html was not found on this server.

a gdy użyje normalnych znaków skrypt leci dalej sciana.gif

Ten post edytował tomasz_po 13.07.2008, 13:24:04
Go to the top of the page
+Quote Post
webdice
post 13.07.2008, 13:24:38
Post #7


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Najprawdopodobniej masz coś skopane w .htaccess (mod_rewrite). Pamiętaj że w skład [a-z] nie wchodzą polskie znaki.
Go to the top of the page
+Quote Post
tomasz_po
post 13.07.2008, 13:26:30
Post #8





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 18.10.2007

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


Kurde masz racje, a powiedz mi jak dodac polskie znaki do mod_rewrite czy dopisać je normalnie czy jest może jakaś reguła?
Go to the top of the page
+Quote Post
b4x
post 13.07.2008, 13:27:28
Post #9





Grupa: Zarejestrowani
Postów: 658
Pomógł: 95
Dołączył: 20.12.2005
Skąd: N54,35° E18,63° (Gdańsk)

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


(.*) smile.gif

Taki mały przykład:
Kod
RewriteRule ^szukaj-(.*).html$ bleblebel.php?aa=$1


Ten post edytował b4x 13.07.2008, 13:32:36


--------------------
Go to the top of the page
+Quote Post
tomasz_po
post 13.07.2008, 13:33:33
Post #10





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 18.10.2007

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


Jak pisać regułe to wiem biggrin.gif tylko brakowało mi tego (.*)
Go to the top of the page
+Quote Post
ucho
post 13.07.2008, 13:46:01
Post #11





Grupa: Zarejestrowani
Postów: 300
Pomógł: 32
Dołączył: 31.07.2006

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


Cysiaczek ma rację - absolutnie wszystko poza [a-zA-Z0-9-] w argumentach GET to potencjalne problemy i należy tego unikać za wszelką cenę. Np interpretacja "/" zależy od konfiguracji apacha który może nie pozwalać na przekazywanie tego znaku, nawet jeśli użyliśmy urlencode - nie mówiąc o tym że. np przy przetwarzaniu mod_rewrite apache część znaczków zakodowanych w postaci %xx sobie odkodowuje, a części nie co wprowadza dodatkowy bajzel.
Przykład - jeśli zrobiliśmy "?page=".urlencode("a+b") i user kliknął w tak powstały link to co możemy otrzymać z urldecode($_GET['page']) ? "a b" haha.gif
Wiadomo najlepiej było by używać wszędzie tylko POST ale często po prostu się nie da.
Z ciekawostek - jezeli mamy polskie literki w urlu np. Firefox sam zrobi urlencode w zapytaniu do serwera, IE nie. I osobiście uważam, że to co robi Fx to błąd - bo skąd ma wiedzieć czy używamy iso8859-2 czy UTF-8?

Ten post edytował ucho 13.07.2008, 13:47:07
Go to the top of the page
+Quote Post
tomasz_po
post 13.07.2008, 15:49:27
Post #12





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 18.10.2007

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


  1. <?
  2. $word = $_GET['word'];
  3. if ($word != '') {
  4. echo $word;
  5. } else {
  6. echo "Podaj wyrażenie do wyszukania";
  7. }
  8. ?>

A teraz problem innego typu smile.gif gdy w GET wysyłam "dsadasdas" wyskakuje mi ze mam podać wyrazenie do wyszukania ale gdy w wyszukiwarke wpisuje "dsdasdasą" w GET dostaje "dsdasdas%B1" i ładnie mi wyświetla to słowo dokładnie tak jak wpisałem, a co zrobić by wyświetlał bezproblemowo też słowa bez polskich znaków, to samo dzieje się w przypadku cyfr
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 19:40