質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

9209閲覧

PHPで、Webページのパスワード認証処理を書きたい。

WeilSpinor

総合スコア170

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2019/03/18 11:47

編集2019/03/18 12:05

パスワードを要求するWebページを作っているのですが、PHPを使って、簡易なパスワード認証のサーバーサイドプログラムを作ろうと思っています。
しかし、PHPのパスワード認証プログラムの記述方法がわかりません。

まず、ログインページのHTMLです。

html

1<body> 2<h1>ログイン画面</h1> 3<form method="post" action="login.php"> 4//サーバーに置いてあるパスワード認証プログラムに、 5//フォームデータを送信し、 6//連想配列$_POST[]に、パスワード入力フォームのnameのkeyとvalueを格納。 7 8 PassWord:<input name="myPW" type="text"><br>//パスワード入力フォーム 9 <button id="login" type="submit">log in</button>//ボタンを押すと、送信される 10</form> 11</body>

これに対して、送信先のプログラムlogin.phpを書こうと思ったのですが、よくわかりません。

基本的には、if文で、
「パスワードが"hogehoge"と一致すれば、目的のWebページのhtmlファイルをブラウザに開かせる。一致しなければ、ブラウザに『パスワードが違います』と表示させる」
と条件分岐させると思うのですが、

「目的のWebページのhtmlファイルをブラウザに開かせる」と、
「ブラウザに『パスワードが違います』と表示させる」
のPHPでの書き方が分かりません。

PHP

1<?PHP 2if($_POST["myPW"] == "管理人が設定したパスワード"){ 3 //HTTPリクエストを送ってきたブラウザに対し、シークレットページを開かせる。 4}else{ 5 //ブラウザに、「パスワードが間違っています」というメッセージを出す。 6}; 7?>

自分の予想では、おそらく、
「ブラウザのURLを指定して、HTTPレスポンスを返す」という作業をすることになるため、単純ではないと思います。

どうすればいいでしょうか?
ご教示宜しくお願いします。

備考

今回このパスワード認証Webページを作成するに至った経緯は、
Web通信やデータ保存機能を備えたアプリケーションを作るにあたっての予備演習です。

気軽に作れる簡単なアプリだと思ったのですが、
色々な人に、ハードルが高すぎだと言われ、

「まずは、ただWebページにログインするだけの凄く単純なシステムを作ってみて、Web通信の基本を理解するところから始めてみては?」

といわれたので、それなら、
「データベースもユーザー登録も何も使わない、ただ、管理人が決めたパスワードを要求するだけの、パスワード制Webページを作ってみよう」
と思い、作成に至りました。

非常に単純で素朴なアイデアなので、ネットで調べればすぐに出ると思ったのですが、
全然ヒットしませんでした。
初心者向けのログインプログラム作成に関する話題はそこそこあるのですが、
本当に初心者向け説明はほとんどないし、
あったとしてもDBやらcookie、セッション、SQL…などの予備知識を前提としていたりして、
今の目的をはるかに超える複雑さのため、とりつく島もありません。

こんなに簡単なパスワード付きWebサイトのバックエンドプログラム作成について解説したサイトや入門書が存在しない、
というのが不思議でなりません。

何かおすすめのものはないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ログイン機能はセキュリティの肝ですから、簡単なもの簡単なものと探しても、見つからないでしょうね…。
ログインの必要なサイトをスクレイピングすることが目標のようですが、多くのログインシステムは考えうるセキュリティ対策を施しているはずなので、簡単にスクレイピングできるものではないと認識してください。
簡単に突破できるものは即、個人情報流出となる恐れがあるわけですからね。

それをログイン自動化して…となれば、今複雑すぎて云々と言って避けても、いずれやらなきゃいけないことなので、DBやらcookie、セッション、SQL…いずれも熟知する必要があるわけです。

結局覚えなきゃいけないのですよ。

それよりもまず、ログインのないサイトのスクレイピングをするだけの知識や技術はお持ちですか?
個人的には、「スクレイピング」という行為自体が好きではないので、やらないし、teratailでも回答はしないたちですが。

投稿2019/03/18 12:29

編集2019/03/18 12:32
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

WeilSpinor

2019/03/18 12:34

ご回答ありがとうございます。 もちろん結局は熟知しなければならないでしょうが、 今回は初心者の自分の学習目的なので、 きちんとコンピューター関連の知識や技術をステップアップしていくためには、ハードルを下げる努力が必要だと思っています。 「困難は分割せよ」 このデカルトの教えは全ての基本であるわけで、 プログラミング熟練者の方々も口をそろえて仰っていることです。 ログイン技術というものが誕生してからそれなりに時間がたっているでしょうから、 単純な教育法がそれなりに整備されていると信じて、探そうと思います。
退会済みユーザー

退会済みユーザー

2019/03/18 12:37

PHPで固定パスワードでログイン作るより、Basic認証の方が実用的だし、PHPで簡易ログインの記事なんて書いたら、各方面からフルボッコにされるだろうから、探してもないと思う。
WeilSpinor

2019/03/18 12:38

ログインなしのスクレイピングですか?やったことはありません。 いまは特にスクレイピングをするつもりはないですが… (もしかして、以前の図書館ログイン自動化の質問の件を受けてのお話ですか?)
退会済みユーザー

退会済みユーザー

2019/03/18 12:40

> 図書館ログイン自動化 この件はそれにつながるものではないということですか?
WeilSpinor

2019/03/18 12:40

いまは図書館自動簡易ログインの話ではなく、単にログインの仕組みを理解したいだけです。
退会済みユーザー

退会済みユーザー

2019/03/18 12:42

そうですか。ご健闘をお祈りします。
WeilSpinor

2019/03/18 12:43 編集

質問文の追記に書いた通り、スマホアプリを作るにあたって、 Web通信やサーバーの役割、というものの理解の一助として、 「ログイン制のWebサイトのようなものを作ってみるとよい」 という助言を頂いたので
WeilSpinor

2019/03/18 12:43

はい、ご声援ありがとうございます
WeilSpinor

2019/03/18 12:55

検索中、別サイトでのKosuke_Shibuya様記事を見つけました。 知識が追い付いたときに、ありがたく参考にさせていただきます。
退会済みユーザー

退会済みユーザー

2019/03/18 13:14

真面目に毎日4、5時間1年くらい続ければ理解できるようになると思います。
guest

0

ベストアンサー

PHPによる簡単なログイン認証いろいろ - Qiita
CSRF対策も書いてあるので参考になるのではないでしょうか。


なお、備考部分ですが。
「Web通信やデータ保存機能」だけなら、ログイン実装の勉強する必要はないと思います。

そのアドバイスは、JavaScript - JavaScriptでログインが必要なページに自動でログインしたい|teratail だと思いますが、その質問内容は「Web通信やデータ保存機能」だけでは実現できないと思います。

そのようなことをするには、正に『DBやらcookie、セッション、SQL…などの予備知識』が必要になります。とりつく島がないなら、まずひとつづつ予備知識を仕入れるしかないでしょうね。
ひとまずは、DB系の知識はなくても大丈夫だと思いますが、cookie、セッション、について知識がないのは色々と厳しいでしょう。

まずは cookie の扱いについてミニマムなコードを書いてみてはいかがですか?

投稿2019/03/20 03:27

Lhankor_Mhy

総合スコア36113

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

WeilSpinor

2019/03/20 04:55

ご回答ありがとうございます。ちょうど昨日、よさげなphpの入門書をみつけたので、それで勉強しています。 ログインの勉強の動機は、リンク先のログインアプリを作ることになります。ただ、他の回答者様が、「自動ログインは悪意ある行為」と仰っていたので、続行するかは分かりませんが…。 でもその過程で色々派生して基礎の勉強になりそうなので、まぁいいか、と思っています。
Lhankor_Mhy

2019/03/20 05:57

私は自動ログイン自体は不正アクセスではないと思います。 ただ、たとえばブルートフォースアタックのようなパスワードを割る攻撃は、自動化されたログインの繰り返しです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問