ホームページ >バックエンド開発 >PHPチュートリアル >PHP 開発に関する 9 つの経験のまとめ_PHP チュートリアル
1. 第一の意識: 安全性
ほとんどの場合、私たちが開発する Web プログラムはデータベースを扱う必要があるため、SQL インジェクションは避けては通れない、議論が必要な問題であると言えます。そして近年、XSS や CSRF などの攻撃が流行し、「ハッカー」に新しい武器を与えたかのように見える一方で、私たちは常に受動的な状態にあります。ただし、次の 2 つの原則を覚えておく必要があります:
1. ユーザーが入力した内容を決して信用しないでください。 (古いことわざですが、本当です)
2. 出力する必要があるデータをエスケープします。
簡単に言うと、入力をフィルターし、出力をエスケープします
初心者の場合は、次のようなクエリ ステートメントを使用しないでください:
ユーザー名 WHERE ユーザー名 = $_POST['ユーザー名'] AND パスワード = $_POST['パスワード'];
から選択します。また、昔ながらの mysql 操作を使用する代わりに、PDO または Mysqli を使用します。
CSRFソリューションに関しては、現在私たちが取り組んでいるのは、フォーム送信ごとにトークン値を設定し、フォーム送信時に検証するというものです。
2. 各比較演算子の違いを明確に理解する
PHP の比較演算子、これは実際には小さな注意点とも言えますが、場合によっては非常に重要です。たとえば、== を使用するか === を使用するかを明確に考える必要があることがよくあります。strpos() 関数を使用したことがある場合は、次のコードで直感的に理解できるかもしれません。
3. elseの使用を減らすことができる場合は、elseの使用を減らしてください
これは、私がプログラミングに初めて触れたときから抱いていたアイデアのようです。if(){}else{} を見るたびに、この段落は実際にはもっとうまく書けるのではないかと感じるからです。 else キーワードの使用を減らすと、コードは 2 行減ります! はい、2 行も私たちの追求であり、私の経験からすると、else が少ないコードのほうが読みやすいように思えます。
if(この条件) { $x = 5 } else{ $x = 10;}
$xのデフォルト値が10の場合、次のように書くと良いでしょう:
$x = 10;
if(この条件)
{ $x = 5 }
;4.不要な括弧を削除します
ここでの目的は、実際には else キーワード部分と同じです。次のような状況では、コードを短くして読みやすくすることを目的としています。
if ($gollum == 'ハーフリング') { $height --;実際には、次のようになります:
if ($gollum == 'halfling') $height --;
こんなこともできます:
多くの場合、いくつかの文字列を置換する必要があります。PHP には、この目的を達成できる関数がいくつかあります。
str_replace()ereg_replace()
preg_replace()
どうしても正規のマッチングを使用する必要がある場合は preg_replace() を使用し、置換が可能であれば str_replace() を使用してください。不完全な統計によると、これら 3 つの中で str_replace() の効率が最も高いためです。
6. 三項演算子を使用します
三項演算子を使用すると、大量の if else ステートメントが削除され、コードが短くてクールになると多くの人が感じているかもしれません。
$host = strlen($host) > 0 ? $host : htmlentities($host);
7. キャッシュを使用する
現在、PHP で最も人気のあるキャッシュ テクノロジは Redis と Memcached です。PHP の公式ドキュメントには、Memcached の使用に関するチュートリアルもあります。Redis については、現在研究中であり、いくつかのチュートリアルを提供する予定です。すべてがうまくいけば、未来。
8.フレームワークを利用する
フレームワークには、パフォーマンスが低下する可能性を除けば、開発を高速化できるだけでなく、快適にコードを書くことができるため、使用しない理由はないようです。多くのセキュリティ問題に対する適切な解決策が得られます。最初にLaravelをお勧めしますが、Yii2 SlimやSymfonyなどのフレームワークは非常に優れており、Symfony以外は試したことがないため、最終的には残りの3つを使用したことがあります。ただし、私が推奨する Laravel があなたに適さない場合もあります。それは個人の好みによって異なります。
9. strlen()の代わりにisset()を使う
プロジェクトコード内の文字列の長さに基づいて条件判断を行う必要がある場合は、同じ条件下では isset() の方が約 5 倍高速であるため、現時点では isset() を直接使用することを強くお勧めします。 strlen() よりも次のようになります:
上記の 2 つの条件判断は同じ目的を達成できますが、最初の条件判断を使用することをお勧めします。
であると言えます。