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

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

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

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

1874閲覧

シンプルな会員制の交流サイトを作ってみたのですが、アドバイス頂けますでしょうか...?

newyee

総合スコア213

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

1クリップ

投稿2019/03/12 03:09

編集2019/03/12 03:34

PHPの学習としまして、簡単な会員制の交流サイトを作成致しました。
作成しましたページは、TOPページである、「index.php」会員が自由に書き込みができる掲示板のページである、「bbs.php」会員がログインする為の画面である、「login.php」、ログアウトさせる「logout.php」新規ユーザーの登録をする為の、「create_user.php」、掲示板に投稿した、コメントを削除パスワードを入力することによって削除させる、「delete.php」、掲示板に書き込まれた情報を、データベースに保存する為の、「write.php」です。
一応なのですが、調べながら、メジャーなセキュリティー対策は施してみました。
もし、セキュリティー対策だったり、コードで冗長な部分がありましたら、ご指摘頂きたいのですが、お願いできますでしょうか...?
コードなのですが、長くなってしまうため、Githubにてアップロードさせていただきました。
他の機能などもつけてみた為、上記のファイルも以外のものもアップロードされているのですが、コード量や見て頂く点も増えてしまいますし、今回は上記のファイルに関しまして、ご指摘頂けましたら幸いです...

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

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

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

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

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

tanat

2019/03/12 03:32

質問内容が漠然としすぎていて、「作業依頼」に該当すると思います。 作業依頼のような投稿を推奨していません teratailは課題や仕事を無償でやってもらえる場ではありません。好意の上に成り立つ助け合いの場なので、相手を気遣った丁寧な質問を心がけましょう。
退会済みユーザー

退会済みユーザー

2019/03/12 03:35

「作業依頼」ともとれるし、「広告・宣伝」ともとれますね。
alg

2019/03/12 03:36

コードレビューは「作業依頼」と認識されがちなので、あまりお勧めしません。回答者が見るべき範囲も割と広くなりますので、回答が付きにくいかもしれませんし。コードの一部を取り出して、より具体的に質問を構成することをお勧めします(例:login.php の ○○行目のパラメータクエリの書き方が合っているかどうか分からない)。
alg

2019/03/12 03:37

あるいは、コードレビュー専門のサイトで質問するのもよさそうです。例えば、英語版ですが:https://codereview.stackexchange.com/ 日本語でコードレビューを気軽に依頼できる場所があるといいんですけどね……。
newyee

2019/03/12 03:38

んーそうですね...自分としましては、少しアドバイスを頂けたらなとの思いで、質問させて貰ったのですが、そのように捉えられることもあるということなんですね...
alg

2019/03/12 03:40

作成された「会員制の交流サイト」を、「コードレビューが気軽に依頼できる交流サイト」としてブラッシュアップしていただくと、多くの人が幸せになるかもしれませんよ。少なくとも私は幸せになります :)
newyee

2019/03/12 03:50

あまりプログラミングだとかIT系の知識が浅いので、分からないのですが、「コードレビューが気軽に依頼できる交流サイト」としてブラッシュアップ」というのはどういう意味なのでしょうか...? 指摘を多数受けているのですが、仮になのですが、セキュリティーに関してのみチェック頂くだとかそういったことは可能なのでしょうか...?
takito

2019/03/12 03:55

> セキュリティーに関してのみチェック頂くだとかそういったことは可能なのでしょうか...? それは仕事の依頼であって、問題解決の質問ではないと思います
退会済みユーザー

退会済みユーザー

2019/03/12 03:56

「簡単な会員制の交流サイト」というパッケージを、「コードレビューが気軽に依頼できる交流サイト」としてデプロイして使いながら改善を図る、ということなのかも。
newyee

2019/03/12 04:01

なるほど...自分としてはちょっとアドバイス頂けたらなという気持ちで質問させて頂いたのですが、難しいですね...
tanat

2019/03/12 04:01

> セキュリティーに関してのみチェック頂く だけだと、所謂ソースコードの脆弱性診断サービスを利用してください(安くて数十万円~)という感じの粒度なので、「作業依頼」から離れていないと思います。 今回の質問だと例えば 「セキュリティについてこういった意図でこういった実装を行ってみた(ソースコードを張り付ける)が、正しいかどうかの検証の仕方が分からない。検索するにしてもキーワードもわからないので、検証にあたって調査するのに必要なキーワードやサイトを教えて下さい。後は気になったところがあればご指摘ください」 みたいなところまで具体化出来ていればアリだと思います。 具体化するタイミングで調査の糸口も整理出来るかと思いますので、 まずは粒度を出来るだけ具体化する方向で整理されてはいかがでしょうか。
alg

2019/03/12 04:21 編集

ああ、かえって混乱させてしまったみたいですね。すみません。気軽にコードレビューを依頼できる場所が世の中に無いようなので、「無いものは作る」の精神で、そういう場所をnewyeeさんが作ってくださったら喜ぶ人はいるのではないか、という意図でした。今のnewyeeさんの課題を解決する方法ではありませんが、これから無数に生まれるであろうnewyeeさんのような人の助けになるかも、ということです。
newyee

2019/03/12 04:22

>tanatさん 確かに、添削して欲しいというのはあまりにも漠然としすぎていました... 出来る限り具体化して、質問できるように気を付けたいと思います。 algさん> なるほど...そういう意味だったのですね...僕もそのくらいのものが作れるように、プログラミング頑張って勉強していきたいなと思います!
m.ts10806

2019/03/12 06:27

どんどん質問の質が落ちているというか、おかしい方向になっているというか。 まだ前の方が質問になってましたね。 単なる老婆心で終わりそうですが、何度も何度も基礎の基礎からやり直すという話をしてきて理解をしてもらえたと思ったら今回の質問で非常に残念に感じました。 もうちょっと自己評価下げましょう。いやちょっとじゃ高くなりすぎるので、もっと。今の半分以下の自己評価でちょうどいいです。 今、この質問にあるようなことを手を出そうとしても結局全て作り直すことになるだけです。 無駄に時間がかかるだけです。「俺なにやってんだろ?」って路頭に迷うだけです。 何度も私が言ってきた、自分の現在位置、間違えましたね。
newyee

2019/03/12 07:24

mtsさんに掲示板を作りなおした方が良い、とのアドバイスを貰ったので、自分でコードを見直してみて、悪い部分などをチェック頂けたらと思い、ご質問させて頂いたんですが、mtsさんの伝えたかったこととは違うということでしょうか...?
m.ts10806

2019/03/12 07:26

掲示板という話だったはずが大きくなりすぎてます。 もっとシングルでシンプルに動くようなものからやらないと。
newyee

2019/03/12 07:32

確かにそうですよね...僕自身、掲示板だけでしたらもう大丈夫だと、過信してしまっていました... 取り敢えず、掲示板の部分だけに焦点を当てて、修正してみたいと思います。
m.ts10806

2019/03/12 07:34

産まれたばかりの赤ちゃんがいきなり走り始めるわけではないので(子育てしてるとそのあたりよく分かります) それぞれの段階にはそれぞれの段階に進むための準備があります。 何度も同じ指摘をされていて、それでもいきなり走ることから選ぶのでしたら「勝手にして」としか言えなくなります。
guest

回答1

0

ベストアンサー

思いつくまま・・・

  • classを作りましょう
  • $_POSTをfilter_inputで変数に受けましょう(直接流し込みはNG)
  • SELECT *→ 面倒でもカラムは羅列しましょう
  • logoutするときはsession_destroyしてもよいかも
  • なんでもかんでもloginをincludeするのは微妙
  • ファイルのアップロード時はファイル名を調整しないと参照できなくなったり競合したりします

投稿2019/03/12 04:23

yambejp

総合スコア114784

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

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

newyee

2019/03/12 04:28

ご回答いただきありがとうございます。 ご指摘頂いた点を、早速見直してみたいと思います。
newyee

2019/04/06 10:15 編集

すみません。実は、あれから掲示板の部分(bbs.php)におきまして、フォーム内の名前やパスワードなどの投稿情報を入力し、送信し、データベースへの書き込み処理を記述した、「write.php」で送信された値を受け取る際に、$name = filter_input(INPUT_POST,'name',FILTER_SANITIZE_SPECIAL_CHARS);のように、filter_input関数の第3引数に、「FILTER_SANITIZE_SPECIAL_CHARS」を指定し、その上で、データベースに値を格納したのですが、この場合は、データベースに格納されている値は、すでに、エスケープ処理がなされた状態という訳ですし、データーベースの値を出力する際に、「htmlspecialchars」関数を通して、出力する必要はないでしょうか? もしくは、「FILTER_SANITIZE_SPECIAL_CHARS」は指定せず、出力する際に、htmlspecialchars関数を通し、出力した方がよろしいでしょうか?実は、qiitaの記事などでは、エスケープ処理をして出力するのは、データベースへ格納する際ではなく、htmlへ出力する前の方が良いと書かれていたもので...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問