post送信
post送信とは
post送信は、HTTPで作られた入力データをサーバに送信する方法です。post送信はgetよりも安全にデータを送る事ができます。
PHPではPOSTで送信したデータを取得するのに、スーパーグローバル変数である$_POSTを使います。
PHPでは、フォームから送信された値を、自動で変数として利用する事ができます。しかし、この便利さがエラーや脆弱性を生みます。
そこで、エラーをチェックする処理が必要となってきます。前半は、POST['']の使い方、後半は処理についてまとめておきます。
外部サイトなどをチェックしながら、みんなで学んで行きましょう。
入力データをサーバに送信する方法スーパーグローバル変数methodがpost のフォームから送られた情報issetなどを使ってチェックが必要 |
【参照】
https://www.sejuku.net/blog/27843
入力チェックの方法
フォームを利用する場合、postを利用します。getは危ないので、postがいいです。
<form action="URL" method="post">
</form> |
actionの中身を「空」にすると送信先を自分に指定して、送ります。
<?php |
php.iniを表示して、書き直すと、全てのエラーが表示されます。
error_reporting = -1 |
とやり方はありますが
入力チェックの方法
フォームを利用する場合、「きちんと入力されたか?」「きちんと送信されたか?」などをチェックする必要があります。
PHPでは、未定義の「変数」や「配列インデックス」の値を表示または取得しようとしたとき
E_NOTICE レベルのエラーが発生します!!
if ($_POST['namel'] == '') { |
こんな感じのソースを作ったとします。
直接そのページにアクセスすると、エラーが発生します。
$_POST['namel'] == '' が未定義だからです。
変数が未定義
Notice: Undefined variable |
配列インデックスが未定義
Notice: Undefined index |
と配列が未定義の場合もあるので、注意しましょう。
以下のように書くと、エラーがなくなります。
if(isset($_POST['submit'])) { //ここに処理 |
と書いて、まず送信されたデータがnull や空でないか(値が入っていればOK)と書いてから、判別をすると、エラーが出ずらくなります。
【参照】
Manamin Memo PHPでpostの値が空かどうかを判定するときの注意点
初期化しよう
初期化してないので、エラーになる場合
直接ページにアクセスすると、エラーになります。
その場合、変数を「初期化」しましょう。初期化とは、変数に空を代入する事です。
$firstName = "";
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$lastName = $_POST["last_name"]; |
色が変わっている部分が初期化です。
【参照】
チェックの方法
issetを利用する方法
issetを使って送信されたか?と入力されたか?をチェックします。
issetは「null」と「空」の場合はFALSEを返してくれます。
if (!isset($_POST['name'])) {
} elseif ($_POST['name'] === '') { |
isset は,変数が 「未定義でない かつ NULLでない」 ことをエラーを発生させずにチェックすることが出来ます.
しかし、0の場合はTRUEになってしまうので、つかえません・・・
外部からの入力を格納した変数が「 NULL 」の場合はチェックできません。
「送信されていない」と「入力されていない」を区別する必要がない場合
if (!isset($_POST['email']) || $_POST['email'] === '') { |
このような書き方もできます。
issetは「null」と「空」の場合はFALSE |
比較演算子
== と二回の場合と、=== 三回の場合があります。
$a == $b 型の返還をした後で等しいか?変換アリ$a === $b 値と型が等しい?変換無し |
「==」2回の場合、文字列と数値の比較の場合、文字列を数値に変換してくれる。
"1" == "01" の時はTUREって感じです。
型の相互変換をした後で $a が $b に等しい時にTUREを返してくれます。
3回の方が厳密なので、3回に統一するとよいです。
2回は等しい。3回は厳密。という感じです。
!== による比較では型変換はしませんので、注意してください。
var_dump(0 == "a"); // 0 == 0 -> true |
[参照]
エラー制御演算子
@をつけると、エラーを回避してくれます。しかし、あまりよろしくはない。
<?php |
【参照】
https://www.php.net/manual/ja/language.operators.errorcontrol.php
PHPの勉強方法
目安は1日3~5時間の勉強で100日程度です。実際にやってみましたが、仕事をしながらだと、200日ほどかかります。
なぜなら、休日の家族サービス。モチベーションの低下などがあるからです。
前置きはさておき、まずは勉強方法です。
PHPを学ぶには、独自の言葉を覚える必要があります。「・」が付いているものは、外部のサイトへ飛びます。
■ 基本編 ■
PHPとは?
設定方法
PDOとは何か?
mysql_connect()
-> アロー演算子とは?
データベースへのアクセスについて
■ DBへの接続■
PDOについて知ろう
■ フレームワーク ■
フレームワークは何を使ったらいいのか?
ララベルとは?
コードイグナイターとは?
オートロードとは
無名関数とは?
MVCとは何か?
■ オブジェクト指向■
クラス・インスタンス・プロパティ
オブジェクト指向とは?
【フレームワーク】
基本的には、ララベルを学ぶ方がよい。 ララベルはコンポーザー
MYSQLについて
MYSQLの学習方法について。DBの操作方法を覚えます。 四大操作をまずは覚えておきましょう。
■ 設計について■
UMLとは何か?
ER図を覚えよう
コードイグナイターの勉強方法
コードイグナイターを学んでいきましょう。「・」が付いているものは、外部のサイトへ飛びます。
DB設定 ⇒ 接続 ⇒ SQLクエリ ⇒ DB暮クラスの機能 ⇒ 結果の取得 の順に学ぶとよい。
SQLのクエリ発行には2種類がある。通常方法と、「Acive Record」の2種類です。
■ 基本編 ■
クエリ結果を作る
Active Recordとは?
クエリヘルパー関数
■ フレームワーク ■
フレームワークは何を使ったらいいのか?
ララベルとは?
コードイグナイターとは?
オートロードとは
無名関数とは?
MVCとは何か?
【参照】
http://pneskin2.nekoget.com/codeigniter/3/user_guide/index.html
どちらかを見ましょう。
【フレームワーク】
基本的には、ララベルを学ぶ方がよい。 ララベルはコンポーザーが入っている。
勉強に必要な書籍について
必ず、最新のverを買うようにしてください。PHPはバージョンによって、かなり違います。PHP、MYSQL、、サーバー、フレームワークと幅広く勉強する必要があります。
本はかならず、2冊用意するようにしましょう。1冊は基本、もう1冊は分からない部分を補完してくれます。
ちなみに、無名関数、コールバック関数などは、何度勉強してもつまずく可能性があります。
基本から詳しく書いてあるが、ところどころ、省略されていて分かりずらい。 |
|
ある程度、分かってから使うとよい |
|
基本から全てが分かります。 PDOでのアクセスを学ぶのによい。 |
|
サーバー、ファイル権限を学ぶのに良い。 サーバーはlinuxベースで出来ているので、ここが分かると、かなり分かる。 |
|
パソコンが動く、原理と基本がわかります ここが分かると、配列、ポインタなどが分かります |
|
XSSなどの基本的なセキュリティー対策が分かります。 |
【MYSQLについて】
データベースについて学びます。「SELECT」を極めましょう。型の指定方法などが学べます。
基本から全てが分かります。 PDOでのアクセスを学ぶのによい。 |
|
基本が終わったら、必ず読みましょう。 |
【サーバーについて】
サーバー、ファイル権限について学びます。
サーバー、ファイル権限を学ぶのに良い。 サーバーはlinuxベースで出来ているので、ここが分かると、かなり分かる。 |
【DB設計について】
DBの設計方法について学ぶことができます。
楽々ERDレッスン |
DBの設計に必要 |
UML入門 |
基本について学んでおくとよい |
参照サイト
大変申し訳ありませんが、当社ではサービスの質を落とさないために、月の契約は5件までとさせていただいております。 契約をお待ちいただく可能性もございますので、ご了承のほどよろしくお願いいたします
この記事を読んだ人は、こんな記事も読んでいます
SEO対策の基本 外部要因とは?
SEO対策の基本的である、外部要因とは何か?
SEO対策をするなら絶対に知っておきたい、基本知識です。
売れるサイトを作るのに知って起きたい知識
サーチエンジンマーケティングという言葉をご存知でしょうか?
ホームページで商品やサービスを売る時に知っておきたいマーケティング
についてご紹介いたします。
SEO対策をする5つのメリットとは?
なぜ上位表示させることが大事なのか?なぜSEO対策をする必要があるのか
についてご紹介させていただきます。
SEO対策の内部要因とは?
上位表示させるためには、内部要因について知っておくことも大事です。
キーワードを上位表示させるために必要なのは、ソースコードを最適化することです
内部要因の対策について知りたい方はこちらへ
キーワード対策をする前に
そのキーワード対策。ちょっと待ってください。
そのまま対策をすると、必ずお金を損してしまいます。個人事業主や中小企業は
そんな大きなキーワードで対策をしてはいけません。
広告費用が高くなる本当の理由とは?
売れないサイトに集めていませんか?広告費用がかかるわりには
お問い合わせが少ない・・・と感じる方は多いはずです。
購入率の悪いサイトに集客をしている可能性があります。