Aynı zamanda nl2br ve mysql_real_escape_string kullanılması

2 Cevap

Doğru bir şekilde şu şekilde nl2br kullanımı nedir.

Ben bir metin alanı girişine gelen mesaja veri var

		$data = $_POST;
		$escaped_data = array();
		foreach ($data as $key => $val) {
		    $escaped_data[$key] = mysql_real_escape_string($val);
		}
		$desc = $escaped_data[description];
		$desc = nl2br($desc);

2 Cevap

Aslında, () nl2br kullanmak için doğru şekilde veri depolamak zaman hiç kullanmak için değil - veritabanından okuma ve müşteriye bunu çıktı üzereyken bu. Veritabanına insterted zaman verileri biçimlendirilmiş olması gerektiğini, ne daha sonra bir REST hizmet oluşturmak istiyorsanız ve gerçekten yerine HTML elemanının bu satırsonlarını gerekirse?

Eğer SQL sorgusu bir dize eklemek isterseniz Genel olarak konuşursak, size SQL sorgusuna eklemeden önce hemen kaçmak gerekir.

Ben size kaçan hakkında endişelenmenize gerek yok, böylece PHP script başında tüm verilerinizi kaçmak istediğinizi varsayalım.

Kötü bir tasarım yöntemi, çünkü SQL sorguları için kaçan dize orada dahil edilmemelidir:

  1. What happens when you add the escaped string to an input element of an HTML form? The original client's string will be modified.
  2. Bu zaten kaçtı verileri ile hazırlanan ifadeleri kullanmak için rahatsız edici ya da sorunlu bir yoldur.

Ben aşağıdaki kod kullanılması gerektiğini düşünüyorum:

function init_filter_input($method_array /* $_GET, $_POST, or whatever you wish */ )
{
    filter_UTF8($method_array);	// for a UTF8 encoded string
    filter_HTML($method_array);
}

function filter_UTF8($mixed)
{
    return is_array($mixed)
    	? array_map('filter_UTF8',$mixed)
    	: iconv('UTF-8','UTF-8//IGNORE',$mixed);
}   

function filter_HTML($mixed)
{
    return is_array($mixed)
    	? array_map('filter_HTML',$mixed)
    	: htmlspecialchars(trim($value),ENT_QUOTES);
}

Eğer SQL sorgusu bir dize eklemek istediğiniz zaman, hazır deyimleri, ya sprintf'i kullanmaya karar verebilir:

// sprintf example:

query('SELECT ... WHERE username="%s"', $unescaped_username);

function query($query_str, $params)
{
    if (is_array($params))
    {
    	$params = array_map('filter_SQL', $params);
    	$query_str = vsprintf($queryStr, $params);
    }
    else
    	$query_str = sprintf($query_str ,filter_SQL($params));

    mysql_query($query_str);
}