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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

3753閲覧

二次元配列の一致チェック c#

tomokia

総合スコア28

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2021/06/21 05:04

編集2021/06/21 08:38

二次元配列の値を仮id,pwとして、入力チェックを行いたいのですが、c#での記入方法が検索してもわかりません。イメージとしては、入力欄に仮id,pwが入力されたら次の画面へ遷移。idかpwのどちらかが間違っていたら"この~は使用できません"と表示させたいです。
string id,pwで入力欄の値を取得して、nullの場合以下のアラートが出るようにしています。どうかご教授のほどよろしくお願いします。
Windows10pro 2017ver NET framework webforms 4.61ver

protected void Button1_Command(object sender, CommandEventArgs e) { int[,] array = { { 111, 222 }, { 333, 444 } }; string id = TextBox1.Text; string pw = TextBox2.Text; Label3.Text = ""; Label4.Text = ""; if (id == null) { Label3.Text = "IDは必須入力です"; } if (pw == null) { Label4.Text = "パスワードは必須入力です"; }       //二次元配列の値で一致チェック  for (int i = 0; i < array.GetLength(0); i++) { if (array[0] == id && array[1] == pw) { break; } } }
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="login.aspx.cs" Inherits="WebApplication_hara_kadai._01login.login" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <link rel="stylesheet" href="01login.css"/> <title></title> <style type="text/css"> #Button1 { width: 148px; margin-top: 0px; } #form1 { text-align: center; height: 90px; width: 553px; } #Label5{ margin-left: 37px; margin-right: 0px; } .auto-style1 { width: 100px; text-align:center; } .auto-style2 { width: 100px; } .auto-style3 { position: absolute; top: 50%; left: 50%; transform: translateY(-50%) translateX(-50%); width: 300px; height: 109px; } </style> </head> <body style="height: 125px; width: 1140px"> <form id="form1" runat="server"> <br /> <p> <asp:Label ID="Label5" runat="server" Text="IDまたはパスワードに誤りがあります" ForeColor="Red" Width="548px" Height="55px" Font-Size="X-Large" Visible="false"></asp:Label></p> <br /> <br /> <table class = "auto-style3" > <tr> <td class="auto-style1"> <asp:Label ID="Label1" runat="server" Text="Label">ID</asp:Label> </td> <td class="auto-style2"> <asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox1_TextChanged" Width="150px"></asp:TextBox> <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <asp:Label ID="Label3" runat="server" ForeColor="Red" CssClass="error"></asp:Label> </td> </tr> <tr> <td class="auto-style1"><asp:Label ID="Label2" runat="server" Text="Label">パスワード</asp:Label> </td> <td class="auto-style2"> <asp:TextBox ID="TextBox2" runat="server" OnTextChanged="TextBox2_TextChanged" Width="150px"></asp:TextBox> <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <asp:Label ID="Label4" runat="server" ForeColor="Red" CssClass="error"></asp:Label> </td> </tr> <tr> <td class="auto-style1">&nbsp;</td> <td class="auto-style2"> <asp:Button ID="Button1" runat="server" Text="次へ" OnCommand="Button1_Command" Width="157px" /> </td> </tr> <tr> <td class="auto-style1">&nbsp;</td> <td class="auto-style2"> <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="../03input1/input1.aspx">新規登録はこちら</asp:HyperLink> </td> </tr> </table> </form> </body> </html>

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

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

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

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

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

y_waiwai

2021/06/21 05:11

提示のコードではどういう動作をするんでしょうか。 まずはそこらへんを説明しましょう
退会済みユーザー

退会済みユーザー

2021/06/21 05:15

何を作っているか(ASP.NET のタグが付いてますが、ASP.NET で作れるものはいろいろあります)と開発環境(OS, Visual Studio のバージョン、.NET Framework or Core のどっちかとそのバージョンなど)を書いてください。
退会済みユーザー

退会済みユーザー

2021/06/21 05:19

そもそも何がしたいのですか? ASP.NET Web アプリの認証システムを作りたくてその一環として問題があったので質問している? それとも質問に書いてある ID, パスワードとかは本番環境の認証システムとは関係なく、単なる自分の勉強のためですか? 前者なら ASP.NET のフレームワークに備わっている認証システムを使うことをお勧めします。素人が独自実装してもまず使い物にならず、ここで Q&A をしてもお互い時間と労力の意無駄になると思います。
tomokia

2021/06/21 05:45

勉強の一環として質問させていただきました
tomokia

2021/06/21 05:48

ちなみに認証システムは、自分でまず画面の見た目を作成して、コードは認証システムを利用する流れでしょうか?
退会済みユーザー

退会済みユーザー

2021/06/21 05:52 編集

二度目のお願い 何を作っているか(ASP.NET のタグが付いてますが、ASP.NET で作れるものはいろいろあります)と開発環境(OS, Visual Studio のバージョン、.NET Framework or Core のどっちかとそのバージョンなど)を書いてください。
tomokia

2021/06/21 05:58

入力フォームを作っています。Windows10pro 2017ver NET frameworkです
退会済みユーザー

退会済みユーザー

2021/06/21 07:27

「何を作っているか(ASP.NET のタグが付いてますが、ASP.NET で作れるものはいろいろあります)」というのは Web Forms なのか、Razor Pages なのか、MVC なのか、それとも何か他のものなのかという質問です。コードを見たところ Web Forms のようですが、そうなのですか? .NET Framework にもバージョンがあって、1.1, 2.0, 3.5. 4, 4.5 以降ではかなり違いがあります。それを書いてください。4.5 以降だろうと思って話をしていると実は 2.0 だったとかで、話が噛み合わないこともままありますので。 何を作っているかと開発環境は追加情報として質問欄を編集して追記願います。ここコメント欄は「質問への追記・修正の依頼」をする場所で、初期画面では閉じていて見ない人もいますので。
BeatStar

2021/06/21 08:40

まず、『プロなんだからわかるだろ』っていう考えは捨てましょう。 プロでも『赤の他人』なんだからわかるはずないでしょ。 質問者さんは他人の頭の中を覗けるのでしょうか。 回答者は質問者と同じ環境にある……わけじゃないです。 提示された情報からしか読み取れません。 プログラム全体が何をしているか(何を作りたいのか)や、『質問にあるコードだとどういう結果になるのか』や『どういう風になってほしいのか』さえ見当が付きません。 さらに、.NET Frameworkとかの環境とかによって違う事もある。(これを知らないのは仕方ない部分はあるが) ご自分の質問を『第三者的視点で』、『フラットな状態で』読んでみてください。 どのようになるべきか、どういう風になるのか、その他の情報(開発環境や.NET等のバージョン等)とかはっきりとわかりますか?
YAmaGNZ

2021/06/22 01:09

ループで探して一致するものがあったらフラグを立てる、ループ後にフラグが立っていなかったらなかった でいいんじゃ?
guest

回答1

0

ベストアンサー

作っているのは Web Forms で、Visual Studio 2017 を使って、.NET 4.6.1 で開発とのことですので、認証システムに ASP.NET Identity を使えます。

質問に書いてある ID, パスワードとかは本番環境の認証システムとは関係なく、単なる自分の勉強のためとのことですが、質問に書いてあることができたとしても、少なくとも ASP.NET の話としては勉強になるようなことは何もないと思います。

なので、フレームワーク組み込みの ASP.NET Identity ベースの認証システムを使って、それをベースに考えることをお勧めします。

イメージとしては、入力欄に仮id,pwが入力されたら次の画面へ遷移。idかpwのどちらかが間違っていたら"この~は使用できません"と表示させたいです。

そこのところは、その対象となるページは web.config で匿名アクセスを許可しないように設定し、ログインしてない(認証を受けてない)ユーザーがアクセスしてきたらログインページにリダイレクトしてログインを促すようにします。

ログインページでユーザーが入力した ID または PW が間違っていたら、その旨ユーザーに通知し、再入力を促すようにします。

上記はフレームワーク組み込みの機能を使って自分では一行もコードを書かなくても実現できます。

新規にプロジェクトを作って ASP.NET Identity ベースの認証システムを実装するのであれば、Visual Studio のテンプレートで認証を「個別のユーザーアカウント」すれば自動的に認証システムを実装したプロジェクトが作成されます。

ASP.NET Identity 入門
https://docs.microsoft.com/ja-jp/aspnet/identity/overview/getting-started/introduction-to-aspnet-identity

nullの場合以下のアラートが出るようにしています。

そこは ASP.NET の検証コントロールを使います。上に述べたように Visual Studio のテンプレートを使って ASP.NET Identity ベースの認証システムを実装すれば、ログインページには検証コントロールは組み込み済みになっています。

ASP.NET の検証コントロールにはユーザー未入力チェックの他にもいろいろあります。詳しくは以下の記事を見てください。

第5回 業務アプリの必須処理「入力チェック」
https://www.atmarkit.co.jp/ait/articles/0712/11/news129_2.html

Visual Studio のテンプレートを使っての認証システムの実装を是非一度お試しください。やってみれば如何に簡単に実用的な認証システムが実装できるかが分かると思います。

上記の話はとりあえず置いといて、どうしても質問のコードの配列とのチェックの話をしたいということならその旨言ってください。

投稿2021/06/21 08:54

編集2021/06/21 09:24
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tomokia

2021/06/22 00:45

親切のご丁寧な対応、ありがとうございました。添付してくださったURLで実際にやってみます。おこがましいと思いますが、聞けるのであれば質問の配列チェックのコードも聞いときたいです。よろしくお願いします。
退会済みユーザー

退会済みユーザー

2021/06/22 01:14

> 聞けるのであれば質問の配列チェックのコードも聞いときたいです。 質問のコードは、はっきり言って話ができるレベルにないです。例えば、(1) array が int 型の配列、(2) ID と PW はペアでなければならないのにそれが考えられてない、(3) 比較のロジックがダメ・・・などなど。C# の基本的な文法の勉強から始めて、質問のコードを見直していただく必要があるかと思います。
tomokia

2021/06/22 01:54

web configのファイルにuserのid,pwを設定して認証チェックをかけることは可能でしょうか?
退会済みユーザー

退会済みユーザー

2021/06/22 02:21

可能か否かと問われれば可能です。web.config に任意の情報を設定して、実行時にそれから情報を取得することは可能ですから。 ただしそういうのは全く現実的ではありませんので、具体的にどのようにするかの話にはお付き合いできません。 話を発散させないよう、質問の内容は表題もしくは私が提案した ASP.NET Identity の関係に絞っていただきたく。
tomokia

2021/06/22 09:00

Identityについて調べていたのですが、登録フォームでメールとパスワードを設定し、データベースに保存する流れかとおもいますが、私は、IDとパスワードを登録したいのですが可能でしょうか。またIDやPWの入力フォームのレイアウトは自分が作成したのを適用させたいのですが可能でしょうか?
退会済みユーザー

退会済みユーザー

2021/06/22 09:16

> 私は、IDとパスワードを登録したいのですが可能でしょうか。またIDやPWの入力フォームのレイアウトは自分が作成したのを適用させたいのですが可能でしょうか? どちらも可能です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問