PHP開発者がまとめた9つの提案

WBOY
リリース: 2016-06-23 13:30:17
オリジナル
822 人が閲覧しました

原文: https://jellybool.com/post/9-things-that-php-developer-Should-know-abo...

この記事は、私が実際に行った内容を要約したものですこれは単なる有名な格言ではなく、2 つの目的で書かれています。1 つは、これらの知識ポイントに従って独自のコードを書くように常に自分に言い聞かせることであり、もう 1 つは、それを共有することです。役立つかもしれません。念のため、そうですね。 。 。

1. 主な認識: セキュリティ

ほとんどの場合、私たちが開発する Web プログラムはデータベースを扱う必要があるため、SQL インジェクションは避けて通れない、議論されるべき問題であると言えます。そして近年、XSS や CSRF などの攻撃が流行し、「ハッカー」に新しい武器を与えたかのように見える一方で、私たちは常に受動的な状態にあります。ただし、次の 2 つの原則を覚えておく必要があります:

1. 永远不要相信用户输入的东西。(老话了,但这是真的)2. 将自己需要输出的数据进行转义。
ログイン後にコピー

簡単に言えば: 入力をフィルターし、出力をエスケープする

初心者の場合は、次のようなクエリ ステートメントを使用しないでください:

SELECT FROM users WHERE username = $_POST['username'] AND password = $_POST['password'];
ログイン後にコピー

また、PDO または Mysqli を使用してください。昔ながらの mysql 操作はもう使用しません。

CSRF ソリューションに関しては、現在のソリューションでは、フォーム送信ごとにトークン値を設定し、フォーム送信時にそれを検証します。

2. 比較演算子の違いを明確に理解する

PHP の比較演算子、これは実は小さな注意点とも言えますが、場合によっては非常に重要です。たとえば、== を使用するか === を使用するかを明確に考える必要があることがよくあります。strpos() 関数を使用したことがある場合は、次のコードを直感的に理解できるでしょう:

<?php$authors = 'Chris & Sean';if (strpos($authors, 'Chris')) {    echo 'Chris is an author.';} else {    echo 'Chris is not an author.';}
ログイン後にコピー

上記のコードの実行結果。実際、出力では Chris は著者ではありませんが、実際には Chris と Sean が著者であるのはなぜでしょうか。実際には、Chris は Chris & Sean の先頭、つまり 0 の位置に出現するため、substr() は条件判定文の bool 判定により 0 を false として返します。プログラムは「Chris is Not an author」と出力しますが、この状況ではどうすればよいでしょうか?実際にこれを行うことができます:

<?phpif (strpos($authors, 'Chris') !== FALSE) {    echo 'Chris is an author.';} else {    echo 'Chris is not an author.';}
ログイン後にコピー

ここでの !== と != の違いが反映されています。

3. else の使用を減らすことができる場合は、else の使用を減らしてください

これは、私が初めてプログラミングに触れたときから持っていたアイデアのようです。 , この段落は実際に次のように書けるような気がします。else キーワードの使用を減らすと、コード行が 2 行減ります。はい、2 行も私たちの追求であり、私の経験から言えば、else が少ないコードの方が読みやすいように思えます。

if( this condition ){$x = 5;}else{$x = 10;
ログイン後にコピー

$x のデフォルト値が 10 の場合、次のように記述するとよいでしょう:

$x = 10;if( this condition ){$x = 5;}
ログイン後にコピー

4. 不要な括弧を削除します

ここでの目的は、実は else キーワード部分と同じです。コードが短くなり、読みやすくなります。 次の状況では、コードの最適化を検討する必要があります:

if ($gollum == 'halfling') {$height --;}
ログイン後にコピー

実際には、次のようにすることもできます:

if ($gollum == 'halfling') $height --;
ログイン後にコピー

明確なコードはありますか?フィーリング?

5. str_replace() をさらに使用します

多くの場合、PHP にはこの目的を達成できる関数がいくつかあります。

<br />if ($gollum == 'halfling') $height --;else $height ++; if ($frodo != 'dead')echo 'Gosh darnit, roll again Sauron';foreach ($kill as $count)echo 'Legolas strikes again, that makes' . $count . 'for me!';
ログイン後にコピー

通常のマッチングを使用する必要がある場合は、 preg_replace() を使用してください。不完全な統計によると、3 つの中で str_replace() が最も効率的であるため、置換が可能な場合は str_replace() を使用してください。

6. 三項演算子を使用する

三項演算子を使用すると、多くの if else ステートメントが削除され、コードが短くてクールになると多くの人が感じているかもしれません。

str_replace()ereg_replace()preg_replace()
ログイン後にコピー

7. キャッシュを使用する

現在、PHP で最も人気のあるキャッシュ テクノロジは、PHP の公式ドキュメントに、Memcached の使用に関するチュートリアルもあります。最近、すべてがうまくいけば、将来いくつかのチュートリアルを提供する予定です。

8. フレームワークの使用

フレームワークには、パフォーマンスが低下する可能性があることを除けば、開発をスピードアップし、より効率的にコードを作成できるという利点がたくさんあります。プロセス中は快適に感じられ、多くの安全上の問題をうまく解決できるようになります。ここでの最初の推奨は Laravel ですが、Yii2 Slim や Symfony などのフレームワークは非常に優れており、Symfony は試したことはありませんが、最終的には残りの 3 つを使用した経験があります。ただし、私が推奨する Laravel があなたに合わない場合もあります。それは個人の好みによって異なります。

9. strlen() の代わりに isset() を使用します

プロジェクト コード内の文字列の長さに基づいて条件判断を行う必要がある場合は、現時点では isset() を直接使用することを強くお勧めします。同じ条件の後、 isset() の速度は strlen() の約 5 倍であるため、

$host = strlen($host) > 0 ? $host : htmlentities($host);
ログイン後にコピー

上記 2 つの条件判断は同じ目的を達成できますが、私は最初の条件判断をお勧めします。

ハッピーハッキング

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート