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

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

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

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

Q&A

解決済

1回答

584閲覧

ログインフォームからデータベースに登録出来ない

rii

総合スコア7

PHP

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

0グッド

1クリップ

投稿2021/03/10 17:13

編集2021/03/11 05:35

ログインフォームを作ったのですが、エラーメッセージの「登録できませんでした」しか出てきません。エラーを出力するコードを調べて入力してもエラ〜メッセージが出てきません。名前やメールアドレス、パスワードの記入ミスのメッセージは正常に出力されます。データベースに登録できる様にしたいです。ご意見いただけるとうれしいです。

______________________________________________
log_form.php

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>ユーザー登録画面</title> </head> <body> <h2>ユーザー登録フォーム</h2> <form action="login.php" method="POST"> <p> <label for="username">ユーザー名:</label> <input type="text" name="username"> </p> <p> <label for="email">メールアドレス:</label> <input type="email" name="email"> </p> <p> <label for="pass">パスワード:</label> <input type="password" name="pass"> </p> <p> <label for="pass_conf">パスワード確認:</label> <input type="password" name="pass_conf"> </p> <p> <input type="submit" value="新規登録"> </p> </form> </body> </html>

login.php

<?php require_once ('UserLogic.php'); //エラーメッセージ $err = []; //バリデーション if(!$username = filter_input(INPUT_POST,'username')){ $err[] = 'ユーザー名をを記入してください。'; } if(!$emai = filter_input(INPUT_POST,'email')){ $err[] = 'メールアドレスをを記入してください。'; } $password = filter_input(INPUT_POST,'pass'); if(!preg_match("/\A[a-z\d]{8,100}+\z/i",$password)){ $err[] = 'パスワードは英数字8文字以上100文字以下にしてください。'; } $password_conf = filter_input(INPUT_POST,'pass_conf'); if($password!==$password_conf){ $err[] = '確認用パスワードと異なっています。'; } //エラーがない場合の処理 if(count($err)===0){ $has = UserLogic::crUser($_POST); if(!$has){ $err[] = '登録に失敗しました。'; } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>ユーザー登録完了画面</title> </head> <body> <?php if(count($err)>0) : ?> <?php foreach($err as $e) : ?> <p><?php echo $e ?></p> <?php endforeach ?> <?php else : ?> <p>ユーザー登録完了しました</p> <?php endif ?> <a href="log_form.php">戻る</a> </body> </html>

UserLogic

<?php require_once ('dbco.php'); class UserLogic { /** * ユーザーを登録する * @param array $userData * @return bool $res */ public static function crUser($userData) { $res = false; $sql='INSERT INTO log (name, email, pass) VALUES (?, ?, ?)'; $arr = []; $arr[] = $userData['username']; $arr[] = $userData['email']; $arr[] = password_hash($userData['pass'],PASSWORD_DEFAULT); try{ $stmt = dbco()->prepare($sql);   $res = $stmt->execute($arr); return $res; }catch(\Exception $e){ echo $e; error_log($e,3, '../error.log'); return $res; } } } ?>

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

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

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

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

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

m.ts10806

2021/03/10 18:59

コードやエラーはマークダウンのcode機能を利用してご提示ください。 https://teratail.com/questions/238564 あと「ログインフォーム」はログインするための機能であって、登録ではないのでは。
m.ts10806

2021/03/10 19:00

dbco.php のコードも提示してください。
m.ts10806

2021/03/10 19:01

log テーブルのテーブル定義もcreate table文で提示し、 投入しようとしているデータ例(失敗するもの)も提示してください。
takasima20

2021/03/10 21:19

「エラーがない場合の処理」の括弧の対応がちがくないスか?
rii

2021/03/11 05:40

かっこのどこら辺が間違っていますか。 ご指摘いただけると嬉しいです。
m.ts10806

2021/03/11 05:51

オブジェクトはechoじゃ出力不可なので echo $e; ↓ echo $e->getMessage(); か var_dump($e); で。 falseが返ってるのは間違いないので、どこの時点でfalseなのかデバッグしてください。
rii

2021/03/11 06:33

解決しました! 問題はまず初めのデータベース接続時のdbnameをtablenameにしていました。
guest

回答1

0

自己解決

db接続で、dbnameではなくtablenameを入れていたのがエラーの原因でした。

投稿2021/03/11 06:34

rii

総合スコア7

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問