- Ескейпване на апостоф с htmlentities
WT форуми -> PHP MySQL ASP.NET -> Ескейпване на апостоф с htmlentities
Създайте нова тема Напишете отговор 
Автор Съобщение
Pro_Lamer4e
Нов
Нов

Регистриран на: 26/10/2009 7:10 am

Support: 2
Bonus: 4
Мнения: 187
Мнение 03/08/2018 4:21 pm     Ескейпване на апостоф с htmlentities Отговорете с цитат


здравейте, имам проблем с BBcode едитор, когато в текста присъства ( ' ) изобщо не запазва в базата никакъв текст ,има ли начин да се оправи това и как.

function encode_code($text) {
   $start_html = "<div align=\"center\"><div style=\"width: 85%; overflow: auto\">"
      . "<table width=\"100%\" cellspacing=\"1\" cellpadding=\"3\" border=\"0\" align=\"center\" class=\"bgcolor4\">"
      . "<tr bgcolor=\"E5EFFF\"><td colspan=\"2\"><font class=\"block-title\">Code</font></td></tr>"
      . "<tr class=\"bgcolor1\"><td align=\"right\" class=\"code\" style=\"width: 5px; border-right: none\">{ZEILEN}</td><td class=\"code\">";
   $end_html = "</td></tr></table></div></div>";
   $match_count = preg_match_all("#\[code\](.*?)\[/code\]#si", $text, $matches);
   for ($mout = 0; $mout < $match_count; ++$mout) {
      $before_replace = $matches[1][$mout];
      $after_replace = $matches[1][$mout];
      $after_replace = trim($after_replace);
      $zeilen_array = explode("<br />", $after_replace);
      $j = 1;
      $zeilen = "";
      foreach ($zeilen_array as $str) {
         $zeilen .= "" . $j . "<br />";
         ++$j;
      }
      $after_replace = str_replace("", "", $after_replace);
      $after_replace = str_replace("&amp;", "&", $after_replace);
      $after_replace = str_replace("", "&nbsp; ", $after_replace);
      $after_replace = str_replace("", " &nbsp;", $after_replace);
      $after_replace = str_replace("", "&nbsp; &nbsp;", $after_replace);
      $after_replace = preg_replace("/^ {1}/m", "&nbsp;", $after_replace);
      $str_to_match = "[code]" . $before_replace . "[/code]";
      $replace = str_replace("{ZEILEN}", $zeilen, $start_html);
      $replace .= $after_replace;
      $replace .= $end_html;
      $text = str_replace($str_to_match, $replace, $text);
   }

   $text = str_replace("[code]", $start_html, $text);
   $text = str_replace("[/code]", $end_html, $text);
   return $text;
}
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
Msecurity
Потребител
Потребител

Регистриран на: 18/09/2010 8:12 am

Support: 19
Bonus: 37
Мнения: 752
Мнение 03/08/2018 4:49 pm      Отговорете с цитат


addslashes....
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла Посетете сайта на потребителя
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 158
Bonus: 315
Мнения: 1472
Мнение 03/08/2018 6:27 pm      Отговорете с цитат


Msecurity написа:
addslashes....

По-добре prepared statements. Иначе трябва да внимава за абсолютно вски параметър да мине през addslashes. По-добре да се остави тази работа на db engine-а.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
georgi27
Нов
Нов

Регистриран на: 16/03/2018 4:21 pm

Support: 0
Bonus: 0
Мнения: 12
Мнение 03/08/2018 10:13 pm      Отговорете с цитат


А ако направи така htmlentities(mysql_real_escape_string(addslashes($_POST["name"]))); няма ли да е по добре? За процедурен код..
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Pro_Lamer4e
Нов
Нов

Регистриран на: 26/10/2009 7:10 am

Support: 2
Bonus: 4
Мнения: 187
Мнение 04/08/2018 12:48 pm      Отговорете с цитат


Така дали ще свърши работа
if (!function_exists("htmlspecialchars")) {
   function htmlspecialchars($message) {
      $message = preg_replace("#&(?!\#[0-9]+;)#si", "&amp;", $message); // Fix & but allow unicode
      $message = str_replace("<","&lt;",$message);
      $message = str_replace(">","&gt;",$message);
      $message = str_replace("\"","&quot;",$message);
      $message = str_replace("  ", "&nbsp;&nbsp;", $message);
                $message = str_replace("", "&lt;", $message);
      return $message;
   }

    function html($str) {
        return htmlspecialchars($str);
    }
}
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 158
Bonus: 315
Мнения: 1472
Мнение 04/08/2018 12:59 pm      Отговорете с цитат


georgi27 написа:
А ако направи така htmlentities(mysql_real_escape_string(addslashes($_POST["name"]))); няма ли да е по добре? За процедурен код..


Няма смисъл от трите едновременно. Първото е за дисплейване на потребителски инпут в html, второто е за вкарване на стойности в заявка, а последното слага \ пред кавичките.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 158
Bonus: 315
Мнения: 1472
Мнение 04/08/2018 1:01 pm      Отговорете с цитат


Pro_Lamer4e написа:
Така дали ще свърши работа
if (!function_exists("htmlspecialchars")) {
   function htmlspecialchars($message) {
      $message = preg_replace("#&(?!\#[0-9]+;)#si", "&amp;", $message); // Fix & but allow unicode
      $message = str_replace("<","&lt;",$message);
      $message = str_replace(">","&gt;",$message);
      $message = str_replace("\"","&quot;",$message);
      $message = str_replace("  ", "&nbsp;&nbsp;", $message);
                $message = str_replace("", "&lt;", $message);
      return $message;
   }

    function html($str) {
        return htmlspecialchars($str);
    }
}


Тук дефинираш built-in функция - защо?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Pro_Lamer4e
Нов
Нов

Регистриран на: 26/10/2009 7:10 am

Support: 2
Bonus: 4
Мнения: 187
Мнение 04/08/2018 1:38 pm      Отговорете с цитат


anonimen написа:
Pro_Lamer4e написа:
Така дали ще свърши работа
if (!function_exists("htmlspecialchars")) {
   function htmlspecialchars($message) {
      $message = preg_replace("#&(?!\#[0-9]+;)#si", "&amp;", $message); // Fix & but allow unicode
      $message = str_replace("<","&lt;",$message);
      $message = str_replace(">","&gt;",$message);
      $message = str_replace("\"","&quot;",$message);
      $message = str_replace("  ", "&nbsp;&nbsp;", $message);
                $message = str_replace("", "&lt;", $message);
      return $message;
   }

    function html($str) {
        return htmlspecialchars($str);
    }
}


Тук дефинираш built-in функция - защо?


ами и аз това се чудеш, взех скрипта за bbcode от един руски тракер, защото ми се видя най удачен и лесен... , но днес видях и тази функция . и реших все пак да я споделя, за да решим проблема ми с ' , започвам да се замислям дали да не ползвам ckeditor. ако искаш ще сподела целия bbcode да го разгледаш
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
Страница 1 от 1


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети