Rambler's Top100
Главная
Новости
Статьи
Форумы
Книги
Коды
Сообщество
Блоги
О нас
 

Логин

Email:
  Пароль:

Войти
Зарегистрироваться
Забыл пароль

Поиск

 Искать :
 
Вперед

Книги по теме

Искать:
в:
Порядок:

Исходник

Автор:

dosent

 
Название:

Принадлежность 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
 
Наш Киев

Apartments for Rent

Rambler's Top100
Рейтинг@Mail.ru
Идея: Dimon aka Manowar Программирование: Dimon aka Manowar Дизайн: Dan Lebedev
Хостинг от компании Parking.ru
Карта сайта