Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Internet > Web razvoj

Web razvoj Sve u vezi sa razvojem Internet sajtova: programi, dizajn, usluge hostinga, administracija...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 23.1.2012, 1:40   #1
doctor
Deo inventara foruma
 
Član od: 14.3.2008.
Lokacija: EHCPCGG
Poruke: 12.110
Zahvalnice: 4.319
Zahvaljeno 3.295 puta na 2.274 poruka
Određen forumom Flash + PHP + MySQL problem. Golem.

Ne znam gde da smestim ovo, da li u serverske aplikacije ili Flash, pa sam smestio ovde

Dakle moj sajt radi kao mini CMS.
Jedan deo je rađen u Flashu i on, naravno, služi da krajnji korisnik "interaguje" sa njim. Flash podatke "dobavlja" pomoću URLLoader-a i PHP skripti (uglavnom HTTP POST requestovi; PHP mu "odgovara" podacima koje je tražio).
Drugi deo je administratorski, pisan je u PHP-u, koristi MySQL za smeštanje podataka, prost je (običan HTML bez ikakvog JavaScripta ili sličnog) ali vrši svoj posao.

Jedna "sekcija" sajta služi da prikazuje najnovije vesti. Tu leži problem.

Dakle, ako u bilo koji članak preko administratorskog panela unesem karaktere kao što su Č, Ć, Ž itd, Flash taj članak ne učitava i izbacuje:
Kod:
Error #2101: The String passed to URLVariables.decode() must be a URL-encoded query string containing name/value pairs.
    at Error$/throwError()
    at flash.net::URLVariables/decode()
    at flash.net::URLVariables()
    at flash.net::URLLoader/onComplete()
Što očigledno znači da ne može da dekodira Č, Ć, Ž itd. Font koji koristim u Flashu je Arial i kad kucam unutar Flasha i Č i Ć i Ž su prepoznati ali kad PHP "baci" Flashu članak on ga ne prihvata jer ne može da ga dekodira. U administratorskom delu sajta (čisti HTML i PHP) je sve okej, ta slova se iz baze i čitaju i pišu u nju bez problema.

Pomagajte!

Poslednja ispravka: doctor (23.1.2012 u 1:50)
doctor je offline   Odgovor sa citatom ove poruke
Stara 23.1.2012, 2:26   #2
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
Određen forumom Re: Flash + PHP + MySQL problem. Golem.

Koristi urlencode() nad URL-ovima koje Flash dobija od PHP-a.

PHP kod:
<?php
$domain 
"http://www.domain.com";
$query "id=1&title=ćĆžŽđĐ!";
$query_encoded urlencode($query);
$result $domain '?' $query_encoded
echo 
$result '<br />';
echo 
urldecode($result);
?>
Neutrino je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Neutrino na korisnoj poruci:
doctor (23.1.2012)
Stara 23.1.2012, 2:31   #3
doctor
Deo inventara foruma
 
Član od: 14.3.2008.
Lokacija: EHCPCGG
Poruke: 12.110
Zahvalnice: 4.319
Zahvaljeno 3.295 puta na 2.274 poruka
Određen forumom Re: Flash + PHP + MySQL problem. Golem.

Guglam celo veče i na tu funkciju nisam naišao. Skapirao sam da je problem u tome, ali nisam znao kako da rešim ni ručna konverzija nija pomogla. Evo probaću odmah.

EDIT: Sada umesto slova Č dobijam &#269 u tekstovima... To je Č u UTF8 formatu koliko znam...
doctor je offline   Odgovor sa citatom ove poruke
Stara 23.1.2012, 2:35   #4
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
Određen forumom Re: Flash + PHP + MySQL problem. Golem.

Citat:
doctor kaže: Pregled poruke
Guglam celo veče i na tu funkciju nisam naišao. Skapirao sam da je problem u tome, ali nisam znao kako da rešim ni ručna konverzija nija pomogla. Evo probaću odmah.
Sve što iz PHP-a proizvodi materijal za GET zahtev ili ide u URL obavezno treba da prođe kroz urlencode. Bitno je da se enkodiranje radi samo nad query delom adrese (sve što je desno od znaka ?) nikako nad celom adresom.
Neutrino je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Neutrino na korisnoj poruci:
doctor (23.1.2012)
Stara 23.1.2012, 2:42   #5
doctor
Deo inventara foruma
 
Član od: 14.3.2008.
Lokacija: EHCPCGG
Poruke: 12.110
Zahvalnice: 4.319
Zahvaljeno 3.295 puta na 2.274 poruka
Određen forumom Re: Flash + PHP + MySQL problem. Golem.

Vidi, PHP u ovom slučaju vraća nešto ovako Flashu:

title=neki naslov&date=neki datum&content=neki tekst

URLVariables to dekodira... Ali očigledno postoji problem kada se, na primer, u naslovu nađe slovo č. Tada se (kada koristim urlencode nad naslovom koji sam sveže izvukao iz baze) prikazuje onaj UTF8 kod umesto slova č u naslovu...
doctor je offline   Odgovor sa citatom ove poruke
Stara 23.1.2012, 2:51   #6
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
Određen forumom Re: Flash + PHP + MySQL problem. Golem.

decode() ne radi pretvaranje urlenkodovanih vrednosti u njihovo originalno stanje već samo kreira parove parametar/vrednost koji se vezuju za objekat tipa URLVariables.

Da bi "dekodirao" URLenkodovan sadržaj u ActionScript-u moraš da koristiš unescape() metodu.
Neutrino je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Neutrino na korisnoj poruci:
doctor (23.1.2012)
Stara 23.1.2012, 12:23   #7
doctor
Deo inventara foruma
 
Član od: 14.3.2008.
Lokacija: EHCPCGG
Poruke: 12.110
Zahvalnice: 4.319
Zahvaljeno 3.295 puta na 2.274 poruka
Određen forumom Re: Flash + PHP + MySQL problem. Golem.

Aha, nisam uspeo da provalim to iz dokumentacije... Hajde probacu i to, nadam se da ce upaliti :-) Mada vidim da decode koji URLVariables po defaultu izvrsava uspesno izvlaci unicode slova Ch (nemam na mobilnom latinicu :-)) osim ako ti nisi hteo upravo to i da kazes, da decode izvrsava i ovu f-ju...
doctor je offline   Odgovor sa citatom ove poruke
Stara 23.1.2012, 20:21   #8
doctor
Deo inventara foruma
 
Član od: 14.3.2008.
Lokacija: EHCPCGG
Poruke: 12.110
Zahvalnice: 4.319
Zahvaljeno 3.295 puta na 2.274 poruka
Određen forumom Re: Flash + PHP + MySQL problem. Golem.

Ne pomaže mi ni ova f-ja... Elem pročitao sam ovo u dokumentaciji AS3:
Citat:
...When a file has successfully downloaded, the flash.events.Event.COMPLETE event will be dispatched. The loaded data is decoded from UTF-8 or UTF-16 encoding into a string....
To važi, po dokumentaciji i za URLLoader i URLVariables (http://help.adobe.com/en_US/ActionSc...0204-7cfd.html)

U čemu grešim? Da ne leži problem u tome što ja šaljem "sirove" podatke u bazu sa administratorske strane? Treba li i njih da URLencodujem pre smeštanja u bazu?
doctor je offline   Odgovor sa citatom ove poruke
Stara 23.1.2012, 21:56   #9
doctor
Deo inventara foruma
 
Član od: 14.3.2008.
Lokacija: EHCPCGG
Poruke: 12.110
Zahvalnice: 4.319
Zahvaljeno 3.295 puta na 2.274 poruka
Određen forumom Re: Flash + PHP + MySQL problem. Golem.

Izvinjavam se na trećem postu ali to je da bi svi videli poruku.

Dakle rešio sam problem i to na sledeći način (daću primer na slovu Č):

Iako su i baza i PHP bili podešeni da rade sa UTF8, nije mi uspevalo da upišem Č "normalno" već se u bazu upisivao njegov unicode kod &#269. Guglao sam malo više i uspeo da pronađem sledeće rešenje:

Nakon konektovanja na bazu odraditi sledeće query-je pre bilo kakvih operacija nad njom:
PHP kod:
mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION='utf8_unicode_ci'"); 
Nakon toga treba da pre echo() funkcije odradim urlencode().
Ovo je jako bitan deo jer na ovaj način nije htelo da radi (primer konkretnog PHP koda):

PHP kod:
$final "";
$final .= "title=" mysql_result($result$id"title");
$final .= "&status=" mysql_result($result$id"status");
$final .= "&content=" mysql_result($result$id"content");
                
echo 
urlencode($final); 
Ali ovako radi:
PHP kod:
$final "";
$final .= "title=" urlencode(mysql_result($result$id"title"));
$final .= "&status=" urlencode(mysql_result($result$id"status"));
$final .= "&content=" urlencode(mysql_result($result$id"content"));
                
echo 
$final
I Flash prikazuje slovo Č

Naravno NIKAKO ne zaboraviti u <body> tagu sledeću liniju:
HTML kod:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
I da se zna u Flashu nisam koristio unescape(), očigledno URLLoader/URLVariables to sam obavlja

Hvala na pomoći, Neutrino

Poslednja ispravka: doctor (24.1.2012 u 1:15)
doctor je offline   Odgovor sa citatom ove poruke
Stara 23.1.2012, 22:31   #10
Dekip
V.I.P. Recenzent
 
Član od: 8.11.2008.
Lokacija: XV535
Poruke: 3.198
Zahvalnice: 767
Zahvaljeno 1.024 puta na 568 poruka
Određen forumom Re: Flash + PHP + MySQL problem. Golem.

Не знам за флеш, али и ја сам имао проблема са нашим словима у инклудованим фајловима. Game Fever ми је помогао и од сада овај први део кода који си навео убацујем под обавезно у connect_db.php фајл.
Dekip je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Dekip na korisnoj poruci:
doctor (24.1.2012)
Stara 24.1.2012, 1:14   #11
doctor
Deo inventara foruma
 
Član od: 14.3.2008.
Lokacija: EHCPCGG
Poruke: 12.110
Zahvalnice: 4.319
Zahvaljeno 3.295 puta na 2.274 poruka
Određen forumom Re: Flash + PHP + MySQL problem. Golem.

Eh, da sam samo to video ranije
doctor je offline   Odgovor sa citatom ove poruke
Stara 24.1.2012, 12:23   #12
VojaM
Ad Ministrator
 
Avatar korisnika VojaM
 
Član od: 19.8.2005.
Lokacija: Beograd, SK
Poruke: 7.280
Zahvalnice: 29
Zahvaljeno 3.041 puta na 1.544 poruka
Određen forumom Re: Flash + PHP + MySQL problem. Golem.

Citat:
doctor kaže: Pregled poruke
I da se zna u Flashu nisam koristio unescape(), očigledno URLLoader/URLVariables to sam obavlja

Hvala na pomoći, Neutrino
Bravo za to sa unescape, neki genijalci obavezno to koriste, pa onda u tekstu sve duplo izlazi.
VojaM je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku VojaM na korisnoj poruci:
doctor (24.1.2012)
Stara 24.1.2012, 13:05   #13
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
Određen forumom Re: Flash + PHP + MySQL problem. Golem.

Citat:
doctor kaže: Pregled poruke
Ne pomaže mi ni ova f-ja... Elem pročitao sam ovo u dokumentaciji AS3:
To važi, po dokumentaciji i za URLLoader i URLVariables (http://help.adobe.com/en_US/ActionSc...0204-7cfd.html)

U čemu grešim? Da ne leži problem u tome što ja šaljem "sirove" podatke u bazu sa administratorske strane? Treba li i njih da URLencodujem pre smeštanja u bazu?
Postoji velika razlika između dekodiranja primljenog streama u odgovarajući enkoding i pretvaranje njegovih url enkodovanih entiteta u UTF-8 karaktere. To su dve potpuno različite stvari.
Citat:
doctor kaže: Pregled poruke
Izvinjavam se na trećem postu ali to je da bi svi videli poruku.

Dakle rešio sam problem i to na sledeći način (daću primer na slovu Č):
...
Ako MySQL server nije kompajliran i konfigurisan da po defaultu koristi UTF-8 karakterni set onda moraš za UTF-8 podatke eksplicitno da ga postaviš ili slanjem SET NAMES direktive ili korišćenjem odgovarajućih PHP funkcija (mysql_set_charset, mysqli::set_charset). Za urlencode() sam već rekao da moraš uvek da ga koristiš kada podatke šalješ kroz GET zahtev inače rizikuješ da nešto neće funkcionisati kako treba zato što browseri odbijaju da dekoduju podatke koje šalješ na način kako si ti zamislio.
Citat:
VojaM kaže: Pregled poruke
Bravo za to sa unescape, neki genijalci obavezno to koriste, pa onda u tekstu sve duplo izlazi.
unescape() ne može da proizvodi dupli sadržaj jer se njegov posao svodi na čistu zamenu postojećih URL enkodovanih kodova u stringu. Ukoliko je string (njegov query deo) iz nekog razloga čist zamena neće biti izvršena.
Neutrino je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Neutrino na korisnoj poruci:
doctor (24.1.2012)
Odgovor

Bookmarks sajtovi

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
MultiBoot USB flash - vodič za preživljavanje laikexpert Slobodni softver 5 11.12.2015 21:15
PHP problem sa slovima!? Aleksandar1987 Programiranje 6 11.8.2011 23:47
flash player problem metta Kvarovi 8 21.2.2011 23:14
problem sa Flash playerom? Mladja Kvarovi 5 18.2.2011 16:04
Problem u Joomli!, php timeout 30 sek. Pecarošmlad Web razvoj 5 13.9.2009 15:13


Sva vremena su po Griniču +2 h. Sada je 15:26.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com