Skocz do zawartości

Polskie znaki w form value po przesłaniu POSTem - problem


jesu

Rekomendowane odpowiedzi

Mam:

echo'<input type="text" value="Wpisz tytul" onfocus="clearText(this)" name="naglowek"/>';

nie bede wklejal calosci bo to nie ma sensu, po prostu wysylam formularz postem na inna stronke a w niej sprawdzam

if (($_POST['naglowek']=='Wpisz tytul') || (strlen($_POST['naglowek'])==0)){echo 'blad';}

I takie mam pytanie - gdy w value jest tytul to dziala, a gdy tytuł nie działa (chodzi o polski znak)

WARUM ?

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli ajax to kodowanie UTF-8 oraz zapisywanie plikow jako Encoding UTF-8 zresztą to samo tyczy bez ajaxa ale w tym kodowaniu;

Jeśli są problemy polecam zastosowanie:

Nagłówki:

header("Content-Type: text/html; charset=iso-8859-2"); {lub utf-8}

Funkcje:

iconv('utf-8','iso-8859-2',$ulica);

I gra i buczy jak umarłemu w płucach ;)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

a gdy tytuł nie działa (chodzi o polski znak)
Czyli ? Na stronie wysyłającej, i odbierającej formularz jest takie samo kodowanie ?

Tak, wszedzie UTF-8. Nie dziala = podany warunek nie jest spelniony

Jeśli ajax to kodowanie UTF-8 oraz zapisywanie plikow jako Encoding UTF-8 zresztą to samo tyczy bez ajaxa ale w tym kodowaniu;

Jeśli są problemy polecam zastosowanie:

Nagłówki:

header("Content-Type: text/html; charset=iso-8859-2"); {lub utf-8}

Funkcje:

iconv('utf-8','iso-8859-2',$ulica);

I gra i buczy jak umarłemu w płucach ;)

Żaden AJAX i nie zmieniam kodowania. Problem imo lezy gdzie indziej

Odnośnik do komentarza
Udostępnij na innych stronach

Problem leży w tym, że nie potrafisz go wykryć, a na podstawie podanych informacji nikt tego za ciebie nie zrobi ;)

Dlatego podałem uniwersalne rozwiązania które przy odpowiednim zastosowaniu eliminują tego typu problemy ;)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

nie bede wklejal calosci bo to nie ma sensu

Przeczytałem co wkleiłeś i nie rozumiem problemu. Z tego co widzę, nie tylko ja - inni użytkownicy chcący Ci pomóc, również nie rozumieją i próbują zgadnąć o co chodzi.

tak czy siak, na stronie odbierającej dane z posta możesz dać iconv (przy czym nie wszystkie serwery obsługują tą funkcję). choć nie jest to żadne rozwiązanie, ot niepodrzebne zabawy wynikające z niekonsekwentnego programowania.

 

Odnośnik do komentarza
Udostępnij na innych stronach

Wwpisałeś "ł" w złym kodowaniu notepad++ >> format >> konwertuj na utf8 bez BOM albo wpisz w hex >> kody znaków .

Mam tak ustawione.

Ok szerzej: kodowanie wszedzie UTF-8 i...

admin.php

						if (isset($_GET['nowy']))
					{
						echo '<form action="fun/aktualnoscidodaj.php" method="post">';
						echo'<div id="edytujnaglowek">';
							echo'<input type="text" value="Wpisz tytul" onfocus="clearText(this)" name="naglowek"/>';
						echo'</div>';

						echo'<div id="edytujdata">';
							echo'<input type="text" name="data" value="'.date("Y-m-d").'"/>';
						echo'</div>';

						echo '<div id="fckeditor">';
							include_once("fckeditor/fckeditor.php");
							$oFCKeditor = new FCKeditor('FCKeditor1');
							$oFCKeditor->BasePath = 'fckeditor/';
							$oFCKeditor->Width	= 704;
							$oFCKeditor->Height   = 300;
							$oFCKeditor->Create();
						echo '</div>';
						echo '<div id="edytujprzycisk">';
							echo '<input name="zatwierdz" type="submit" value="zatwierdź"/>';
						echo'</div>';
						echo '</form>';
					}

aktualnoscidodaj.php

	if (($_POST['naglowek']=='Wpisz tytul') || (strlen($_POST['naglowek'])==0))
{
	header("Location:../admin.php?podstrona=zarzadzanieaktualnosciami&nowy");
}

z "tytul" dziala (warunek spelniony, z "tytuł" nie dziala. A kodowanie na bank mam dobre, wszedzie od bazy po pliku mam UTF-8. Wiec czemu nie dzialaja tu polskie znaki skoro bez problemu moge przesylac wszystko inne POSTem z polskimi znakami ? moze to kwestia ze w VALUE nie moze byc polskich liter ?

Odnośnik do komentarza
Udostępnij na innych stronach

E:

https://htmlhelp.com/reference/html40/forms/input.html

CDATA

Attribute values of type CDATA are made up of a sequence of characters that may include entities. Line feeds are ignored while each carriage return and tab is replaced with a space. Browsers may ignore leading and trailing whitespace within the attribute value.

CDATA attribute values are typically case-sensitive, though this is not the case with all attributes that take CDATA values.

miało być to ;)

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

Według tego https://htmlhelp.com/reference/html40/forms/input.html i tego https://htmlhelp.com/reference/html40/values.html :
ID and NAME

Attribute values of type ID and NAME must begin with a letter in the range A-Z or a-z and may be followed by letters (A-Za-z), digits (0-9), hyphens ("-"), underscores ("_"), colons (":"), and periods ("."). These values are case-sensitive.

Mowimy o VALUE nie o ID badz NAME

A wiec pomoglo

if (($_POST['naglowek']==utf8_encode('Wpisz tytuł')) || (strlen($_POST['naglowek'])==0))

Mion, blisko, blisko ;)

rozwiazanie alternatywne: w formularzu dac

echo'<input type="text" value="Wpisz tytuł" Accept-charset="UTF-8"onfocus="clearText(this)" name="naglowek"/>';

co ciekawe Accept-charset dziala, accept-charset nie dziala pomimo ze oba sie nie waliduja ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Wczoraj instalowałem oFCKeditor, ale dla serwisu z kodowaniem iso-8859-2 i nie miałem żadnego problemu z polskimi znakami, zresztą podobnie by było dla utf-8 :D

Z tego kodu co podajesz widzę, że kombinujesz logikę błędnie i "na oślep" :lol:

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Wczoraj instalowałem oFCKeditor, ale dla serwisu z kodowaniem iso-8859-2 i nie miałem żadnego problemu z polskimi znakami, zresztą podobnie by było dla utf-8 B)

Z tego kodu co podajesz widzę, że kombinujesz logikę błędnie i "na oślep" :lol:

No ale przeciez mowie ze juz dziala i podalem dwa rozne ujecia rozwiazania problemu :D

Odnośnik do komentarza
Udostępnij na innych stronach

No to supeR!

Tylko NIE jest SUPER, że cytujesz bez potrzeby cale poprzednie posty :lol:

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności