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

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

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

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

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

Q&A

解決済

1回答

1196閲覧

HTTP ERROR 500 MAMP

aka88533383

総合スコア10

HTTP

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

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

0グッド

0クリップ

投稿2020/01/19 10:16

編集2020/01/19 11:39

chromeでhttp://localhost/staff/staff_add.phpを検索するとしっかりフォームが表示されますが、

staff_add.php↓

html

1<html> 2 <head> 3 <meta charset="UTF=8"> 4 <title>タイトル</title> 5 </head> 6 <body> 7 スタッフ追加<br /> 8 <br /> 9 <form method="post" action="staff_add_check.php"> 10 スタッフ名を入力してください。<br /> 11 <input type="text" name="name" style="width:200px"><br /> 12 パスワードを入力してください。<br /> 13 <input type="password" name="pass" style="width:100px"><br /> 14 パスワードをもう一度入力してください。<br /> 15 <input type="password" name="pass2" style="width:100px"><br /> 16 <br /> 17 <input type="button" onclick="history.back()" value="戻る"> 18 <input type="submit" value="OK"> 19 </form> 20 </body> 21</html>

staff_add_check.php↓

html

1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="UTF=8"> 5 <title>タイトル</title> 6 </head> 7 <body> 8 <?php 9 $staff_name=$_POST['name']; 10 $staff_pass=$_POST['pass']; 11 $staff_pass2=$_POST['pass2']; 12 13 $staff_name= htmlspecialchars($staff_name,ENT_QUOTES,'UTF-8'); 14 $staff_pass= htmlspecialchars($staff_pass,ENT_QUOTES,'UTF-8'); 15 $staff_pass2= htmlspecialchars($staff_pass2,ENT_QUOTES,'UTF-8'); 16 17 if($staff_name==''){ 18 print'スタッフ名が入力されていません。</br>'; 19 } else { 20 print 'スタッフ名:'; 21 print $staff_name; 22 print '<br/>'; 23 } 24 25 if($staff_pass==''){ 26 print'パスワードが入力されていません。<br />'; 27 } 28 29 if($staff_pass!==$staff_pass2){ 30 print'パスワードが一致しません。<br />'; 31 } 32 33 if($staff_name==''||$staff_pass==''||$staff_pass!==$staff_pass2){ 34 print'<from>'; 35 print'<input type="button" onclick="history.back()" value="戻る">'; 36 } else { 37 $staff_pass=md5($staff_pass); 38 print'<from method="post" axtion="staff_add_done.php">'; 39 print'<input type="hidden" name="name" value="'.staff_name.'">'; 40 print'<input type="hidden" name="pass" value="'.staff_pass.'">'; 41 print<br />; 42 print'<input type="button" onclic="history.back()" value="戻る">'; 43 print'<input type="submit" value="OK">'; 44 print'</from>'; 45 ?> 46 </body> 47 </html>

okボタンを押すと次のエラーが出ます。

エラー画面

apache_error.logを確認した所下記のエラーが発生していました。

lient denied by server configuration: /Applications/MAMP/htdocs/.DS_Store, referer: http://localhost/MAMP/?language=English

訳すと
「サーバー構成によって拒否された権限:/Applications/MAMP/htdocs/.DS_Store、リファラー:http:// localhost / MAMP /?language = English」
となりますが、こちらのエラーを修正するにはApacheのどの部分がエラーの原因で、どこをどのように変更すれば良いのでしょうか。

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

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

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

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

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

m.ts10806

2020/01/19 10:58

staff_add_check.php のコードはどうなってますか?
aka88533383

2020/01/19 11:40

質問内容に記載させて頂きました!よろしくお願い致します。
guest

回答1

0

ベストアンサー

エラーが沢山ある気がします。

php

1 2 print'<input type="hidden" name="name" value="'.staff_name.'">'; //定数になってる 3 print'<input type="hidden" name="pass" value="'.staff_pass.'">'; //定数になってる 4 print<br />; //クォートで囲われていない 5

これで画面にエラーが出ないのはたぶんエラー設定部分かとは思います。
MAMP所持者ではないので確実に同じように出来るか分かりませんが、
ひとまずエラー表示ONにして確かめてください。

画面に出なかったとしても、最初の画面が出てきていてフォームリクエストを送って500エラーとなったということは、ほとんどのケースで送り先のプログラムに問題がある(と思います)
PHPが正常に動作している環境なのであれば、エラーログは出力されるのでお手持ちの環境のエラーログを確認するようにしましょう。

ただ、3つ目のクォート囲われてないのは明らかな構文エラーですので、
これくらいのものであれば構文チェック機能のあるエディタ入れるとすぐ分かると思います。
IDEがオススメです。
※1つ目と2つ目は構文がNGというより未定義の定数として出るはず。

問題とは関係ないですが、気になる実装。

php

1 2 $staff_name= htmlspecialchars($staff_name,ENT_QUOTES,'UTF-8'); 3 $staff_pass= htmlspecialchars($staff_pass,ENT_QUOTES,'UTF-8'); 4 $staff_pass2= htmlspecialchars($staff_pass2,ENT_QUOTES,'UTF-8'); 5

htmlspecialchars()などによるHTMLエスケープは画面出力時に行ってください。
処理結果を保管してそれでバリデーションを行ってしまうと、入力値そのままのチェックになりません。
あくまで「HTML解析の都合で画面表示にならない記号などを画面表示できるように加工する」ので。

もちろんhtmlspecialchars()を掛けた情報をDBに保管してもいけません。

投稿2020/01/19 11:50

編集2020/01/19 11:54
m.ts10806

総合スコア80850

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

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

aka88533383

2020/01/19 12:27

エラー設定部分を設定し直し、エラー箇所を修正した所表示されました! 「htmlspecialchars()」こちらについても大変参考になります。ご教授ありがとうございます。
m.ts10806

2020/01/19 12:33

細かいところ申し訳ないですが、この場合は「ご教示」が正しいです(間違える人が多すぎる)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問