Mysql
 sql >> база данни >  >> RDS >> Mysql

Имам ли нужда от htmlentities() или htmlspecialchars() в подготвените оператори?

htmlentities и htmlspecialchars се използват за генериране на HTML изход който се изпраща до браузъра.

Подготвените оператори се използват за генериране/изпращане на заявки към машината за база данни .

И двете позволяват избягване на данни; но те не избягват за същото използване.
И така, не, подготвени изрази (за SQL заявки) не ви пречи да използвате правилно htmlspecialchars /htmlentities (за генериране на HTML)

Относно strip_tags :ще премахне тагове от низ, където htmlspecialchars ще ги трансформира в HTML обекти.
Тези две функции не правят едно и също нещо; трябва да изберете кой да използвате в зависимост от вашите нужди / какво искате да получите.

Например с това парче код:

$str = 'this is a <strong>test</strong>';
var_dump(strip_tags($str));
var_dump(htmlspecialchars($str));

Ще получите този вид изход:

string 'this is a test' (length=14)
string 'this is a &lt;strong&gt;test&lt;/strong&gt;' (length=43)

В първия случай няма етикет; във втория, правилно избягали.

И с HTML изход:

$str = 'this is a <strong>test</strong>';
echo strip_tags($str);
echo '<br />';
echo htmlspecialchars($str);

Ще получите:

this is a test
this is a <strong>test</strong>

Кое от тях искате? Това е важният въпрос ;-)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изпращане на формуляр с помощта на <input type =button>

  2. pip3 инсталира mysql-python неуспешно с код за грешка 1 в /tmp/pip-install-4nev4id4/mysql-python/

  3. Как да оптимизирам заявката, ако таблицата съдържа 10000 записа, използвайки MySQL?

  4. Как да изберете отделни редове, без да използвате група по оператор

  5. Връщане на стойност, когато няма редове в PDO