Bir 'input type = "text"' çift tırnak kullanımı

4 Cevap php

Nasıl mümkün kullanıcıların bir textfield içinde '' "(çift tırnak) kullanmak için yapabilirsiniz ...

Ben ile benim PHP dosyası değişkeni alırken o alanda çift tırnak (değer) kullanın yapmak zaman:

   $text=mysql_real_escape_string($_POST['subject']);

ve sonra düzgün kaçan bir dize olsun, echo, ama dize tam olarak çift tırnak önce durur!

Ben bile, çünkü çift alıntı durdurmak istemiyorum!

Javascript doğrulayarak, ve değerini değiştirerek zaman, belki ben javascript ile daha çok şey yapmalıyım öylesine onun boş değil metin alanını doğrulamak için kullanılır, bu yüzden php çift tırnak da dahil olmak üzere, doğru değer alabilir miyim?

Teşekkürler

UPDATE

KOD:

   $headline= mysql_real_escape_string($_POST['headline']);
   echo htmlentities($headline);

I have tried merging the two above, will only give the same results. NOTE: I have ALSO TRIED adding ENT_QUOTES into the htmlentities function...

Girildiği gibi biçimlendirilmemiş dize:

   + , . ; : - _ space & % ! ? = # * ½ @ / \ [ ]< > " ' hej hej

çıktısı bu Yankı zaman:

   + , . ; : - _ space & % ! ? = # * ½ @ / \\ [ ]< >

4 Cevap

Sen htmlspecialchars($str, ENT_QUOTES) veya htmlentities($str, ENT_QUOTES) HTML varlık için tırnak dönüştürmek için kullanmak zorunda &quot;. Bu fonksiyon aynı zamanda kodlanmış olmalıdır diğer karakterlerin ilgileneceğim.

Eğer doğru veritabanına içine tek tırnak ile dizeleri girmek (ve SQL enjeksiyonu önlemek) böylece mysql_real_escape_string(), sadece veritabanı sorguları tek tırnak kaçan içindir.

EDIT: Eklendi parametreleri. Micahwittman sayesinde

value alıntı kesildi ediliyor çünkü input içine çıktılıyorsanız zaman çalışmıyor nedeni budur. Sen çıkışta htmlspecialchars() kullanmanız gerekir.

Onun giriş dizesini değiştirmek için JS iş, sunucu emin kabul edebilir yapmak gerekir ne onun ne olursa olsun alıyorum.

Eğer mysql kaçış işleve aktarmak önce başka bir değer çift tırnak Assci sembol veya HTML &quot; vb ya da dışarı kaçabilir?

mysql_real_escape_string bir mysql veritabanında depolamak için dizeleri hazırlamak için kullanılır: iki karıştırma şeyler ediyoruz. htmlentities, tarayıcıda yankı için dizeleri hazırlamak için kullanılır. Hem yapmak önemli, ama aynı dize birbiri ardına çağrı çalışması beklenemez. Aşağıdaki gibi bir şey yapın:

// Copy string after escaping for mysql into $db_headline
$db_headline= mysql_real_escape_string($_POST['headline']);

// Copy string after escaping for page display into $html_headline
$html_headline = htmlentities($_POST['headline']);

// Store the headline in the database

...

?>
<input type="text" name="headline" value="<?php echo $html_headline ?>" />

...