PHP echoとPHPショートエコータグの比較 質問する

PHP echoとPHPショートエコータグの比較 質問する

安全性は同じですか?

<?=$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一方、 は無効にできないため、記述が長くなっても、こちらを使用するのが最も安全です。

おすすめ記事