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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

555閲覧

phpで「ユーザ登録機能」実装したが、500エラーとなり画面が表示されない。

Taka_takatak

総合スコア8

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2019/08/19 14:27

前提・実現したいこと

HTML,CSS.JS,JQの勉強のため、某マッチングサイトを写経し正常に表示できた後、
「ユーザ登録機能」機能を実装中に以下のエラーメッセージが発生しました。

エラーの原因をweb検索をして調べましたが、解決できず。
見苦しいコードではあると思いますが、どこが間違えているかご教示いただきたいです。

MAMPのhtdocsフォルダには以下のファイルが置いてあります。
sampleフォルダ
∟index.php
∟mypage.php
∟stylesheet.css
∟script.js
∟imgフォルダ(photo)

発生している問題・エラーメッセージ

このページは動作していません localhost では現在このリクエストを処理できません。 HTTP ERROR 500

該当のソースコード

Index.php

Index.php

1<?php 2error_reporting(E_ALL); //E_STRICTレベル以外のエラーを報告する 3ini_set('display_errors','On'); //画面にエラーを表示させるか 4 5//1.post送信されていた場合 6if(!empty($_POST)){ 7 8 //エラーメッセージを定数に設定 9 define('MSG01','入力必須です'); 10 define('MSG02', 'Emailの形式で入力してください'); 11 define('MSG03','パスワード(再入力)が合っていません'); 12 define('MSG04','半角英数字のみご利用いただけます'); 13 define('MSG05','6文字以上で入力してください'); 14 15 //配列$err_msgを用意 16 $err_msg = array(); 17 18 //2.フォームが入力されていない場合 19 if(empty($_POST['email'])){ 20 21 $err_msg['email'] = MSG01; 22 23 } 24 if(empty($_POST['pass'])){ 25 26 $err_msg['pass'] = MSG01; 27 28 } 29 if(empty($_POST['pass_retype'])){ 30 31 $err_msg['pass_retype'] = MSG01; 32 33 } 34 35 if(empty($err_msg)){ 36 37 //変数にユーザー情報を代入 38 $email = $_POST['email']; 39 $pass = $_POST['pass']; 40 $pass_re = $_POST['pass_retype']; 41 42 //3.emailの形式でない場合 43 if(!preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/", $email)){ 44 $err_msg['email'] = MSG02; 45 } 46 47 //4.パスワードとパスワード再入力が合っていない場合 48 if($pass !== $pass_re){ 49 $err_msg['pass'] = MSG03; 50 } 51 52 if(empty($err_msg)){ 53 54 //5.パスワードとパスワード再入力が半角英数字でない場合 55 if(!preg_match("/^[a-zA-Z0-9]+$/", $pass)){ 56 $err_msg['pass'] = MSG04; 57 58 }elseif(mb_strlen($pass) < 6){ 59 //6.パスワードとパスワード再入力が6文字以上でない場合 60 61 $err_msg['pass'] = MSG05; 62 } 63 64 if(empty($err_msg)){ 65 66 //DBへの接続準備 67 $dsn = 'mysql:dbname=php_sample01;host=localhost;charset=utf8'; 68 $user = 'root'; 69 $password = 'root'; 70 $options = array( 71 // SQL実行失敗時に例外をスロー 72 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 73 // デフォルトフェッチモードを連想配列形式に設定 74 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 75 // バッファードクエリを使う(一度に結果セットをすべて取得し、サーバー負荷を軽減) 76 // SELECTで得た結果に対してもrowCountメソッドを使えるようにする 77 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, 78 ); 79 80 // PDOオブジェクト生成(DBへ接続) 81 $dbh = new PDO($dsn, $user, $password, $options); 82 83 //SQL文(クエリー作成) 84 $stmt = $dbh->prepare('INSERT INTO users (email,pass,login_time) VALUES (:email,:pass,:login_time)'); 85 86 //プレースホルダに値をセットし、SQL文を実行 87 $stmt->execute(array(':email' => $email, ':pass' => $pass, ':login_time' => date('Y-m-d H:i:s'))); 88 89 header("Location:mypage.php"); //mypage画面へ 90 } 91 92 } 93 } 94} 95 96?> 97 98 99<!DOCTYPE html> 100<html lang="ja"> 101 <head> 102 <meta charaset="UTF-8"> 103 <title>MeeTech</title> 104 <link rel="stylesheet" href="http://localhost:8888/sample/stylesheet.css"> 105 <link href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" rel="stylesheet"> 106 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 107 <script src="http://localhost:8888/sample/index.php/jquery.js"></script> 108 </head> 109 110 <body> 111 <div class="header"> 112 <div class="header-logo"> 113 <h1 id="top-btn"><i class="fas fa-robot"></i>MeeTech</h1> 114 </div> 115 116 <div class="header-list"> 117 <ul> 118 <li><div id="header-menu"><a href="#about">ABOUT</a></div></li> 119 <li><div id="header-menu"><a href="#merit">MERIT</a></div></li> 120 <li><div id="header-menu"><a href="#price">PRICE</a></div></li> 121 <li><div id="header-menu"><a href="#faq">FAQ</a></div></li> 122 <li><div id="header-menu"><a href="#contact">CONTACT</a></div></li> 123 </ul> 124 </div> 125 126 </div> 127 128 <div class="register-modal-wrapper" id="register-modal"> 129 <div class="modal"> 130 131 <div class="close-modal"> 132 <i class="fa fa-2x fa-times"></i> 133 </div> 134 135 <div id="register-form"> 136 <h2>新規登録</h2> 137 <form action="" method="post"> 138 <span class="err_msg"><?php if(!empty($err_msg['email']; )) echo $err_msg['email']; ?></span> 139 <input class="form-control" name="email" type="text" placeholder="メールアドレス" value="<?php if(!empty($_POST['email'])) echo $_POST['email'];?>"> 140 141 <span class="err_msg"><?php if(!empty($err_msg['pass']; )) echo $err_msg['pass']; ?></span> 142 <input class="form-control" name="pass" type="password" placeholder="パスワード" value="<?php if(!empty($_POST['pass'])) echo $_POST['pass'];?>"> 143 144 <span class="err_msg"><?php if(!empty($err_msg['pass_retype']; )) echo $err_msg['pass_retype']; ?></span> 145 <input class="form-control" name="pass_retype" type="password" placeholder="パスワード(再)" value="<?php if(!empty($_POST['pass_retype'])) echo $_POST['pass_retype'];?>"> 146 147 <input type="submit" id="submit-btn" value="登録"> 148 </form> 149 </div> 150 </div> 151 </div> 152 153 <div class="login-modal-wrapper" id="login-modal"> 154 <div class="modal"> 155 156 <div class="close-modal"> 157 <i class="fa fa-2x fa-times"></i> 158 </div> 159 160 <div id="login-form"> 161 <h2>ログイン</h2> 162 <form action="#"> 163 <input class="form-control" type="text" placeholder="メールアドレス"> 164 <input class="form-control" type="password" placeholder="パスワード"> 165 <div id="submit-btn">ログイン</div> 166 </form> 167 </div> 168 </div> 169 </div> 170 171 172 <div class="top-wrapper"> 173 <div class="contaner"> 174 <h1>新しい人と出会う。新しい自分に出会える</h1> 175 <div class="contaner-btn"> 176 <a href="#" class="btn new register-show" ><i class="fas fa-user-alt"></i>新規登録</a> 177 <a href="#" class="btn login login-show"><i class="fas fa-sign-in-alt"></i>ログイン</a> 178 </div> 179 </div> 180 </div> 181 182 <div id="about"> 183 <div id="about1"> 184 <h1>MeeTechとは?</h1> 185 <h3>マッチング業界初の<span id="mark">ITエンジニア限定</span>のAIマッチングサービスです。</h3> 186 187 <ul class="msr_flow02"> 188 <li> <span class="step"></span><i class="fas fa-sign-out-alt"></i>ユーザ登録</li> 189 <li> <span class="step"></span><i class="fas fa-id-badge"></i>プロフィール入力</li> 190 <li> <span class="step"></span><i class="fab fa-android"></i><span class="AI">AIマッチング成立</span></li> 191 <li> <span class="step"></span><i class="fas fa-utensils"></i>日時・場所決定</li> 192 <li> <span class="step"></span><i class="fas fa-hand-holding-heart"></i>デート</li> 193 </ul> 194 195 196 </div> 197      198 199 <div id="about2"> 200 <img src="http://localhost:8888/sample/img/photo10.png" width=80%; height=80% > 201 </div> 202 </div> 203 204 <div id="merit"> 205 <h1>MERIT</h1> 206 <div class="parent-merit"> 207 <div class="child-merit"> 208 <div class="child-merit-up"> 209   <h2 id="merimeri">AI自動マッチング</h2> 210 <p class="first">あなたのプロフィールから、</p> 211 <p class="second">AIが相性の良いお相手を選びます。</p> 212 </div> 213 <div class="child-merit-low one"></div> 214 </div> 215 216 <div class="child-merit"> 217 <div class="child-merit-up"> 218 <h2>店予約不要</h2> 219 <p class="first">お会いするエリアと予算を指定すれば、</p> 220 <p class="second">条件に合ったお店を自動で予約します。</p> 221 </div> 222 <div class="child-merit-low two"></div> 223 </div> 224 225 <div class="child-merit"> 226 <div class="child-merit-up"> 227 <h2>サクラゼロ</h2> 228 <p class="first">厳重な入会審査を実施しており、</p> 229 <p class="second">会員の中にサクラは一人もいません。</p> 230 </div> 231 <div class="child-merit-low three"></div> 232 </div> 233 234 <div class="child-merit"> 235 <div class="child-merit-up"> 236 <h2>新たな人脈</h2> 237 <p class="first">もし恋愛に発展しなかった場合でも、</p> 238 <p class="second">「ITエンジニア」として新たな人脈となります。</p> 239 </div> 240 <div class="child-merit-low four"></div> 241 </div> 242 243 </div> 244 </div> 245 246 247 <div id="price"> 248  <h1>PRICE</h1> 249 <table> 250 <tr> 251 <th><i class="fas fa-male"></i>Men</th> 252 <td>¥4,500 / 月</td> 253 </tr> 254 <tr> 255 <th><i class="fas fa-female"></i>Women</th> 256 <td>¥2,000 / 月</td> 257 </tr> 258 </table> 259 </div> 260 261-----文字数制限のため以下省略---

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

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

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

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

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

8zca

2019/08/19 15:10

エラーログに何か出ていませんか? ファイルはMAMPの下にあるlog/php_error.logです。
Taka_takatak

2019/08/19 15:31

[19-Aug-2019 13:51:38 UTC] PHP Parse error: syntax error, unexpected ';' in /Applications/MAMP/htdocs/sample/index.php on line 138 ここを見るべきなのですね、、
Taka_takatak

2019/08/19 15:38

<span class="err_msg"><?php if(!empty($err_msg['email']; )) echo $err_msg['email']; ?></span> index.php の138行目は上記ですが、、
m.ts10806

2019/08/20 01:31 編集

いえ、画面に表示されたものを確認すべきです。
m.ts10806

2019/08/20 01:32

画面に表示される前に500で落ちてるなら、おそらくWebサーバー側の設定ですね。
guest

回答1

0

ベストアンサー

if文の条件の中でセミコロンが入っているのが文法エラーの原因です。

if(!empty($err_msg['pass_retype']; ))

if(!empty($err_msg['pass_retype'] ))

*その後にも同じような文法エラーがあるので同様に修正が必要です。
文法エラーはまともなエディタやIDEを使えば機械的に検出が可能なので、PHP IDEとかPHP エディタで調べてみて開発環境を整えることをお勧めします。

下記はPhpStormの例(問題の箇所に赤波線が引かれるので書いてる途中で文法ミスに気付くことが出来ます)

イメージ説明

投稿2019/08/19 17:58

tanat

総合スコア18713

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

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

退会済みユーザー

退会済みユーザー

2019/08/19 19:00

エラー出力をする設定にしているにも関わらず、エラーが出力されていないのが不思議ですね。なんか他にも問題がありそう。 他にあるとしたら .htaccess とかかなぁ。。。
m.ts10806

2019/08/20 01:35

もしくはPHPのバージョンが超古いということも・・
tanat

2019/08/20 01:38 編集

> te2jiさん 確かにそうですね。。。 .htaccessかApacheのConfの設定でこけてそうな気もします。
8zca

2019/08/20 12:33 編集

error_reportingとini_setの順番を逆にすれば出るかと思います。(多分
Taka_takatak

2019/08/25 05:29

ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問