- ベストアンサー
ASP.NETでIPアドレスログイン管理を教えてください
- 現在、クライアントのIPアドレスを取得してSQLServerテーブルでログイン管理をするWebを作成したい
- ASP.NET自体あまり理解できておらず、困っている
- VBコードでIPアドレスを取得し、SQL Serverに接続後にエラーメッセージとメインページ表示を分岐したいが、分からない
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ASPと違ってvbファイル内にHTMLコードを直書きしてもページには反映されません # やってやれないことは無いのですが ... 適切なページへ遷移する方法を考えたほうが良いように思います もしテスト的にやりたいのであれば Loadイベントで判断だけしてフラグをセットします LoadComplateイベントでフラグを判断材料にしてResponse.Writeを使ってHTMLを吐き出すとか ログインのコントロールならツールボックスの中の『ログイン』グループにあるコントロールを使うことをお勧めします Framsetは ASP.NETと相性がよくありません パネルコントロールなどを使ってフレーム分けしたほうが良いように思います .NET Framework SDKの『QuickStartチュートリアル』をインストールして基本的な使い方を学習しましょう
その他の回答 (3)
- redfox63
- ベストアンサー率71% (1325/1856)
回避出来ると思いますよ ちょっと間違ってましたけど … 正解は Imports System.Data.SqlClient でした DataとSqlClientの間に『.』が必要でした エラー等はまず自分で調べるといった姿勢が必要ですよ MicrosoftのMSDNライブラリーーなどで …
補足
ありがとうございます! >エラー等はまず自分で調べるといった姿勢が必要ですよ おっしゃる通りです。すみません。 今回、ご教示頂いたアドバイスを元に自分なりに投稿通りのコードを作ってみましたので見て頂けますでしょうか? HTML部分の表示はvb内では使えないのでしょうか? また、おかしいとお気づきの部分がありましたらご指導願います。 本当に何度も申し訳ございませんが何卒、宜しくお願い致します。 -------------------ソース--------------------- Imports System Imports System.Data Imports System.Data.SqlClient Imports Microsoft.VisualBasic Imports System.Text Partial Class INDEX Inherits System.Web.UI.Page Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Run() End Sub Public Sub Run() '------------- IPアドレス取得 -------------- Dim ipAddr As String ipAddr = Request.UserHostAddress '------------- SQL Server Connection -------------- Dim myDataReader As SqlDataReader Dim mySqlConnection As SqlConnection Dim mySqlCommand As SqlCommand mySqlConnection = New SqlConnection("Server=SQL;database=Web;UID=id;PWD=pass") mySqlCommand = New SqlCommand("SELECT * FROM IPAdd WHERE IPAddress='" & ipAddr & "' AND Authority1='True'") mySqlConnection.Open() myDataReader = mySqlCommand.ExecuteReader(CommandBehavior.CloseConnection) Do While (myDataReader.Read()) Loop If Not (myDataReader Is Nothing) Then <CENTER> <h2>この端末からは閲覧できません。</h2> Else <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <TITLE>メイン</TITLE> </HEAD> <FRAMESET rows="97,*" border="0" frameborder="0"> <FRAME src="Title.html" name="ue" scrolling="no" /> <FRAMESET cols="50%,*" border="0" frameborder="0"> <FRAME src="Left.html" name="hidari" /> <FRAME src="Right.html" name="migi" /> </frameset> </body> </html> End If myDataReader.Close() mySqlConnection.Close() End Sub End Class
- redfox63
- ベストアンサー率71% (1325/1856)
波線が表示されているのであれば参照設定を確認してみましょう Systemからの完全修飾名で記述してOKなら Importsステートメントを追加することで回避が可能です SQL関連なら Imports System.DataSqlClient をVBファイルの先頭付近に記述してみましょう IDEの 表示 > エラー一覧 などでエラーになっている箇所の詳細を確認できると思いますよ EEは使ってないので この機能が無いかもしれませんが …
補足
ありがとうございます。 波線のアプリケーションを実行するとコンパイルエラーができました。 '/webap' アプリケーションでサーバー エラーが発生しました。 -------------------------------------------------------------------------------- コンパイル エラー 説明: この要求を送信するために必要なリソースをコンパイル中に、エラーが発生しました。以下のエラーの詳細を確認して、ソース コードを修正してください。 コンパイル エラー メッセージ: BC30002: 型 'SqlConnection' が定義されていません。 ソース エラー: 行 14: 'sqlConnectionオブジェクトを作成します。 行 15: '使用環境に応じて接続文字列を変更します。 行 16: Dim cn As SqlConnection = New SqlConnection("Server=servername;database=data;UID=id;PWD=pass") 行 17: Dim cmd As SqlCommand = New SqlCommand("SELECT * FROM IPAdd WHERE IP='" & ipAddr & "' AND Authority1='True'") 行 18: ソース ファイル: \\server\web\test\web\webap\INDEX.aspx.vb 行: 16 -------------------------------------------------------------------------------- バージョン情報: Microsoft .NET Framework バージョン:2.0.50727.42; ASP.NET バージョン:2.0.50727.210 です。 Imports System.DataSqlClient をVBファイルの先頭付近に記述すれば回避できるのでしょうか? ご教示宜しくお願い致します。
- redfox63
- ベストアンサー率71% (1325/1856)
クライアントのIPアドレスの取得には HttpRequestのUserHostAddressを使ったほうが良いと思いますよ Dns.GetHostNameではWebサーバーのIPが取得されるだけだと思います dim ipAddr as String ipAddr = Request.UserHostAddress といった具合です
補足
redfox63さん ありがとうございます! 変更してみます☆ SQL Serverの接続コードは正しいのでしょうか? WebDeveloperでは Dim cn As SqlConnection = New SqlConnection・・・ Dim cmd As SqlCommand = New SqlCommand・・・ 2個所に波線が表示されるので気になりました。 よろしくお願い致します。
お礼
>Framsetは ASP.NETと相性がよくありません そうなんですか? パネルコントロールが分からないのですが調べてみます! >.NET Framework SDKの『QuickStartチュートリアル』をインストール>>して基本的な使い方を学習しましょう もう1度勉強し直します。 ご教示いただきましてありがとうございました☆