表題の通りですが、phpで作ったwebシステムのログイン画面で「文字が正しくありません。」と出てログインできません。
どのような原因が考えられますでしょうか?
ちなみに、ログインのIDとパスワードはmysqlに登録しており、間違ったID等を入力すると、phpで作りこんだエラーを出すのでmysqlまでは見に行って処理ではじくことはできているようです。
・環境
mysql8.0
php7.3.9
ブラウザ IE
試した内容は以下です。
・google等で「文字が正しくありません。」で調べたとこころ、ブラウザのキャッシュクリアが有効と聞き試したがかわらず
・F12を押してエラーを確認するもなにも見当たらず
・phpやmysqlのエラー内容にもそれらしきものは見当たらず
追記1
当システムは、これまではphp5.6、Mysql5では正常に動いており、
ログイン画面のソースは変わっていませんので、ソースではないのではないかと推測しております。
サーバーを別のサーバーへ移行しているのでMysqlからDBをエクスポート→インポートをしているのでそこで文字コードがおかしくなったのかなと思いましたが、
該当のユーザーログイン情報は元のutf8_general_ciで問題なさそうに見えました。
追記2
エラールートは以下の「throw new Error(obj.msgCode);」部分です。
javascript
1/******************************************************************************** 2Title : Login.js 3*********************************************************************************/ 4 5$(function() { 6 7 if(!$.support.opacity){ 8 9 alert('このメッセージが表示された場合は、F12を押して表示された画面の\n右上のドキュメントモード切り替えで9以上を選択してください。'); 10 } 11 12 // ログインユーザー表示エリアを非表示にする(HTMLを取り除く) 13 $('#areaLoginUser').remove(); 14 15 // 開いたときにユーザーIDにフォーカスする 16 $('#userID').focus(); 17// setTimeout(function() {$('#userID').focus();}, 1000); 18}); 19 20// ログインボタンクリック 21$(document).on('click', '#btnLogin', function() { 22 23 try { 24 var objPost = new Object(); 25 objPost.userID = $('#userID').val(); 26 objPost.password = $('#password').val(); 27 28 if (objPost.userID == '') throw new Error('ユーザIDを入力してください'); 29 if (objPost.password == '') throw new Error('パスワードを入力してください'); 30 31 var html = ''; 32 html += '<div style="width: 50px; height: 40px; background-color: white; opacity: 0.8; margin: auto; border: 1px #ddd solid;border-radius: 8px; padding-top: 10px;">'; 33 html += ' <img src="../Common/Images/loading.gif" />'; 34 html += '</div>'; 35 $('#messageArea').html(html); 36 37 $.ajax({ 38 url: '../Login/GetUserInfo.php?' + mySerialDate(), 39 data: {'objPost' : $.toJSON(objPost)} 40 }) 41 .done(function(data) { 42 try { 43 var obj = $.evalJSON(data); // PHPからJSON形式で受け取る 44 45 // ログイン失敗ならメッセージを表示 46 if (obj.resultCode == 'OK') { 47 48 // ログイン成功ならお知らせ画面に移動 49 location.href = '../Information/Information.php?' + mySerialDate(); 50 51 } else { 52 53 switch (obj.msgCode) { 54 case 'LoginUserError': 55 throw new Error('ユーザーIDが登録されていません'); 56 break; 57 case 'PasswordError': 58 throw new Error('パスワードが違います'); 59 break; 60 default: 61 throw new Error(obj.msgCode); 62 break; 63 } 64 } 65 66 } catch (e) { 67 var message = '<label style="color: red;">'+escapeHTML(e.message)+'</label>'; 68 $('#messageArea').html(message); 69 } 70 }) 71 .fail(function(XMLHttpRequest, textStatus, errorThrown) { 72 alert("AjaxError\n\n FileName : Login.js\n Module : btnLogin.click\n\n StatusCode : "+XMLHttpRequest.status+"\n ReadyState : "+XMLHttpRequest.readyState+"\n Status : "+textStatus+"\n Message : "+errorThrown); 73 $('#messageArea').html(''); 74 }); 75 76 } catch (e) { 77 var message = '<label style="color: red;">' + escapeHTML(e.message) + '</label>'; 78 $('#messageArea').html(message); 79 } 80}); 81 82// クリアボタンクリック 83$(document).on('click', '#btnClear', function() { 84 85 $('#userID').val(''); 86 $('#password').val(''); 87 $('#messageArea').html(''); 88 89 $('#userID').focus(); 90});
php
1<?php 2/******************************************************************************** 3 Title : Login.php 4*********************************************************************************/ 5require_once dirname(__FILE__).'/../../.ini.php'; 6require_once dirname(__FILE__).'/../Common/Const.php'; 7require_once dirname(__FILE__).'/../Common/MyFunction.php'; 8?> 9<!DOCTYPE html> 10<html> 11<head> 12 <title></title> 13 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 14 <meta charset="utf-8"> 15 <meta name="viewport" content="width=device-width, initial-scale=1"> 16 <link rel="stylesheet" href="../Common/CSS/Common.css"> <!-- 共通CSS --> 17 <link rel="stylesheet" href="./Login.css"> <!-- 専用CSS --> 18</head> 19<body> 20 <script src="../Common/Library/js/jquery-3.1.0.min.js"></script> --> <!-- jQuery 3.1 --> 21 <script src="../Common/Library/js/jquery-1.12.4.min.js"></script> <!-- jQuery 1.12.4 --> 22 <script src="../Common/Library/js/jquery.json-2.6.0.min.js"></script> <!-- jQuery JSON 2.6 --> 23 <script> 24 // タイトル 25 window.document.title = '<?php echo MainTitle;?>'; // Const.php が必要 26 27 var ROOT_FOLDER = '<?php echo ROOT_FOLDER; ?>'; // .ini.php が読み込まれている必要あり 28 </script> 29 <script src="../Common/MyFunction.js"></script> <!-- 共通関数 --> 30 <script src="./Login.js"></script> <!-- 専用スクリプト --> 31 32 <div id="main"> 33 34 <!-- ヘッダー --> 35 <?php require_once dirname(__FILE__).'/../Common/Header.php'; ?> 36 37 <!-- ログインエリア --> 38 <div id="areaLogin"> 39 <form action="" onsubmit="return false;"> 40 41 <!-- ユーザID --> 42 <label id="lblUserID" class="login lblUserID">ユーザID</label><input class="login" id="userID" type="text" value="" style="ime-mode:disabled;" /> 43 <div style="clear:both;"></div> 44 45 <!-- パスワード --> 46 <label id="lblPassword" class="login lblPassword">パスワード</label><input class="login" id="password" type="password" value="" style="ime-mode:disabled;" /> 47 <div style="clear:both;"></div> 48 49 <!-- メッセージエリア --> 50 <div id="messageArea"></div> 51 <br /> 52 53 <!-- ボタンエリア --> 54 <div style="text-align: center;"> 55 <!-- ログイン --> 56 <input id="btnLogin" class="btnDefault btnLogin" type="submit" value="ログイン" /> 57 <!-- クリア --> 58 <input id="btnClear" class="btnDefault btnCancel" type="button" value="クリア" /> 59 </div> 60 </form> 61 </div> 62 63 <!-- フッター --> 64 <?php require_once dirname(__FILE__).'/../Common/Footer.php'; ?> 65 </div> 66</body> 67</html>
php
1<?php 2require_once dirname(__FILE__).'/../Common/SessionStart.php'; // セッション開始用 3require_once dirname(__FILE__).'/../Common/DB/DB.php'; 4require_once dirname(__FILE__).'/../Common/SetLog.php'; 5 6$myName = 'GetUserInfo.php'; 7 8// ポストデータを取得 9$objPost = json_decode($_POST['objPost'], true); 10 11$userID = ''; 12$userName = ''; 13$msgCode = ''; 14$flagLogin = ''; 15 16$role_edit_master = 0; 17$role_edit_order = 0; 18 19try { 20 $db = new DB(MY_DBNAME, MY_DBUSR, MY_DBPASS, MY_DBTYPE, MY_DBHOST); 21 22 $sql = ' 23 SELECT user_id, user_name, password, full_name, role_edit_master, role_edit_order 24 FROM mst_user 25 WHERE 26 UPPER(user_name) = UPPER(:user_name) 27 '; 28 $params = array(':user_name' => $objPost['userID']); 29 30 $row = $db->getRow($sql, $params); 31 32 if (empty($row)) { 33 $msgCode = 'LoginUserError'; // ユーザーIDが登録されていません 34 } else { 35 $password = $row['password']; 36 37 if (trim($password) === trim($objPost['password'])) { 38 39 $userID = $row['user_id']; 40 $userName = trim($row['full_name']); 41 42 $role_edit_master = $row['role_edit_master']; 43 $role_edit_order = $row['role_edit_order']; 44 45 $flagLogin = 'OK'; 46 } else { 47 $msgCode = 'PasswordError'; // パスワードが違います 48 } 49 } 50 51 $db = null; 52 unset($db); 53 54 $_SESSION["yousetsu_info"] = array( 55 "user_id" => $userID, 56 "user_name" => strtoupper($objPost['userID']), 57 "full_name" => $userName, 58 "role_edit_master" => $role_edit_master, 59 "role_edit_order" => $role_edit_order 60 ); 61 62 $result = array( 63 'resultCode' => $flagLogin, 64 'msgCode' => $msgCode, 65 'userName' => $userName 66 ); 67 68} catch (Exception $e) { 69 70 $result = array( 71 'resultCode' => 'error', 72 'msgCode' => mb_convert_encoding($e->getMessage(), SYSTEM_CHAR_CODE, "auto"), 73 'userName' => '' 74 ); 75 76 // エラーログ出力 77 setLog($myName, 'error', $e->getMessage()); 78} 79 80echo json_encode($result); //JSONにエンコード
css
1@charset "UTF-8"; 2/******************************************************************************** 3Title : Login.css 4*********************************************************************************/ 5 6#areaLogin { 7 position: absolute; 8 top: 150px; 9 left: 50%; 10 margin-left:-110px; 11 width: 220px; 12 height: 150px; 13} 14 15label.login { 16 font-size: 12px; 17 display: block; 18 width: 80px; 19 float: left; 20 text-align: left; 21 padding-top: 6px; 22} 23 24input.login { 25 float: right; 26 font-size: 12px; 27 width: 120px; 28 height: 22px; 29 margin-bottom: 10px; 30 padding: 5px 2px 0px 3px; 31} 32 33input.btnDefault { 34 font-size: 12px; 35 width: 64px; 36 height: 26px; 37} 38 39#messageArea { 40 height: 34px; 41 text-align: center; 42 font-size: 12px; 43}
回答3件
あなたの回答
tips
プレビュー