$ _COOKIE Üzerinden php çıkışa javascript çerezden Kiril karakterleri

2 Cevap php

Javascript ve php aracılığıyla sonra bunu çıktı yoluyla çerez rusça metni koymak için çalışıyorum zaman döndürür:

% U043F% u0440% u0432% u043E% u0435% u0440% u043A% u0430

Normal Kiril karakter bu çözmek için nasıl?

Bu benim Document.cookie geçmek için kullanıyorum fonksiyonudur:

function setCookie(c_name,val,c_expiredays,c_path,c_domain,c_secure)
{
    var exdate=new Date();
    exdate.setDate(exdate.getDate()+c_expiredays);
    document.cookie=c_name+ "=" +escape(val)+

    /* Additional settings */

((c_path) ? "; path=" + c_path : "") + ((c_domain) ? "; domain=" + c_domain : "") + // used to allow using only on a certain domain ((c_secure) ? "; secure" : "") + // used for HTTPS (SSL)

    ((c_expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

setcookie ('isim', $ (this) val (), 1.);

Sunucu tarafında, ben böyle çıktısı ediyorum:

(isset($_COOKIE['img_href_value']) ? $_COOKIE['img_href_value'] : '')

2 Cevap

Sen (her biri farklı tarayıcı üzerinden değişir ve çoğu irretrievably sonuçları mangles çalışırsanız ne olur) bir tanımlama doğrudan ASCII olmayan karakterleri koyamazsınız.

Yani çerez değerleri kullanmanız için bazı kodlamayı seçmek zorundasınız. Bu sürece istemci tarafı JavaScript ve sunucu tarafında PHP bir kodlama üzerinde hemfikir olduğu gibi, ne önemi yoktur. URL kodlama kesinlikle bu amaçla düzeni kodlayan popüler bir seçimdir, ama sizin için otomatik olarak deşifre etmeyecek, herhangi bir standart ve araçları ile zorunlu değil.

  • El PHP sonunda değeri rawurldecode çağırmanız gerekir, ya da decodeURIComponent at document.cookie ayıklamak için bir URL-kodlanmış çerez value karakter almak için JavaScript sonu.

  • Bu biçime kodlamak için ilgili fonksiyonların rawurlencode PHP tarafında ve encodeURIComponent JavaScript vardır.

  • (Bu size olmalı, hangi dizeleri için UTF-8 kullandığınız varsayılır.)

Don't (sadece form gönderme parametreleri bulunuyor ve bu bağlamda boşluk karakteri yanlış olur) PHP bunun için urlencode kullanın ve definitely don't {kullanabilirsiniz [(3 )]} JavaScript alıntı]} biçimi) (bu garip standart dışı {[(4 ile geliyor, her non-ASCII karakter yanlış olur).

(Genel olarak, JS escape / unescape kullanmak için herhangi bir neden var hemen hemen asla eski ve son derece tartışmalı bir kodlama düzeni.)