安全性は同じですか?
<?=$function_here?>
安全性が低く、ページの読み込み時間が遅くなるという欠点があります。私は echo の使用に固執しています。
メリットとデメリットは何ですか?
ベストアンサー1
初めに、<?=
ではありません短いオープンタグですが、速記エコーは と同じです<?php echo
。また、無効にすることはできません。そのため、常に有効になっているという意味で安全に使用できます。
安全性について言えば安全出力は常にエンコード出力媒体のルールに従います。
たとえば、HTML 内でデータをエコーする場合は、HTML エンコードする必要があります。
<?= htmlspecialchars($function_here, ENT_QUOTES) ?>
または、JavaScript 内でデータをエコーする場合は、JavaScript でエンコードする必要があります。
<script>var=<?= json_encode($function_here) ?>
あるいは、HTMLとJSの両方を使用する場合は、両方エンコーディングを使用する必要があります:
<?php foreach($links as $label => $url): ?>
<br>
<form method="post">
<button class="my" onclick="<?=htmlspecialchars("window.open(".json_encode($url).")", ENT_QUOTES) ?>">
<?=htmlspecialchars($label, ENT_QUOTES) ?>
</button>
</form>
<?php endforeach ?>
短い開始タグといえば、 というタグが 1 つだけあり<?
、常に有効になっているわけではありません (short_open_tag
指令)。
実際、PHP 5.3.0 に付属する php.ini-production ファイルでは、これらはデフォルトで無効になっています。
$ grep 'short_open' php.ini-production
; short_open_tag
short_open_tag = Off
したがって、配布するアプリケーションでこれらを使用することは、良い考えではないかもしれません。これらが有効になっていないと、アプリケーションは動作しません。
<?php
一方、 は無効にできないため、記述が長くなっても、こちらを使用するのが最も安全です。