|
|
|
 |
 |
Исходник |
 |
|
 |
 |
|
Автор:
|
|
|
Название:
|
Принадлежность IP Адреса России. |
|
Дата:
|
09 April 2004 |
|
Описание: |
Это может понадобиться для определения, откуда пришел пользователь на сайт и автоматически переадресовать его на соответствующую станицу. |
| |
Разместить ссылку на этот исходник в форуме вы можете вставив в текст сообщения
следующую строку:
[CODEPOST ID=85]Принадлежность IP Адреса России.[/CODEPOST] |
| Оценка: |
Проголосовало 14 посетителей, средняя оценка 3.43 |
| Оценить: |
|
1 /*
2 Neshin Ivan
3 www: http://www.softforme.com
4 пример размещен на http://www.softforme.com/webservices/InfoIp.asmx
5 */
6 /* InfoIp.asmx */
7 <%@ WebService Language="c#" Codebehind="InfoIp.asmx.cs" Class="GetIp.InfoIp" %>
8 /* InfoIp.asmx.cs */
9 using System;
10 using System.Net;
11 using System.IO;
12 using System.Text;
13 using System.Web.Services;
14 using System.Data.SqlClient;
15 using System.Data;
16 /*
17 Создание Базы данных
18 CREATE TABLE [dbo].[Ip_Russia](
19 idIP int identity(1,1) not null primary key,
20 Ip nvarchar (15) not null
21 )
22 GO
23 CREATE PROCEDURE AddIP(
24 @Ip nvarchar (15)
25 ) as
26 insert into Ip_Russia (Ip) values (@Ip)
27 GO
28 CREATE PROCEDURE GetIP(
29 @Ip nvarchar (15)
30 ) AS
31 select * from Ip_Russia where Ip = @Ip
32 GO
33 */
34 namespace GetIp
35 {
36
37 [WebService(Namespace="http://www.softforme.com/webservices")]
38 public class InfoIp : System.Web.Services.WebService
39 {
40 public InfoIp ()
41 {
42 //CODEGEN: This call is required by the ASP.NET Web Services Designer
43 }
44 // Определяем если Ip адрес в локальной БД
45 private bool Ru_Base(string ip){
46 bool ru = false;
47 SqlConnection myConnection = new SqlConnection("server=localhost;database=Portal;uid=username;pwd=passworduser");
48 SqlCommand myCommand = new SqlCommand("GetIP",myConnection);
49 myCommand.CommandType = CommandType.StoredProcedure;
50
51 SqlParameter parameterIP = new SqlParameter("@Ip", SqlDbType.NVarChar, 15);
52 parameterIP.Value = ip;
53 myCommand.Parameters.Add(parameterIP);
54
55 myConnection.Open();
56 SqlDataReader dr = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
57 dr.Read();
58 try
59 {
60 if ((int) dr["IdIP"] > 0)
61 ru = true;
62 }
63 catch(Exception ex)
64 {
65 ru = false;
66 }
67
68 dr.Close();
69 return ru;
70 }
71 // Добавляем в БД если нашли российский IP адрес чтобы в следующий раз не загружать страницу.
72 private void Add_Ru_Base(string ip)
73 {
74 SqlConnection myConnection = new SqlConnection("server=localhost;database=Portal;uid=sa;pwd=userdosent");
75 SqlCommand myCommand = new SqlCommand("AddIP",myConnection);
76 myCommand.CommandType = CommandType.StoredProcedure;
77
78 SqlParameter parameterIP = new SqlParameter("@Ip", SqlDbType.NVarChar, 15);
79 parameterIP.Value = ip;
80 myCommand.Parameters.Add(parameterIP);
81
82 myConnection.Open();
83 myCommand.ExecuteNonQuery();
84 myConnection.Close();
85
86 }
87 [WebMethod (Description="Принадлежность IP Адреса России. / Accessory IP of the Address of Russia.")]
88 public bool Ru_Country(string ip){
89 bool ru = false;
90 WebRequest wr = WebRequest.Create("http://www.ripe.net/perl/whois?"+ip);
91 wr.Proxy = WebProxy.GetDefaultProxy();
92 wr.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
93 ru = Ru_Base(ip);
94 if (ru == false){
95 try {
96 StreamReader sr = new System.IO.StreamReader(wr.GetResponse().GetResponseStream(),Encoding.GetEncoding(1251));
97 string p = sr.ReadToEnd();
98 string find = "country: RU";
99 if (p.IndexOf(find) > 0) {
100 ru = true;
101 Add_Ru_Base(ip);
102 }
103 }
104 catch(Exception ex)
105 {
106 ru = false;
107 }
108 }
109 return ru;
110 }
111
112 }
113 }
114 |
| Вернуться к списку исходников в категории Web Services |
|
|
 |
 |
 |
 |
|
|