1

asp.netページで簡単なログインフォームを作成しようとしています(htmlページがあり、現在asp.netに作成しようとしています)。入力したユーザー名とパスワードを取得し、mssqlデータベースに接続する必要があります。そこで、テキストボックスに入力されたユーザー名と同じユーザー名とパスワードを選択するSQL Selectステートメントを作成します(その後、入力されたパスワードがデータベースのパスワードと同じかどうかを比較します)。ユーザー名とパスワードに問題がない場合は、別のページ(main.aspx)を開く必要があります。私のindex.aspxは次のようになります。

<form id="loginform" runat="server" method="post" action="/">
<div id="username_box"><p style="padding-top: 10px; margin: 0px">Username:</p></div>
<input type="text" value="" name="usernameTextBox" runat="server" id="username_input" /><br/>
<div id="password_box"><p style="padding-top: 10px; margin: 0px">Password:</p></div>
<input type="password" value="" name="passwordTextBox" runat="server" id="password_input" /><br/>
<a href="facebook.com" style="float: left;padding-left: 13px;padding-top: 8px;">Glemt kodeordet?</a>
<input type="submit" runat="server" id="LoginBtnClick" />
</form>

送信ボタンが押された後、私のc#コードがあります:

protected void LoginBtn_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString);
    con.Open();
    SqlCommand cmd = new SqlCommand("select user_username, user_password FROM users WHERE user_username =@username and user_password=@password", con);
    cmd.Parameters.AddWithValue("@username", "user");
    cmd.Parameters.AddWithValue("@password", "1234");
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable dt = new DataTable();
    da.Fill(dt);
    if (dt.Rows.Count > 0)
    {
        Response.Redirect("main.aspx");
    }else
    {
        ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Invalid Username and Password')</script>");
    }
} 

現在、ユーザーがテキストボックスに入力したユーザー名とパスワードではなく、データベースに挿入したハードコードされたユーザー名「user」とパスワード「1234」を使用しています。テキストボックスからテキストを取得する方法がわかりません。ただし、ハードコードされたユーザー名とパスワードを使用しても、このすべてが機能するわけではありません。

そして最後に、これは接続文字列を作成するためにWeb.Configに追加したものです。

<connectionStrings>
<add name="myConnectionString" providerName="System.Data.SqlClient"  connectionString="Data Source=hereistheipofmydb;Initial Catalog=mydb;User Id =myadmin;password=mypass;" />

もう1つの質問:プロジェクト全体をサーバー(データベースと同じ)にアップロードする必要がありますか?現在、ホスティングにデータベースがありますが、VisualStudio2012で実行しているWebサイトです。

4

2 に答える 2

2

を使用してテキストボックスにアクセスします

cmd.Parameters.AddWithValue("@username", username_input.Text);

接続できない場合は、 SQL Server Express管理ツールなど、接続をテストするための何かをインストールすることをお勧めします。それが機能しない場合は、プログラムではなく、PCとSQLサーバーの間の問題である可能性があります。次に、サーバープロバイダーに確認してこれを把握するか、サーバーアドレスへのポート1433(標準ポート)でファイアウォールを開いてみてください。

また、いいえ、すべてのaspx、js、画像、およびバイナリをアップロードするだけで済みます(それ以上の場合もあります)。デプロイする必要のないソースファイル。プロジェクトを右クリックして[公開]を選択するだけで、プロジェクトのデプロイを作成できます。

于 2012-11-15T12:13:28.193 に答える
2

あなたはデータベースを苦労して扱っています。接続文字列の使用は、メモリリークの潜在的な原因でもあります。LINQ-to-SQLまたはEntityFrameworkの使用を検討してください。彼らはあなたの人生を真剣に楽にしてくれるでしょう。イベントの適切な使用法を調査することも非常に役立ちます。これらの参考資料を確認してください。

  1. イベントパターンのパブリッシュ/サブスクライブ
  2. C#でLINQを使い始める
  3. 初心者向けのLINQToSQLチュートリアル
  4. MVC4とEntityFrameworkを使用してASP.NETにモデルを追加する
于 2013-12-15T02:12:29.567 に答える