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

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

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

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

HTML

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

Q&A

2回答

1047閲覧

Undefined variable及び Undefined indexエラーを無くしたい。

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

HTML

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

0グッド

0クリップ

投稿2021/07/10 02:35

前提・実現したいこと

PHPで会員登録画面を作成しております。
Notice: Undefined variable及び Undefined indexのエラーを無くしたいです。

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

  1. ログイン画面に番号とパスワードを入力します。ここで、登録されていない場合は新規登録画面へ行き、登録を行う。
  2. ログインが成功すると、ホーム画面へと遷移する。ここで、データベースを利用します。番号をデータベースに保存し、最終的にログインがされた情報を一覧として表示させます。

二つともエラーが出ます。

PHP

1Notice: Undefined variable: user in /Applications/XAMPP/xamppfiles/htdocs/timecard1/newreg.php on line 27 2 3Notice: Undefined index: user_no in /Applications/XAMPP/xamppfiles/htdocs/timecard1/newreg.php on line 27

該当のソースコード

PHP

1<?php 2 3if(!empty($_POST['user_no'])){ 4$pass = password_hash($_POST['password'], PASSWORD_DEFAULT); 5 6$db_user = "kintai"; 7$db_pass = "password"; 8$db_host = "localhost"; 9$db_name = "mydb"; 10 11$dsn = "mysql:host=$db_host; dbname=$db_name; charset=utf8"; 12 13try { 14 $dbh = new PDO($dsn, $db_user, $db_pass); 15} catch (PDOException $Exception) { 16 $msg = $Exception->getMessage(); 17} 18 19 20//フォームに入力されたuer_noがすでに登録されていないかチェック 21$sql = "SELECT * FROM users WHERE user_no = :user_no"; 22$stmt = $dbh->prepare($sql); 23$stmt->bindValue(':user_no', $user_no); 24$stmt->execute(); 25$user = $stmt->fetch(); 26}; 27if ($user['user_no'] === $_POST['user_no']) { 28 $msg = '同じ従業員番号が存在します。'; 29 $link = '<a href="signin.php">戻る</a>'; 30 31} else { 32 //登録されていなければinsert 33 $sql = "INSERT INTO users(user_no, pass) VALUES (:user_no, :pass)"; 34 $stmt = $dbh->prepare($sql); 35 $stmt->bindValue(':user_no', $user_no); 36 $stmt->bindValue(':pass', $password); 37 $stmt->execute(); 38 $msg = '会員登録が完了しました'; 39 $link = '<a href="login.php">ログインページへ</a>'; 40} 41?>

補足情報(FW/ツールのバージョンなど)

signin.phpは新規登録画面です。

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

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

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

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

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

guest

回答2

0

【敢えて厳しい事を言います】

エラーが出るたびに全部丸投げ質問でしょうか。
完成するまで、もしくは完成後も保守作業が発生するたびに他人にタダ働きさせればいいと思っているのでしょうか。。。
勤怠管理システムとのことなので、自社内製をしようとしているか、業務として受注した案件のどちらかかと思いますが・・・
現状のあなたの能力を拝察すると、とても無事完成まで漕ぎ着けるとは思えません。業としてシステム開発を受注するレベルにはないと思います。
前者であれば社内の他の人に振るか、外注も視野に入れて上司の方と相談すべきです。
後者の場合は・・・損害賠償請求されることを覚悟の上でごめんなさいして契約解除したほうがいいです。
このまま無理矢理進めても誰も幸せにならないと思います。

投稿2021/07/10 06:34

編集2021/07/10 06:35
F_I_A

総合スコア104

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

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

0

MacでXAMPPというミスは置いておいて、PHPには配列や変数や情報のチェックをしてくれる関数は多数あるので(array_なんとか、isなんとか 詳しくは関数リファレンスから)、いきなり参照したり使用したりするのではなく、チェックしてから使うようにするだけかと思います。

リクエスト送信側がちゃんとなっているかは当然確認すべきですが、リクエスト受信側はどこから何が送られてくるかは確定してないので、扱いたい情報の検査は必須です。
リクエスト情報を検査するための関数もあります。

エラーハンドリング(try-catch)も同じく、一度確立したら特に問題の起きないコネクションのところだけ張ってもほとんど効果はありません。
動的に接続情報を処理するわけではないですからね。
どこからなにが送られてくるか分からない、リクエスト情報を扱うところにこそエラーハンドリングすべきです。

投稿2021/07/10 03:19

編集2021/07/10 03:50
m.ts10806

総合スコア80875

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問