PHP - '&' ne zaman yazılan veriler sona

4 Cevap php

im backend jquery / ajax ve PHP kullanarak veri gönderme. Problem olan, zaman 'Jack & gibi giriş şey Jill o aldığında arka uç 'Jack' im sadece recieving 'tepeye gitti.

Veri gönderilmeden önce önyüz bir hata atılan hangi uyarılar 'Jack & Jill tepeye 'gitti.

Benim indeks sayfası im sadece [key] => Jack almanın çok üstünde die(print_r($_POST)); koyduğunuzda

nasıl ben veri kaybetme olabilir?

Ben Benim filtre olabileceğini düşündüm;

<?php

function filter( $data ) {
    $data = trim( htmlentities( strip_tags( mb_convert_encoding( $data, 'HTML-ENTITIES', "UTF-8") ) ) ); 
    if ( get_magic_quotes_gpc() ) { 
        $data = stripslashes( $data ); 
    } 
    //$data = mysql_real_escape_string( $data ); 
    return $data;
}

echo "<xmp>" . filter("you & me") . "</xmp>";

?>

ancak bu you &amp; me I eklendikten sonra yerinde, yukarıda testte iyi döner die(print_r($_POST));.

Herkes neden bu nasıl oluyor ve düşünebiliyor musunuz?

Herhangi bir yardım çok takdir. Saygılar, Phil.

4 Cevap

Büyük olasılıkla veri kodlamak URL başarısız oluyor. & karakter gönderilen form veri anahtar-değer çiftleri ayırır.

Bunun için encodeURIComponent kullan

POST verileri sadece url GET veriler gibi formda HTTP başlığı üzerinden gönderilir. Örneğin, veri var1=value1&var2=value2&var3=value3 gibi görünebilir. Tahmin edebileceğiniz gibi veri ve işaretleri kendisini içeriyorsa, bu formata çok iyi çalışması için gitmiyor. Kesin olmak gerekirse, sorun verilerin gönderiyorsunuz nasıl olduğunu.

(Bu konuda, ya da URL'ler olarak) sonrası veri ve işaretleri kullanmak için onlar & karakter için %26 kullanmanız gerektiği anlamına gelir, "urlencoded" olmalıdır. Yani, sorunu var gerçekten PHP değil, ancak veri gönderirken ne olursa olsun. Düzgün değerleri kodlama değil.

Javascript sonunda kodlamak () veya kaçış () kullanın ya

Javascript sonunda kullanmak gerekir escape().

PHP işlevi adlı sonuna urlencode().