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">


<p>名前:<input type="text" name="name"></p>
<p>メッセージ:<input type="text" name="message"></p>
<p><input type="submit" value="送信"></p>

 

</form>

 

actionの中身を「空」にすると送信先を自分に指定して、送ります。

 

<?php
echo $_POST["name"];
echo $_POST["message"];
?>

 

php.iniを表示して、書き直すと、全てのエラーが表示されます。

 

error_reporting = -1
display_errors = On

 

とやり方はありますが

 

入力チェックの方法

フォームを利用する場合、「きちんと入力されたか?」「きちんと送信されたか?」などをチェックする必要があります。

 

PHPでは、未定義の「変数」や「配列インデックス」の値を表示または取得しようとしたとき

E_NOTICE レベルのエラーが発生します!!

 

if ($_POST['namel'] == '') {
echo '名前が入力されていません';
}

 

こんな感じのソースを作ったとします。

直接そのページにアクセスすると、エラーが発生します。

 

$_POST['namel'] == '' が未定義だからです。

 

変数が未定義

Notice: Undefined variable


配列インデックスが未定義

Notice: Undefined index

 

と配列が未定義の場合もあるので、注意しましょう。

 

以下のように書くと、エラーがなくなります。

 

if(isset($_POST['submit'])) {
if ($_POST["name"] == ""){

//ここに処理
}
}

 

と書いて、まず送信されたデータがnull や空でないか(値が入っていればOK)と書いてから、判別をすると、エラーが出ずらくなります。

 

 

【参照】

Manamin Memo PHPでpostの値が空かどうかを判定するときの注意点

 

 

初期化しよう

初期化してないので、エラーになる場合

直接ページにアクセスすると、エラーになります。

その場合、変数を「初期化」しましょう。初期化とは、変数に空を代入する事です。

 

$firstName = "";
$lastName = "";

 

if ($_SERVER["REQUEST_METHOD"] === "POST") {
if (!empty($_POST["first_name"]) && !empty($_POST["last_name"])) {
$fullName = $_POST["last_name"] . " " . $_POST["first_name"];
} else {

 

$lastName = $_POST["last_name"];
$firstName = $_POST["first_name"];
$err = "入力されていない項目があります。";
}
}

 

色が変わっている部分が初期化です。

 

【参照】

初期化をしてエラーを回避 >>

 

 

チェックの方法

issetを利用する方法

issetを使って送信されたか?と入力されたか?をチェックします。

issetは「null」と「空」の場合はFALSEを返してくれます。

 

if (!isset($_POST['name'])) {
echo '名前が送信されていません';

 

} elseif ($_POST['name'] === '') {
echo '名前が入力されていません';
}

 

isset は,変数が 「未定義でない かつ NULLでない」 ことをエラーを発生させずにチェックすることが出来ます.

しかし、0の場合はTRUEになってしまうので、つかえません・・・

外部からの入力を格納した変数が「 NULL 」の場合はチェックできません。

 

「送信されていない」と「入力されていない」を区別する必要がない場合

if (!isset($_POST['email']) || $_POST['email'] === '') {
echo 'アドレスが入力されていません';
}

 

このような書き方もできます。

 

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
var_dump("1" == "01"); // 1 == 1 -> true
var_dump("10" == "1e1"); // 10 == 10 -> true
var_dump(100 == "1e2"); // 100 == 100 -> true

 

[参照]

https://web-dev.xyz/php-post/

比較演算子のまとめ >>

 

 

エラー制御演算子

@をつけると、エラーを回避してくれます。しかし、あまりよろしくはない。

 

<?php
/* 意図的なエラー */
$my_file = @file ('non_existent_file') or
 die ("Failed opening file: error was '$php_errormsg'");

// この演算子は関数だけでなく、全ての式で動作します。
$value = @$cache[$key]; 
// インデックス $key が存在しない場合でも、警告を発生しません。

?>

 

【参照】

https://www.php.net/manual/ja/language.operators.errorcontrol.php

 

 

 

 

PHPの勉強方法

目安は1日3~5時間の勉強で100日程度です。実際にやってみましたが、仕事をしながらだと、200日ほどかかります。

 

なぜなら、休日の家族サービス。モチベーションの低下などがあるからです。

前置きはさておき、まずは勉強方法です。

 

 

PHPを学ぶには、独自の言葉を覚える必要があります。「・」が付いているものは、外部のサイトへ飛びます。

 

■ 基本編 ■

PHPとは?

設定方法

PDOとは何か?

mysql_connect()

postを使ってみよう

コンストラクタとは?

-> アロー演算子とは?

データベースへのアクセスについて

ファイルのアップローダー

CSRF対策

二重投稿の禁止

ハッシュ値とは?

 

■ DBへの接続■

管理者権限について

PDOについて知ろう

PDOを使ってMYSQLに接続しよう

 

■ フレームワーク ■

フレームワークは何を使ったらいいのか?

ララベルとは?

コードイグナイターとは?

オートロードとは

無名関数とは?

MVCとは何か?

 

■ オブジェクト指向■

クラス・インスタンス・プロパティ

オブジェクト指向とは?

 

 

 

【フレームワーク】

基本的には、ララベルを学ぶ方がよい。 ララベルはコンポーザー

 

 

MYSQLについて

MYSQLの学習方法について。DBの操作方法を覚えます。 四大操作をまずは覚えておきましょう。

 

■ 基本編 ■

MYSQLとは?

CURDについて

更新について

削除について

アップデートについて

 

フェッチするとは?

 

■ 設計について■

UMLとは何か?

ER図を覚えよう

 

 

 

 

コードイグナイターの勉強方法

 

コードイグナイターを学んでいきましょう。「・」が付いているものは、外部のサイトへ飛びます。

 

DB設定 ⇒ 接続 ⇒ SQLクエリ ⇒ DB暮クラスの機能 ⇒ 結果の取得 の順に学ぶとよい。

http://www.ci-guide.info/db/

 

SQLのクエリ発行には2種類がある。通常方法と、「Acive Record」の2種類です。

 

■ フレームワーク ■

フレームワークは何を使ったらいいのか?

ララベルとは?

コードイグナイターとは?

オートロードとは

無名関数とは?

MVCとは何か?

 

 

【参照】

http://www.ci-guide.info/

http://pneskin2.nekoget.com/codeigniter/3/user_guide/index.html

どちらかを見ましょう。

 

【フレームワーク】

基本的には、ララベルを学ぶ方がよい。 ララベルはコンポーザーが入っている。

 

 

勉強に必要な書籍について

必ず、最新のverを買うようにしてください。PHPはバージョンによって、かなり違います。PHP、MYSQL、、サーバー、フレームワークと幅広く勉強する必要があります。

 

本はかならず、2冊用意するようにしましょう。1冊は基本、もう1冊は分からない部分を補完してくれます。

ちなみに、無名関数、コールバック関数などは、何度勉強してもつまずく可能性があります。

 

PHPサーバーサイドプログラミング

基本から詳しく書いてあるが、ところどころ、省略されていて分かりずらい。

パーフェクトPHP

ある程度、分かってから使うとよい

基礎からのMYSQL

基本から全てが分かります。

PDOでのアクセスを学ぶのによい。

LINUXコマンド入門

サーバー、ファイル権限を学ぶのに良い。

サーバーはlinuxベースで出来ているので、ここが分かると、かなり分かる。

プログラムはなぜ動くのか?

パソコンが動く、原理と基本がわかります

ここが分かると、配列、ポインタなどが分かります

体型的に学ぶ完全なwebアプリケーションの作り方

XSSなどの基本的なセキュリティー対策が分かります。

 

【MYSQLについて】

データベースについて学びます。「SELECT」を極めましょう。型の指定方法などが学べます。

 

基礎からのMYSQL

基本から全てが分かります。

PDOでのアクセスを学ぶのによい。

達人に学ぶdb設計 徹底指南書

基本が終わったら、必ず読みましょう。

 

【サーバーについて】

サーバー、ファイル権限について学びます。

 

LINUXコマンド入門

サーバー、ファイル権限を学ぶのに良い。

サーバーはlinuxベースで出来ているので、ここが分かると、かなり分かる。

 

【DB設計について】

DBの設計方法について学ぶことができます。

 

楽々ERDレッスン

DBの設計に必要

UML入門

基本について学んでおくとよい

 

 

参照サイト

オブジェクト指向とは?

PDOとは何か?

mysql_connect()

アロー演算子とは?

データベースへのアクセスについて

 

大変申し訳ありませんが、当社ではサービスの質を落とさないために、月の契約は5件までとさせていただいております。 契約をお待ちいただく可能性もございますので、ご了承のほどよろしくお願いいたします

 

 

 

 

この記事を読んだ人は、こんな記事も読んでいます

 

SEO対策の基本 外部要因とは?

SEO対策の基本的である、外部要因とは何か?

SEO対策をするなら絶対に知っておきたい、基本知識です。

 

売れるサイトを作るのに知って起きたい知識

サーチエンジンマーケティングという言葉をご存知でしょうか?

ホームページで商品やサービスを売る時に知っておきたいマーケティング

についてご紹介いたします。

seo対策をするメリットとは

SEO対策をする5つのメリットとは?

なぜ上位表示させることが大事なのか?なぜSEO対策をする必要があるのか

についてご紹介させていただきます。

 

内部要因とは

SEO対策の内部要因とは?

上位表示させるためには、内部要因について知っておくことも大事です。

キーワードを上位表示させるために必要なのは、ソースコードを最適化することです

内部要因の対策について知りたい方はこちらへ

 

キーワード対策をするまえに

キーワード対策をする前に

そのキーワード対策。ちょっと待ってください。

そのまま対策をすると、必ずお金を損してしまいます。個人事業主や中小企業は

そんな大きなキーワードで対策をしてはいけません。

広告費用が高くなる理由とは

広告費用が高くなる本当の理由とは?

売れないサイトに集めていませんか?広告費用がかかるわりには

お問い合わせが少ない・・・と感じる方は多いはずです。

購入率の悪いサイトに集客をしている可能性があります。

 

 

 

 

【SEO対策・web広告・webコンサルティングのプラスワーク対応エリアについて】

プラスワークでは、東京、神奈川、千葉、埼玉を中心に全国でwebコンサルティング、SEO対策、ホームページの更新、ホームページのリニューアル運営代行をしております。売上アップをお考えならお気軽にご相談ください。

 

【SEO対策・web広告・webコンサルティングのプラスワーク 対応地域】

北海道 [ 北海道 ]

東北  [ 青森 | 岩手 | 山形 | 福島 | 秋田 | 宮城 ]

関東  [ 東京 | 埼玉 | 千葉 | 茨城 | 栃木 | 群馬 | 神奈川 ]

甲信越 [ 山梨 | 長野 | 新潟 ]

北陸  [ 石川 | 福井 | 富山 ]

東海  [ 愛知 | 静岡 | 岐阜 | 三重 ]

近畿  [ 大阪 | 兵庫 | 京都 | 滋賀 | 奈良 | 和歌山 ]

中国  [ 島根 | 山口 |鳥取 | 広島 | 岡山 ]

四国  [ 徳島 | 香川 | 愛媛 | 高知 ]

九州  [ 福岡 | 佐賀 | 長崎 | 熊本 | 大分 | 宮崎 | 鹿児島 ]

プラスワークでは全国でSEO対策、ホームページ更新、制作をしております。中小企業専門SEO対策・ホームページ更新制作会社、ダイレクト レスポンス マーケティング、ウェブ マーケティング、マーケティング 分析、口コミのよいSEO対策会社をお探しならプラスワークにお任せくださいませ。

 

 

【コンテンツ】

トップへ

更新レスキュー

料金について

制作実績

お客様の声

よくある質問

会社概要

お問い合わせ

【更新レスキュー】

ライトコース

ゴールドコース

プラチナコース

 

【その他】

ニュース

メルマガ登録

特別資料プレゼント

相互リンク募集中

【課題から探す】

ホームページの課題

SEO対策とは

SEO対策がダメな理由

上位表示されない理由

相互リンクとは

順位が落ちてしまう原因

 

 

フェイスブック  ツイッター