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

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

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

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

PHP

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Q&A

解決済

1回答

2601閲覧

1つのページでログインパターンが2通りある画面のif分岐で困ってます

earnest_gay

総合スコア615

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

PHP

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

0グッド

0クリップ

投稿2016/09/27 16:56

編集2016/09/28 01:35

1つのページでログインパターンが2通りある画面を作っています。

部署コードだけでログインする方法と
社員コードとパスワードの2つを使ってログインする方法です。

それぞれ入力してなければ警告メッセージみたいなものを出したいのですが
部署コードを入力していても、社員コードが入力されていなかった時の処理が走り、困っています。
if文の組み方が悪いのか、、、

プログラムの上書きの関係で社員コードを入力していても、
部署コードのメッセージは出ませんが、逆に
部署コードを入力しているのに
社員コードのメッセージは出ます。

部署コードを入力していなければ、
$errorMsg = "部署コードを入力してください";
を表示させて他の並行した表示はさせたくないです。

①と②の部分ですね。
並行して処理しているのは分かるのですが、どうすればメッセージをうまく出せるかそのロジックがわかりません。
部署コードでログインできたら遷移するのでそれ以降の処理はなく
社員コードとパスワードでログインするのであれば部署コードの処理は必要ありません。
ってここはモデル側の話になってきそうですね。。。

ログインの処理よりもまず、この分岐を確立させたいです。

1つのページでログインパターンが2通りある画面を作っていますが
この場合、どうやって分岐させたらよろしいでしょうか?

イメージ説明

php

1<?php 2 3require_once(dirname(__FILE__).'/LoginModel.php'); 4 5$departmentCode = filter_input(INPUT_GET, 'departmentCode'); 6$staffCode = filter_input(INPUT_GET, 'staffCode'); 7$password = filter_input(INPUT_GET, 'password'); 8 9if(!empty($_GET['submit'])) { 10 if($departmentCode){ 11 $LoginModel = nwe LoginModel(); 12 $singleLoginCheck = $LoginModel->singleLoginCheck($departmentCode) 13 if($singleLoginCheck){ 14 //$singleLoginCheckで権限フラグがあればページ遷移 15 } else { 16 $errorMsg = "入力した部署コードには権限がありません"; 17 } 18 } else {//① 19 $errorMsg = "部署コードを入力してください"; 20 } 21} 22 23if(!empty($_GET['submit'])) { 24 if($staffCode){ 25 if($password){ 26 //ここも同様に適当なメソッド作って検証して遷移 27 } else { 28 $errorMsg = "パスワードを入力してください"; 29 } 30 } else {//② 31 $errorMsg = "社員コードを入力してください"; 32 } 33} 34 35?> 36<!DOCTYPE html> 37<html> 38<head> 39 <meta http-equiv="content-language" content="ja"> 40 <meta charset="UTF-8"> 41 <meta name="robots" content="noindex,nofollow"> 42 <meta name="description" content=""> 43 <meta name="keywords" content=""> 44 <meta name="author" content=""> 45 <title></title> 46 <link rel="stylesheet" href="" /> 47 <script type="text/javascript" src=""></script> 48</head> 49<header class=""> 50 51</header> 52<body> 53 <header class=""> 54 55 </header> 56 <article> 57 <form action="" method="get" accept-charset="utf-8"> 58 <table> 59 <tbody> 60 <tr> 61 <th>部署コード</th> 62 <td><input type="text" name="departmentCode" value="<?php $departmentCode ?>" ></td> 63 </tr> 64 <tr> 65 <th>社員コード</th> 66 <td><input type="text" name="staffCode" value="<?php $staffCode ?>" ></td> 67 </tr> 68 <tr> 69 <th>パスワード</th> 70 <td><input type="text" name="password" value="<?php $password ?>" ></td> 71 </tr> 72 </tbody> 73 </table> 74 <input type="submit" name="submit" value="ログイン"> 75 </form> 76 <?php echo $errorMsg ?> 77 </article> 78</body> 79<footer> 80 <nav> 81 </nav> 82</footer> 83</html> 84

分岐条件は下記のようなりまます。

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

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

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

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

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

guest

回答1

0

ベストアンサー

  • 部署コードが入力されている場合
  • 社員コードが入力されている場合
  • 部署コードも社員コードも入力されない場合
  • 両方入力されている場合

と「パスワードの入力有無」の組み合わせになるので、「部署コードを入力してください」「社員コードを入力してください」というエラーではなく「コードをどちらか入力してください」になりませんか?

PHP

1if ( !empty( $_GET[ 'submit' ] ) ) { 2 if ( $departmentCode ) { 3 $LoginModel = nwe LoginModel(); 4 $singleLoginCheck = $LoginModel->singleLoginCheck( $departmentCode ); 5 if ( $singleLoginCheck ) { 6 //$singleLoginCheckで権限フラグがあればページ遷移 7 } else { 8 $errorMsg = "入力した部署コードには権限がありません"; 9 } 10 } else if( $staffCode ) { 11 if ( $password ) { 12 //ここも同様に適当なメソッド作って検証して遷移 13 } else { 14 $errorMsg = "パスワードを入力してください"; 15 } // 追記:コメントの通り、修正しておきます。 16 } else { 17 $errorMsg = "コードを入力してください"; 18 } 19}

投稿2016/09/27 17:16

編集2016/09/27 18:04
kei344

総合スコア69407

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

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

earnest_gay

2016/09/27 17:23

すいません、間違えてベストアンサーにしてしまいました???? 部署コードにはパスワードは必要ありませんよ。 部署コードは、それだけでログインできてしまうので 社員コードとパスワードの2つに値します。 パスワードが必要なのは社員コードだけです、、、
kei344

2016/09/27 17:25

じゃ、//のところにそれを戻せばいいのでは?
earnest_gay

2016/09/28 00:47

elseifのところで、スタッフコードが入力されていなかった場合 スタッフコードを入力してください も、表示させたいのですが不可能でしょうか?
kei344

2016/09/28 02:06

回答に書きましたが、elseifのところで入力が無い場合はどちらも入力されていないということになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問