Help us understand the problem. What is going on with this article?

PHP うまく説明できなかった集

More than 1 year has passed since last update.

僕は基本BoostNoteを使ってメモをしているのですが、phpの学習がひと段落ついたので一旦Qiitaにアウトプットしときます。内定先の課題の一つでtodosアプリのソースコードを「新規作成」「更新」「削除」それぞれの処理の流れに沿って、コードを全行・全メソッド説明するというものがあり、その説明をメンターにしている中で、言葉に詰まったところを今回は書きます。
頑張って自分と同じくらいの学習度の人に伝わりやすいように。順番はぐちゃぐちゃです。

$_POST

  • HTTPPOSTメソッドで送信された値を取得する変数

暗号化とハッシュ化の違い

ハッシュ化

  • 不可逆変換なので元データを復元できない
用途
  • パスワード保管等

暗号化

  • 秘匿変換なので元データを複合化することができる
用途
  • 機密情報の秘匿等

checkTokenによる整合性を確認する意味

function checkToken($token)
{
    if (empty($_SESSION['token']) || ($_SESSION['token'] !== $token)) {
        $_SESSION['err'] = '不正な操作です';
        redirectToPostedPage();
    }
}

非正規ルートからのアクセスを防ぐため

SESSION

サーバーとクライアントつまり、ユーザーとアプリケーション側がやり取りする上でアプリケーション側がユーザーを特定するために使用する

エスケープ処理の必要性

悪意のあるコードを特定するため

htmlspecialchars

フォームから送られてきた値や、データから取り出した値をブラウザに表示する

リファラ

あるページを開いたユーザーがどのページから流入してきたかを知るための情報

PDO

PHPとデータベースサーバーの間の接続

PDOStatement

プリペアドステートメント(SQL文を最初に用意しておいて、その後はクエリ内のパラメータの値だけを変更してクエリを実行できる機能のこと)を表す

PDOException

PDOが発するエラーを出力する

bindValue

値をパラメータにバインドさせる

:textの読み方と意味

読み方

プレースホルダ

 意味

SQL文の中で「ユーザーが入力した値を代入する箇所」

使う意味

プレースホルダを使わずにユーザーから入力された値を直接SQLに結合してしまうと不正な値が入力された時、SQL文が壊れるもしくは、別の文に変化する恐れがある(SQLインジェクション)
プレースホルダを使うと、その部分はあくまで「値として処理し、SQL文として実行されなくなる」

prepareとqueryの違い

$stmt = $dbh->prepare($sql);
$stmt = $dbh->query($sql);

共通点

  • 引数に指定したSQL文をデータベースに対して発行する

違い

prepare

ユーザーからの入力を利用する

query

ユーザーからの入力を利用しない

最後に

1回目のレビューの際は言葉がたどたどしすぎてたくさん指摘箇所がありましたが、2回目以降の訂正箇所は大体こんな感じでした。
初心者はprogateで達成感を得て満足するより、プロが書いたコードとかを実行される順に追っていき、全ての関数やメソッドを理解していき、第三者に説明する練習がいいんじゃないかなとやってみて思いました。

KnoTrd
社会人1年目。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away