[PHP] problem ze znakiem & w zmiennej

Witam,

mam skrypt, który wysyła formularz do pliku PHP. Ten plik go odbiera w poprawny sposób, o ile w formularzu nie wystąpiła litera “ó”. Ta bowiem zamieniana jest (inne pozostałe polskie znaki nie) na kod: ó PHP odbiera odpowiednie zmienne, jednak myli go znak “&” i uważa, że zaczyna się w tym miejscu nowa zmienna… tymczasem wcale tak nie jest. Np. wyraz “które” przesłany: “?tresc=które” - wartość zmiennej “tresc” u mnie to samo “kt”.

Prześlij metodą POST a nie GET :slight_smile:

Jeżeli wysyłając przez POST nadal będziesz miał problem spróbuj po stronie klienta kodować tekst za pomocą base64, a w PHP na serwerze użyć base64_decode. Problem z polskimi znakami rozwiązany.

Jeżeli korzystasz z JavaScript możesz użyć tego: http://phpjs.org/functions/base64_encode/

Właśnie używam POST’a… Ampersand jest mimo to nie do pokonania… A wiem, że przesyła się w porządku - zrobiłem nawet skrypt, który wyświetlił mi wszystkie zmienne - przesłałem POSTem: “?test=wartosc&&&&kolejna=cos” zwróciło mi to obecność dwóch zmiennych - “test” (o wartości "wartosc) i “kolejna” (wartość “cos”)…

POST nie jest w pasku adresowym :slight_smile:

Metoda dobra, tyle że pojawia się inny problem… W miejsce “+” automatycznie wskakuje mi spacja #-o

Wartości parametrów przekazywanych zarówno przez POST jak i GET (u Ciebie) należy zakodować funkcją urlencode albo encodeURIComponent (to są funkcje JavaScript).

Dzięki, jesteś genialny. =D>

Kompletnie zapomniałem o takim potraktowaniu zmiennej… Bawię się trochę ajax’em… i zapytania faktycznie wysyłam POST’em, jednak tworzę je nie poprzez tradycyjne formularze, ale w JavaScripcie, przez co kod do pewnego momentu faktycznie przypomina GET’a… :stuck_out_tongue:

Już wszystko działa, dzięki wielkie.

Ja od lat stosuję funkcję encodeURIComponent (w tutorialach używają najczęściej urlencode, ale ja uważam, że powinno się używać właśnie encodeURIComponent) do zakodowania przesyłanych danych formularza (nazwy i wartości zmiennych) - po stronie serwera (PHP) nic z tym już nie trzeba robić. Dodatkowo strony koduję w UTF-8 i tylko czasami w PHP muszę pamiętać o pewnych sprawach związanych z “dziwnym” wsparciem UTF-8 właśnie, a tak to komunikacja między JS a PHP działa zupełnie bezproblemowo (na co dowodem jest np. ten projekt: http://programistrz.pl/projekty/wikipedia/, który intensywnie przesyła dane, w których są używane nie tylko polskie ogonki, jak i inne znaki międzynarodowe).