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

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

ただいまの
回答率

89.25%

HTTP ERROR 500 MAMP

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 214

aka88533383

score 10

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

staff_add.php↓

<html>
    <head>
        <meta charset="UTF=8">
        <title>タイトル</title>
    </head>
    <body>
        スタッフ追加<br />
        <br />
        <form method="post" action="staff_add_check.php">
            スタッフ名を入力してください。<br />
            <input type="text" name="name" style="width:200px"><br />
            パスワードを入力してください。<br />
            <input type="password" name="pass" style="width:100px"><br />
            パスワードをもう一度入力してください。<br />
            <input type="password" name="pass2" style="width:100px"><br />
            <br />
            <input type="button" onclick="history.back()" value="戻る">
            <input type="submit" value="OK">
        </form>
    </body>
</html>


staff_add_check.php↓

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF=8">
        <title>タイトル</title>
    </head>
    <body>
        <?php
        $staff_name=$_POST['name'];
        $staff_pass=$_POST['pass'];
        $staff_pass2=$_POST['pass2'];

        $staff_name= htmlspecialchars($staff_name,ENT_QUOTES,'UTF-8');
        $staff_pass= htmlspecialchars($staff_pass,ENT_QUOTES,'UTF-8');
        $staff_pass2= htmlspecialchars($staff_pass2,ENT_QUOTES,'UTF-8');

        if($staff_name==''){
            print'スタッフ名が入力されていません。</br>';
        } else {
            print 'スタッフ名:';
            print $staff_name;
            print '<br/>';
        }

        if($staff_pass==''){
            print'パスワードが入力されていません。<br />';
        }

        if($staff_pass!==$staff_pass2){
            print'パスワードが一致しません。<br />';
        }

        if($staff_name==''||$staff_pass==''||$staff_pass!==$staff_pass2){
            print'<from>';
            print'<input type="button" onclick="history.back()" value="戻る">';
        } else {
            $staff_pass=md5($staff_pass);
            print'<from method="post" axtion="staff_add_done.php">';
            print'<input type="hidden" name="name" value="'.staff_name.'">';
            print'<input type="hidden" name="pass" value="'.staff_pass.'">';
            print<br />;
            print'<input type="button" onclic="history.back()" value="戻る">';
            print'<input type="submit" value="OK">';
            print'</from>';
            ?>
        </body>
    </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のどの部分がエラーの原因で、どこをどのように変更すれば良いのでしょうか。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2020/01/19 19:58

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

    キャンセル

  • aka88533383

    2020/01/19 20:40

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

    キャンセル

回答 1

checkベストアンサー

+1

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

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

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

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

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

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

        $staff_name= htmlspecialchars($staff_name,ENT_QUOTES,'UTF-8');
        $staff_pass= htmlspecialchars($staff_pass,ENT_QUOTES,'UTF-8');
        $staff_pass2= htmlspecialchars($staff_pass2,ENT_QUOTES,'UTF-8');


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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/01/19 21:27

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

    キャンセル

  • 2020/01/19 21:33

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

    キャンセル

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

  • ただいまの回答率 89.25%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る