2017-03-02 12 views
3

私はWeb上の関数を見つけて、ユーザー入力データを浄化し、$_POST[]メソッドの代わりにpost()の代わりに作成しました。しかし、この関数は、ç、ş、ö、ı、İ、Ö、のようなUTF-8文字を、öllのような文字列に変換して消毒しているようです。私はコードのどの部分がそれをしているのかわかりません。

ありがとうございます。

私はあなたがそれはあなたがUTF-8エンコードされた文字列を使用している知っているように呼び出して、あなたにhtmlentitiesにいくつかの追加のparamsを追加する必要があると思いますmanualを見てみると機能

function post($key) { 
    if (isset($_POST[$key])) { 
     $data = $_POST[$key]; 
     if (is_array($data)) { 
      foreach ($data as $key => $element) { 
       $data[$key] = filter($element); 
      } 
     } else { 
      $data = trim(htmlentities(strip_tags($data))); 
      if(get_magic_quotes_gpc()) 
       $data = stripslashes($data); 
      $data = pg_escape_string($data); 
     } 
    return $data; 
    } else { 
     return false; 
    } 
} 

答えて

2

消毒。

これは可能な解決策ですが、わかりやすくするために、関連する部分を別の機能にまとめました。

function post($key){ 
    if (isset($_POST[$key])){ 
    $post = $_POST[$key]; 

    if (is_array($post)) { 
     $data = array(); 
     foreach ($post as $key => $element) { 
     $data[$key] = filter($element); 
     } 
    } else { 
     $data = formatHtmlEntities($post); 
    } 

    return $data; 
    } 

    return false; 
} 

function formatHtmlEntities($data) 
{ 
    $stripTags = strip_tags($data); 
    $entityEncodedData = trim(htmlentities($stripTags, ENT_QUOTES, "UTF-8")); 

    if (get_magic_quotes_gpc()) { 
    $entityEncodedData = stripslashes($entityEncodedData); 
    } 

    return pg_escape_string($entityEncodedData); 
} 
+0

これは私の問題を解決しました、ありがとうございます。 – Ahmet

関連する問題