質問: $statement->execute(array( $_SESSION['join']['name'] ,$_SESSION['join']['email'] ,shal($_SESSION['join']['password']) ,$_SESSION['join']['image'] )); unset($_SESSION['join']); header('Location: thank.php'); exit(); } ?> 会員登録処理 会員登録確認 ニックネーム メールアドレス パスワード 【表示されません】 写真など « 書き直す| ``` 会員登録完了画面 ``` 会員登録処理 会員登録完了 ユーザー登録が完了しました ログインする ``` ### 試したこと ★会員登録画面について、 1コメントアウトの直下に書いたコードに変更しました。 例: 修正前> > > > > > 修正後> > > > > > 2エラー文は送信ボタンを押下前にエラー文が表示されましたので、 それに対して、判定文を追加しました。(ボタンをクリックされるかの判定を追加) > > > > > > * メールアドレスを入力してください > > > > > > * 指定されたメールアドレスはすでに登録されています > > > > > > > ★会員確認画面について、 特に試したことはございません。 ### 補足情報(FW/ツールのバージョンなど) 環境情報について、以下の通りです。 ・Windows10 64bit ・Eclipse バージョン4.4 (PHP バージョン5.5) ・XAMPP:バージョン3.2.1 上記のコードの記述も全て確認しましたが、DBへの接続もできており、ミスしている箇所が見つけられません。 先人のお力をお借りしたく、質問させていただきます。 何卒宜しくお願い申し上げます。
回答: ざっと見て気になるところだけ列挙します。 > > $_POST=array(); > > > 割りと早い段階でやってしまっています。 $_POSTや$_GETなどの自動で定義される変数を上書きしてはいけません。 ということで > > if(!empty($_POST)) { > > > ここに絶対に入らないようになってますしね。 > > $POST > > > 別の変数です。 > > INSERT INTO members SET > > > `INSERT INTO table SET [column=value]` は確かMySQLでしか使えない表現です。 多くのDBでは`INSERT INTO table ([columns]) VALUES ([values])` で、MySQLでも使えます。 なるべく多くで使える表現を覚えた方が良いかと思います。 ※ただ実際はフレームワークやその仕組みでデータのやりとりをするので直にSQLを書く機会は減りました。あまり構文を気にしなくても良いのですけど > > 画像アップロード > > > 確認画面で戻った場合、アップロードした使われない画像がそのまま残ります。 この対策はされたほうが良いのでは? ※閉じたときは仕方ないかもしれませんが 「確認用」と「登録用」は別のディレクトリした方が良いと思います。 > > よくわかるPHPの教科書**PHP5.5**対応版 > > > 書籍を変えましょう。いろんな理由がありますが、PHP5.5はサポートが切れて久しいですし、 今回のような実装があるコードは参考にしてはいけません。 プログラミングをしていく上で、様々なことを覚えていくと思いますが、 初期の初期で覚えておかないと初心者から抜け出せないのが下記3点です。 * エラーをよく読むこと * デバッグをすること * 公式ドキュメントで機能を確認すること(PHPの場合はPHPマニュアル。 今回の問題点の1つである$_POSTについてもちゃんとあります) あとできれば、デバッグとも関係するのですけど、構文チェック機能のあるエディタは必須です。 コード整形機能や機能のサジェストもあるものが望ましいですね。 「IDE」と呼ばれる統合環境がより望ましいです。(eclipseなどが代表的です。動作は重たいですが)