PHP form oto gönderdi verilerini kaçan?

3 Cevap php

Ben bir PHP sayfasına bir HTML formu ilanı var.

Ben PHP $ _POST değişkeni kullanarak veri okuyabilirsiniz.

Ancak, tüm verilerin kaçtı gibi görünüyor.

Bu nedenle, örneğin

a comma (,) = %2C a colon (:) = %3a a slash (/) = %2

bu yüzden bu tür http://example.com http% 3A% 2F% 2Fexample.com olarak POSTed almak gibi basit bir URL gibi şeyler

Ne için herhangi bir fikir oluyor?

3 Cevap

Aslında urldecode istiyorum. % Xx bir URL kodlama değil, bir html kodlama. Asıl soru neden bu kodları alıyorsanız edilir. O $ _GET içine isteği ayrıştırır ve $ _REQUEST değişkenler PHP genellikle sizin için URL çözer. POSTed formları urlencoded olmamalıdır. Bize formu üreten bazı kod gösterebilir miyim? Belki form nedense dışarı yolda kodlanmış ediliyor.

Bu sayfadaki uyarıyı bkz: http://us2.php.net/manual/en/function.urldecode.php

İşte tüm POST değişkenler çözmek için basit bir PHP döngü

foreach($_POST as $key=>$value) {
    $_POST[$key] = urldecode($value);
}

Daha sonra normal başına bunlara erişmek, ancak deşifre olabilir. Ben süper küresellerle (Ben her zaman PHP ile olduğu gibi onlara kesin veri olması gerektiğine inanıyoruz) kirletme sevmiyorum ben, ancak, bunları saklamak için farklı bir dizi kullanabilirsiniz.

Bu olmamalıydı, ve elle urldecode () ing tamir olabilir ama, muhtemelen daha sonra sizi ısırmaya yuvarlak gelebilir ki başka temel bir hata saklanıyor olacak.

Eğer kullanarak bir form POST sırasında varsayılan içerik türü 'application / x-www-form-kodlu', içindeki değerleri URL-kodlanmış (% xx) olan, PHP sizin için Doları değerler kullanılabilir yaptığında o geri alır rağmen _POST [] dizisi.

Eğer hala daha sonra istenmeyen% xx dizileri alıyorsanız, manuel URL kodlama orada olmaması gerektiğini oluyor başka bir katman olmalıdır. Sen nerede olduğunu bulmak gerekir. Bu gizli bir alan varsa, belki bunu üretir sayfa yanlışlıkla) (yerine htmlspecialchars'dan arasında) (urlencode kullanarak kodlayan veya bir şeydir? Online bazı örnek kod koyarak bulmamıza yardımcı olabilir.