ASP.NET 徹底活用術(Part2)のホームへ戻る

■新規ユーザーの登録

 

新規スレッドを入力したりスレッドに返信するには、投稿者をシステムに登録する必要があります。投稿者を新規登録するには、AddPosts.aspxまたはAddReply.aspxから[登録]ボタンをクリックします。[登録]ボタンをクリックすると、AddUser.aspxがロードされます。

 

AddUser.aspxには、「ユーザー名」、「ハンドル名」、「メール」、「パスワード」を入力するTextBoxが配置されています。

 

8:ユーザー登録フォーム (AddUser.aspx)

 

AddUser.aspxTextBoxにデータを入力して[登録]ボタンをクリックすると、TextBoxに入力されたデータを取得してtblUsersテーブルに追加します(リスト1、リスト2)。

 

9: 「新規ユーザー登録」フォームからユーザー情報を入力したら[登録]ボタンをクリックする

 

新規ユーザーが登録されると、登録フォームから入力したメールアドレスに確認メールが送信されます。このメールには、ConfirmUser.aspxを起動するためのURLが添付されていますのでクリックします(図10)。ConfirmUser.aspxがロードされると、tblUsersテーブルの承認(Approved)フラグに「True」が設定されます(リスト3、リスト4)。ユーザー登録の承認が完了するとWebページに「Access FAQのユーザー登録完了しました!」が表示されます(図11)。

 

Webメールを無効に設定したときは確認メールが送信されませんので、tblUsersテーブルのApprovedフラグを手動で「True」に設定してください。

 

 

10:メールアドレスに確認メールが送信されたらURLをクリックして登録を完了させる

 

 

11 ConfirmUser.aspxがロードがされて登録完了メッセージが表示された

 

リスト1 [登録]ボタンのクリック時のイベントハンドラ (AddUser.aspx.vb)

Private Sub btnRegister_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRegister.Click

  Dim strHandleName As String = txtHandleName.Text

  Dim strEmail As String = txtEmail.Text

  Dim intCount As Integer = VerifyEmailOrHandleName(strEmail, strHandleName)

  ・・・

  Dim strUserName As String = txtUserName.Text

  Dim strPassword As String = txtPassword.Text

  Dim dtmDateCreated As DateTime = DateTime.Now.AddHours(mintTimeZoneOffset)

  Dim intUserID As Integer = InsertUsers(strUserName, strHandleName, strPassword, strEmail, dtmDateCreated)

  ・・・

  SendMail(strFrom, strTo, strBCC, strSubject, strBody, strSmtpServer)

  ・・・

End Sub

 

 

リスト2 tblUsersテーブルに新規ユーザーを追加するメソッド (AddUser.aspx.vb)

Function InsertUsers(ByVal strUserName As String, _

  ByVal strScreenName As String, ByVal strPassword As String, _

  ByVal strEmail As String, ByVal dtmDateCreated As DateTime) As Integer

  Dim strSQL As String = _

    "INSERT INTO tblUsers ( [UserName], [ScreenName], [Password], [Email], [DateCreated] )" & _

    " VALUES (@UserName, @ScreenName, @Password, @Email, @DateCreated)"

  Dim strSQL2 As String = "SELECT @@IDENTITY AS LastID"

  Dim con As New OleDbConnection(mstrConString)

  Dim cmd As New OleDbCommand(strSQL, con)

  Dim cmd2 As New OleDbCommand(strSQL2, con)

  cmd.Parameters.Add("@UserName", strUserName)

  cmd.Parameters.Add("@ScreenName", strScreenName)

  cmd.Parameters.Add("@Password", strPassword)

  cmd.Parameters.Add("@Email", strEmail)

  cmd.Parameters.Add("@DateCreated", dtmDateCreated.ToString())

  con.Open()

  Dim intRetValue As Integer = cmd.ExecuteNonQuery()

  Dim intUserID As Integer = cmd2.ExecuteScalar()

  con.Close()

  Return intUserID

End Function

 

リスト3 Page_Loadイベントハンドラ (ConfirmUser.aspx.vb)

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

  Dim intUserID As Integer = Int32.Parse(Request.QueryString("UserID"))

  mstrConString = ConfigurationSettings.AppSettings("conStringFaq")

  ApproveUser(intUserID)

  Dim strMessage As String

  strMessage = "Access FAQのユーザー登録完了しました!<br>"

  strMessage &= "これで新規スレッドの登録およびスレッドの返信入力が可能です.<br>"

  lblMessage.Text = strMessage

End Sub

 

リスト4 tblUsersテーブルの承認フラグを設定するメソッド (ConfirmUser.aspx.vb)

Function ApproveUser(ByVal intUserID As Integer) As Integer

  Dim strSQL As String = "UPDATE tblUsers SET [Approved] = True" & _

    " WHERE [UserID] = @UserID"

  Dim con As New OleDbConnection(mstrConString)

  Dim cmd As New OleDbCommand(strSQL, con)

  cmd.Parameters.Add("@UserID", intUserID)

  con.Open()

  Dim intRetValue As Integer = cmd.ExecuteNonQuery()

  con.Close()

  Return intRetValue

End Function

 

ASP.NET 徹底活用術(Part2)のホームへ戻る