溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP代碼優(yōu)化的示例分析

發(fā)布時(shí)間:2022-03-19 11:42:09 來(lái)源:億速云 閱讀:143 作者:小新 欄目:web開(kāi)發(fā)

這篇文章主要介紹了PHP代碼優(yōu)化的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一小段“劣質(zhì)”的PHP代碼優(yōu)化的過(guò)程,請(qǐng)仔細(xì)體會(huì)優(yōu)化過(guò)程

下面這一小段“劣質(zhì)”的PHP代碼是一道簡(jiǎn)化了的測(cè)試題。這種問(wèn)題就像在問(wèn):你該怎樣優(yōu)化這段代碼?

<?
echo("<p>Search results for query: " .
$_GET['query'] . ".</p>");
?>

這段代碼的主要問(wèn)題在于它把用戶提交的數(shù)據(jù)直接顯示到了網(wǎng)頁(yè)上,從而產(chǎn)生XSS漏洞。其實(shí)有很多方法可以填補(bǔ)這個(gè)漏洞。那么,什么代碼是我們想要的呢?

<?
echo("<p>Search results for query: " .
htmlspecialchars($_GET['query']) . ".</p>");
?>

這是最低要求。XSS漏洞用htmlspecialchars函數(shù)填補(bǔ)了,從而屏蔽了非法字符。

<?php 
if (isset($_GET['query'])) 
{ 
 echo '<p>Search results for query: ', 
 htmlspecialchars($_GET['query'], ENT_QUOTES), '.</p>'; 
} 
?>

接著優(yōu)化:

<?php 
if (isset($_GET['query'])) 
{ 
 echo '<p>Search results for query: ', 
 htmlspecialchars($_GET['query'], ENT_QUOTES), '.</p>'; 
} 
?>
  • <?被替換成了<?php,這樣更符合XML規(guī)范。

  • 在輸出$_GET['query']的值之前先判斷它是否為空。

  • echo命令中多余的括號(hào)被去掉了。

  • 字符串用單引號(hào)限定,從而節(jié)省了PHP從字符串中搜索可替換的變量的時(shí)間。

  • 用逗號(hào)代替句號(hào),節(jié)省了echo的時(shí)間。

  • 將ENT_QUOTES標(biāo)識(shí)傳遞給htmlspecialchars函數(shù),從而保證單引號(hào)也會(huì)被轉(zhuǎn)義。雖然這并是最主要的,但也算是一個(gè)良好習(xí)慣。


感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“PHP代碼優(yōu)化的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI