Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Polskie Znaki i $_GET
Forum PHP.pl > Forum > Przedszkole
tomasz_po
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 Ä…
pyro
spróbuj używając urlencode" title="Zobacz w manualu PHP" target="_manual
Cysiaczek
Nie powinno się używać polskich znaków w adresach URL.

Przenoszę na Przedszkole
tomasz_po
A widzisz inne rozwiazanie wyszukiwarki? Wikipedia kożysta z takiego rozwiazania i działa
b4x
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. ?>
tomasz_po
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
webdice
Najprawdopodobniej masz coś skopane w .htaccess (mod_rewrite). Pamiętaj że w skład [a-z] nie wchodzą polskie znaki.
tomasz_po
Kurde masz racje, a powiedz mi jak dodac polskie znaki do mod_rewrite czy dopisać je normalnie czy jest może jakaś reguła?
b4x
(.*) smile.gif

Taki mały przykład:
Kod
RewriteRule ^szukaj-(.*).html$ bleblebel.php?aa=$1
tomasz_po
Jak pisać regułe to wiem biggrin.gif tylko brakowało mi tego (.*)
ucho
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?
tomasz_po
  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
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.