原文: https://jellybool.com/post/9-things-that-php-developer-Should-know-abo...
この記事は、私が実際に行った内容を要約したものですこれは単なる有名な格言ではなく、2 つの目的で書かれています。1 つは、これらの知識ポイントに従って独自のコードを書くように常に自分に言い聞かせることであり、もう 1 つは、それを共有することです。役立つかもしれません。念のため、そうですね。 。 。
ほとんどの場合、私たちが開発する Web プログラムはデータベースを扱う必要があるため、SQL インジェクションは避けて通れない、議論されるべき問題であると言えます。そして近年、XSS や CSRF などの攻撃が流行し、「ハッカー」に新しい武器を与えたかのように見える一方で、私たちは常に受動的な状態にあります。ただし、次の 2 つの原則を覚えておく必要があります:
1. 永远不要相信用户输入的东西。(老话了,但这是真的)2. 将自己需要输出的数据进行转义。
簡単に言えば: 入力をフィルターし、出力をエスケープする
初心者の場合は、次のようなクエリ ステートメントを使用しないでください:
SELECT FROM users WHERE username = $_POST['username'] AND password = $_POST['password'];
また、PDO または Mysqli を使用してください。昔ながらの mysql 操作はもう使用しません。
CSRF ソリューションに関しては、現在のソリューションでは、フォーム送信ごとにトークン値を設定し、フォーム送信時にそれを検証します。
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.';}
ここでの !== と != の違いが反映されています。
これは、私が初めてプログラミングに触れたときから持っていたアイデアのようです。 , この段落は実際に次のように書けるような気がします。else キーワードの使用を減らすと、コード行が 2 行減ります。はい、2 行も私たちの追求であり、私の経験から言えば、else が少ないコードの方が読みやすいように思えます。
if( this condition ){$x = 5;}else{$x = 10;
$x のデフォルト値が 10 の場合、次のように記述するとよいでしょう:
$x = 10;if( this condition ){$x = 5;}
ここでの目的は、実は 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!';
6. 三項演算子を使用する
三項演算子を使用すると、多くの if else ステートメントが削除され、コードが短くてクールになると多くの人が感じているかもしれません。
str_replace()ereg_replace()preg_replace()
現在、PHP で最も人気のあるキャッシュ テクノロジは、PHP の公式ドキュメントに、Memcached の使用に関するチュートリアルもあります。最近、すべてがうまくいけば、将来いくつかのチュートリアルを提供する予定です。
フレームワークには、パフォーマンスが低下する可能性があることを除けば、開発をスピードアップし、より効率的にコードを作成できるという利点がたくさんあります。プロセス中は快適に感じられ、多くの安全上の問題をうまく解決できるようになります。ここでの最初の推奨は Laravel ですが、Yii2 Slim や Symfony などのフレームワークは非常に優れており、Symfony は試したことはありませんが、最終的には残りの 3 つを使用した経験があります。ただし、私が推奨する Laravel があなたに合わない場合もあります。それは個人の好みによって異なります。
プロジェクト コード内の文字列の長さに基づいて条件判断を行う必要がある場合は、現時点では isset() を直接使用することを強くお勧めします。同じ条件の後、 isset() の速度は strlen() の約 5 倍であるため、
$host = strlen($host) > 0 ? $host : htmlentities($host);