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

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

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

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

Q&A

6回答

1443閲覧

PHPでのユーザーログイン機能構築

yamamoto_ryugo

総合スコア10

PHP

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

0グッド

1クリップ

投稿2016/03/17 03:10

編集2016/03/17 03:16

###前提・実現したいこと
PHPでシステムを作っています。
ユーザーのログイン機能を実装したいのですが、文献等も乏しく開発できません。
CakePHP等のフレームワークを使用せずに、1からすべて作りこんでいきたいのですが、
どのような手順で行っていけば良いのかわかりません。

簡単に作成手順を解説してくださるとありがたいです。

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

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

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

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

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

sk_3122

2016/03/17 04:52

「丸投げ」と言われてしまうのは、自分がどこまでやったのか等を載せないケースが多いような気がします。 「自分はこう考えているんだけれど、どうでしょうか?」とか「IDとパスワードはDBに持たせようと思うんだけど、注意する点はありますか」等、自分でどこまで考えたのかを書いた方が回答がつきやすいのではないかと思います。 間違っていても良いので、自分でどこまで考えたのかを示した方が良いですよ。
guest

回答6

0

googleで「php ログイン」で検索すればある程度ヒントになるものはあると思います。
リンク

ちょっと検索すれば出てくるのに、それすらもしてないのか?と思われるような質問なので
丸投げと言われても仕方ないと思います。
質問者様がガチの初心者でも、作ると決めたからにはgoogle検索くらいはしましょう。

投稿2016/03/17 06:40

icham

総合スコア559

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

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

0

ログインするってことは、どこかに ID/Password が記録されている必要があります。
この ID/Password のルールも考える必要があります。

  • ID / Password の登録画面も作るのか?
  • 保存場所は? (ファイル or Database 等)
  • Passwordを暗号化する?
  • ID / Password のバリデーション (最低文字数や使える文字など)

などなど。

投稿2016/03/17 04:07

youji

総合スコア257

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

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

0

セキュリティとかをまともに考えると少なくともteratailの回答ページできれいに返答するのは面倒な部分だと思います。
なので
体系的に学ぶ安全なwebアプリケーションの作り方
を読まれることをおすすめします。
ログイン/オートログインに関するページは大体20p弱ですし、PHPとMySQLの知識があれば文章自体は中高生レベルでも十分読める内容になっています。(アカウント管理等や脆弱性まで考えると全部読むしか無いのですが)

システム的にわからないところがどこなのかが全くわからないのであれですが
仕組みが想像できないとしたらおそらくオートログインだと思うので
以下、その本の受け売りですが

ログインが確認された段階で
クライアント側ではクッキーでトークン(この場合ランダムな文字列)を発行し、
サーバー側ではdbにトークンを保存、対応するユーザIDと有効期限を保存

再度ログインされたななら双方のトークンを照らしあわせて合っていればログイン
即、トークンを再発行する。

となっています。
他にも単純にセッションの寿命を伸ばすなどの簡易な方法も紹介されていますのでセキュリティ、自分の知識、製作期間、目的等を考えながら実装していくといいと思います。

投稿2016/03/17 14:55

gyojin

総合スコア94

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

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

0

こんなんでいいですか? 一週間ちょっとで、簡単かつ安全なログインフォームの作り方が学べます。

ログインフォームの作り方

投稿2016/03/17 10:45

編集2016/03/17 12:47
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

うぅん…これは「丸投げ」に入るのでしょうか…?
少し私は違う気がしますが…
別にコード全文を載せろと言っているわけではないですし.

私がよくやるのは,
0. フォームにデータを入力させる
0. データが来たら「sqlite」を使い,データベースにIDとパスワードがあるかを調べる
0. IDとパスワードが一致しているかを調べる
0. パスワードがあっていれば,cookieか何かにログイン情報を登録しておき,ログイン成功!間違っていれば弾く

ということをよく行います

投稿2016/03/17 03:56

nnahito

総合スコア2004

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

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

0

それこそ丸投げですよ。「システム」を作っているなら、そこも「システム」の範囲です。
そこから作りましょうよ。

###考え方
0. ユーザーにIDとパスワードを入力させる
0. それを受け取り、DBなどに問い合わせIDとパスワードの組み合わせが正しいか確認する。
0. 間違っているなら1に戻り、エラーを出力する。
0. 正しいなら、SESSIONにログインしたことを保存し、ログイン後の画面に遷移する。
0. ログイン後のページは4のSESSIONを見て、ログイン後かログイン前かを判断する。
0. ログイン前なら1に戻す。

もしかしたら、抜けてるところがあるかもしれませんが、そんな感じで実装します。
ID・パスワードなどは固定でコード内に持つような簡易的なものから始めて、最終的には、password_hashなどでハッシュ化したものをDBに格納し、入力されたものをhashして突き合わせて確認するようにすると、hash化したパスワードが流出しても解読されるまでには、かなりの時間が稼げます。

頑張って考えてみてください。

投稿2016/03/17 03:23

shi_ue

総合スコア4437

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

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

shi_ue

2016/03/17 04:15

確かに丸投げではないかもしれませんが、「こんな風に考えた」くらいのことは載せてもいいと思うんです。 通常、そのあたりのことは漠然とでも「こんな感じかなぁ」くらいは持っていると思います。それを文章にすることで、見えてくるものもあると思います。
JinwonKim

2016/03/17 04:19

cookieの保存処理も必要ですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問