Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

unserialize() funkcija i naši karakteri?

[es] :: PHP :: unserialize() funkcija i naši karakteri?

[ Pregleda: 1867 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Thumbsucker

Član broj: 33437
Poruke: 96
*.telekabel.ba.



Profil

icon unserialize() funkcija i naši karakteri?31.05.2008. u 14:14 - pre 194 meseci
Eh ovako, radi se o Opencart skripti za web shop,
prvo sam imao problema da u bazu ubacim slova čćšđž,
onda sam to rijesio tako sto sam u kod koji se bavi insertovanjem
korisnika i njegovih podataka u tabelu dodao
Code:
mysql_query("set names 'utf8'");

tako da sad u bazi imam ta slova i nisu napisana sibolima nego bas čćšđž.

Kasnije mi se pojavio problem sa funkcijom unserialize() koja vjerovatno ima
problema sa ovim karakterima tako da prilikom zakljucena narudzbe koja u bilo kojem svom podatku sadrzi neki od nasih znakova čćšđž dobivam gresku(ako nema čćšđž sve ide regularno):

Code:
Notice: unserialize() [function.unserialize]: Error at offset 93 of 4831 bytes in public_html/xy/shop/library/cart/order.php on line 111

Warning: Cannot modify header information - headers already sent by (output started at public_html/xy/shop/library/cart/order.php:111) in public_html/xy/shop/library/environment/response.php on line 22


a sporni dio koda je:

Code:
function load($reference) {        

        $sql        = "select distinct * from order_data where reference = '?'";

        $order_info = $this->database->getRow($this->database->parse($sql, $reference));

        
     
        if ($order_info) {

            $this->reference = $reference;

            $this->data = unserialize($order_info['data']);

            

            return TRUE;

        } else {

            return FALSE;

        }


zna li neko rjesenje za ovaj problem?
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
*.adsl.gonet.rs.

Sajt: https://avramovic.info


+46 Profil

icon Re: unserialize() funkcija i naši karakteri?31.05.2008. u 15:01 - pre 194 meseci
Nisam se nešto bavio ovim, ali možda da odradiš base64_encode na stringu pre serialize() a onda base64_decode posle unserialize() pri čitanju?

Zvuči ludo ali možda i pomogne
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

Thumbsucker

Član broj: 33437
Poruke: 96
*.telekabel.ba.



Profil

icon Re: unserialize() funkcija i naši karakteri?31.05.2008. u 15:47 - pre 194 meseci
e super ti je ideja samo sto ta funkcija prihvata samo stringove, a meni treba za niz, a da bi enkodiro niz moras ga prvo serializovat ako se ne varam, ali
naveo si me na slijedece:

nesto razmisljam uz pomoc funkcije str_replace, ali nece da mi nadje č i ć, jel trebam ubaciti ascii simbole, sta mislis?
probao sam ovako:
Code:
$delete = "č";
    $order_info = str_replace($delete, "tvrdoc", $order_info);
    $delete = "ć";
    $order_info = str_replace($delete, "mekoc", $order_info);
    $delete = "đ";
    $order_info = str_replace($delete, "nijedz", $order_info);


a onda poslije ovo promjenim opet u č i ć
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
*.adsl.gonet.rs.

Sajt: https://avramovic.info


+46 Profil

icon Re: unserialize() funkcija i naši karakteri?31.05.2008. u 16:11 - pre 194 meseci
Šta imaš u tom nizu? Enkoduj svaki element niza pre serijalizovanja ako nije velik
A replace bi trebalo da radi, ali probaj sa http://php.net/mb_ereg_replace
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

Thumbsucker

Član broj: 33437
Poruke: 96
*.telekabel.ba.



Profil

icon Re: unserialize() funkcija i naši karakteri?31.05.2008. u 16:30 - pre 194 meseci
mozes li mi napisati kako cu primjenit mb_ereg_replace na svaki element u nizu?
 
Odgovor na temu

zedin
Edin Omeragic

Član broj: 181832
Poruke: 8
91.191.28.*



Profil

icon Re: unserialize() funkcija i naši karakteri?31.05.2008. u 19:07 - pre 194 meseci
Najbolje je da prvo probas sve da sačuvaš u UTF-8, nije dovoljno samo da na stranicu staviš charset=UTF-8 ( i to ima veze, jer od charseta na stranici zavisi kakve ćeš podatke dobiti u skripti ) , nego i da je snimiš sa tim enkodiranjem , isto važi i za html i za php fajlove, tako ćeš biti siguran da su podržani naši znakovi.

Kada uradiš $str = serialize($nesto) , prije zapisa u bazu dovoljno je da uradis $str = mysql_escape_string ( $str ) , i onda neće biti problema kod zapisa u bazu.

Za snimanje fajla sa UTF koristi Notepad2 ili PHP designer, jer sam primjetio da ova opcija neradi kod nekih editora.
 
Odgovor na temu

Thumbsucker

Član broj: 33437
Poruke: 96
*.telekabel.ba.



Profil

icon Re: unserialize() funkcija i naši karakteri?01.06.2008. u 11:02 - pre 194 meseci
Evo uspio sam rijesiti problem, ako nekome bude poslije trebalo:
Ubacio sam ove dvije linije koda:

Na početku order.php
Code:
mysql_query('SET NAMES "UTF8"');

I na spornom mjestu:
Code:
$order_info = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $order_info );
 
Odgovor na temu

[es] :: PHP :: unserialize() funkcija i naši karakteri?

[ Pregleda: 1867 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.