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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

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

Q&A

1回答

2606閲覧

phpでメールアドレスの送信を行ってメールが届かない

kacz-

総合スコア16

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

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

0グッド

0クリップ

投稿2017/06/19 00:34

編集2022/01/12 10:55

###前提・実現したいこと
メールアドレスを送信して登録を行うphpを作成しております。
エラーの対処がわからないため、対処法をお願い申し上ます。

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

Notice: Undefined index: mode in /Applications/XAMPP/xamppfiles/htdocs/members/regist/regist_confirm.php on line 13 Notice: Undefined index: pre_userid in /Applications/XAMPP/xamppfiles/htdocs/members/regist/regist_confirm.php on line 13 Notice: Undefined index: input_userid in /Applications/XAMPP/xamppfiles/htdocs/members/regist/regist_confirm.php on line 13 Notice: Undefined index: input_password in /Applications/XAMPP/xamppfiles/htdocs/members/regist/regist_confirm.php on line 13 Notice: Undefined index: input_name in /Applications/XAMPP/xamppfiles/htdocs/members/regist/regist_confirm.php on line 13 Notice: Undefined index: input_email in /Applications/XAMPP/xamppfiles/htdocs/members/regist/regist_confirm.php on line 13 Warning: mysqli_query() expects at least 2 parameters, 1 given in /Applications/XAMPP/xamppfiles/htdocs/members/regist/regist_form.php on line 18 Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /Applications/XAMPP/xamppfiles/htdocs/members/regist/regist_form.php on line 21 メールアドレス登録エラー Error: このURLは利用できません。 もう一度メールアドレスの登録からお願いします。 会員登録ページ

###該当のソースコード

**regist_confirrm.php ↓**
<?php /******************************************************************************* * * [regist_confirm.php] 会員登録内容確認画面 * ********************************************************************************/ /* 入力フォームからパラメータを取得 */ $formList = array('mode','pre_userid','input_userid','input_password','input_name','input_email'); /* 必須項目 */ $requireList = array('mode','input_userid','input_password','input_name'); /* ポストデータを取得しパラメータと同名の変数に格納 */ foreach($formList as $value) { $$value = $_POST[$value]; } /* エラーメッセージの初期化 */ $error = array(); /* 必須項目入力チェック */ foreach($requireList as $value) { if($$value == "") { array_push($error,"入力されていない項目があります。"); break; } } /* パスワードチェック */ if(strlen($input_password) < 6 || strlen($input_password) > 16) { array_push($error,"パスワードは6文字以上16文字以内でお願いします。"); } ?> <div class="error-msg"> <?php /* エラー 入力フォーム表示 $error */ if(count($error) > 0) { require_once("regist_form.php"); ?> </div> <?php } else { ?> <form method="post" action="index.php"> <input type="hidden" name="mode" value="user_regist"> <table> <caption>入力情報確認ページ</caption> <tr> <td class="item">ユーザー名:</td> <td><?php print $input_userid;?><input type="hidden" name="input_userid" value="<?php print $input_userid;?>"></td> </tr> <tr> <td class="item">パスワード:</td> <td><?php print $input_password;?><input type="hidden" name="input_password" value="<?php print $input_password;?>"></td> </tr> <tr> <td class="item">名前:</td> <td><?php print $input_name;?><input type="hidden" name="input_name" value="<?php print $input_name;?>"></td> </tr> <tr> <td class="item">メールアドレス:</td> <td><?php print $input_email;?><input type="hidden" name="input_email" value="<?php print $input_email;?>"></td> </tr> </table> <div><input type="submit" value=" 登 録 "></div> </form> <?php } ?>
**regist_from.php↓**
<?php /******************************************************************************* * * [regist_from.php] 仮登録のチェックと会員登録フォーム * ********************************************************************************/ /*pre_useridの値を取得*/ if($mode == "regist_form") { $pre_userid = $_GET['pre_userid']; } /*pre_userid 有効チェック*/ $errorFlag = true; /* データベース接続設定 */ require_once("db.php"); /* 取得したユニークIDをキーに登録されたメールアドレスを取得 */ $query = "select email from members where pre_userid = '$pre_userid'"; $result = mysqli_query($query); /*データベースより取得したメールアドレスを表示*/ if(mysqli_num_rows($result) > 0) { //取得した結果のデータの数が0以上なら → データが取得できた //データが正常に取得できた $errorFlag = false; $data = mysqli_fetch_array($result); $email = $data['email']; } if($errorFlag) { // pre_useridが無効 ?> <table> <caption>メールアドレス登録エラー</caption> <tr> <td class="item">Error:</td> <td>このURLは利用できません。<br>もう一度メールアドレスの登録からお願いします。<br> <a href="index.php">会員登録ページ</a></td> </tr> </table> <?php } else { // pre_useridが有効 // regist_confirmでのエラー表示 if(count($error) > 0) { foreach($error as $value) { print $value."<br>"; } } ?> <form method="post" action="index.php"> <input type="hidden" name="mode" value="regist_confirm"> <input type="hidden" name="pre_userid" value="<?php print $pre_userid; ?>"> <table> <caption>会員情報登録フォーム</caption> <tr> <td class="item">ユーザー名:</td> <td><input type="text" size="30" name="input_userid" value="<?php print $input_userid; ?>"></td> </tr> <tr> <td class="item">パスワード:</td> <td><input type="text" size="30" name="input_password" value="<?php print $input_password; ?>">&nbsp;&nbsp;※ 6文字以上16文字以下</td> </tr> <tr> <td class="item">名前:</td> <td><input type="text" size="30" name="input_name" value="<?php print $input_name; ?>"></td> </tr> <tr> <td class="item">E-mail:</td> <td><?php print $email; ?><input type="hidden" name="input_email" value="<?php print $email; ?>"></td> </tr> </table> <div><input type="submit" value=" 送 信 "></div> </form> <?php } ?>
###試したこと 課題に対してアプローチしたことを記載してください ###補足情報(言語/FW/ツール等のバージョンなど) より詳細な情報

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

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

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

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

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

m.ts10806

2017/06/19 00:37 編集

プログラムコードは```で囲ってください。(わからなければ質問編集画面でコード部分を選択し<code>ボタンを押してください) 閉じ忘れですね。
m.ts10806

2017/06/19 00:38

regist_confirrm.phpの$$valueは転記ミスですか?それとも本当にそのように書いてありますか?
kacz-

2017/06/19 00:54

元々のソースコードをmysqlからmysqliに変更しており、基本的なソースはいじっておりません。$$valueは元々のソースコード通りです。
guest

回答1

0

エラーメッセージはGoogle翻訳に突っ込めばそこそこいい感じに訳してくれるので利用してみてください。
※あくまで下記はエラーメッセージの対処法でこれがなおったからと仕様どおり(システムとして理想どおり)動くわけではありません

Undefined index:~~

「配列にそんな名前のキーはないよ」という意味です。
regist_confirm.phpの冒頭で$_POST[$value]としていますが、ここでPOST送信されてない状態で$_POSTを参照しようとしているためおきているエラーと思います。
$_SERVER["REQUEST_METHOD"]でPOSTか確認のうえ、利用すると良いでしょう。

mysqli_query() expects at least 2 parameters

必要なパラメータが足りていないというエラーです。
PHPマニュアルなどを参考に正しくパラメータをセットしてください。

おそらくmysqli_num_rows()の方はmysqli_query()が解決すればうまく動きそうですね。

mysqli_num_rows() expects parameter 1 to be mysqli_result

mysqli_resultをパラメータにセットしてくださいというメッセージ。mysqli_query()が正しく動作させられていないためNULLがセットされているんじゃないかなと。

投稿2017/06/19 00:47

編集2017/06/19 00:48
m.ts10806

総合スコア80765

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問