PHP ile MySQL özel karakter eklemek ve html sayfasında görüntülemek için nasıl

3 Cevap php

gibi bir veritabanı (MySQL) içine özel karakterler eklemek için nasıl

Registered symbol ( ® ) OR Copyright sign ( © ) OR Trade Mark sign ( ™ )

Ayrıca ben html sayfada orijinal olarak görüntülemek istiyorum.

Ben her iki tarafı (ön uç ve arka uç) yapmak ne, lütfen açar

Hangi fonksiyon daha etkilidir?

Method 1:

$_GET = array_map('trim', $_GET);
$_POST = array_map('trim', $_POST);

if(get_magic_quotes_gpc()){
  $_GET = array_map('stripslashes', $_GET);
  $_POST = array_map('stripslashes', $_POST);  

  $_GET = array_map('strip_tags', $_GET);
  $_POST = array_map('strip_tags', $_POST);  
 }
 else{
  $_GET = array_map('mysql_real_escape_string', $_GET);
  $_POST = array_map('mysql_real_escape_string', $_POST);   
 }

Method 2:

  foreach ($_POST as $key=>$value){
        if (!get_magic_quotes_gpc()) {
          return addslashes(htmlentities(strip_tags($value),ENT_QUOTES,'UTF-8'));
          } 
          else {
             return htmlentities(strip_tags($value),ENT_QUOTES,'UTF-8');
          }
  }

Biraz arasındaki fark ne karışık duyuyorum

htmlentities() and htlspecialchars() , ve hangisinin i kullanmak zorunda?

hangi fonksiyonun addslashes() or stripslashes() ne zaman insert veritabanına kullanılmalıdır?

3 Cevap

Sadece basitçe metin için bu semboller eklemek, ve SQL sorgusu olarak çalıştırın:

INSERT INTO tbl_name VALUES ("Here's my text: ©®");

Eğer bir web sitesi bu sembolleri ile bir şey yapmak (ama kaçmak için hatırlamıyorum görüntülemek istediğinizde en az <, >, & ({kullanarak [(3)]}), bu XML özel bir anlamı vardır neden / SGML (HTML) belgeleri)

PS. Ayrıca mysql_real_escape_string() herhangi bir SQL Injection sorunları önlemek için kullanarak SQL sorgusuna geçirilen metin kaçmayı unutmayın. Sunucu varsa magic_quotes_gpc devre dışı etkin veya en azından onun ham değeri GET / POST / COOKIE verileri filtre. Sen her zaman bilinçli değerleri kaçmak gerekir.

EDIT:

Yorumlarınız göre ... magic_quotes_gpc varsayılan olarak etkin ancak kolayca geri sihirli tırnak etkisi olabilir olup olmadığını hatırlamıyorum. Sadece PHP kod başından bu gibi bir şey eklemek:

if (get_magic_quotes_gpc()) {
  array_walk_recursive($_GET, 'stripslashes');
  array_walk_recursive($_POST, 'stripslashes');
  array_walk_recursive($_COOKIE, 'stripslashes');
}

Tırnak olmadan - - Şimdi her GPC değeri her zaman ham olmalıdır böylece sorgu içine herhangi bir değişken geçirmeden önce elle kaçmak zorunda.

Için PHP Dokümanlar htmlentities():

This function is identical to htmlspecialchars() in all ways, except with htmlentities(), all characters which have HTML character entity equivalents are translated into these entities.

Bunları saklamak olduğunda şeyler kodlama konusunda endişelenmeyin: veri Ham depolamak ve daha sonra bunu kodlamak htmlentities() HTML'nizde görüntülemek zaman.

Düzenleme: Ayrıca, okuma this.

Yeni başlayanlar için, just use mysql_real_escape_string when inserting into the database olmalıdır - bu henüz özgün tüm bilgileri korur, size mağaza güvenle kodlanmış olursa olsun sağlayacaktır.

Çıkışı açısından, Htmlentities ve htmlspecialchars'dan arasındaki temel fark olduğunu htmlentities will convert all characters that have entities ise htmlspecialchars will only convert <, >, &, ", '