PDA

View Full Version : چگونه آدرس url را بررسی کنیم



bitcob589
یک شنبه 13 بهمن 1392, 14:59 عصر
با سلام
یک تکس باکس دارم که کاربر درون تکس باکس آدرس وب سایت در آن تایپ می کند چگونه می توان آدرس وب سایت درون تکس باکس را بررسی کرد یعنی اگر آدرس وب با www یا //:http شروع شده بود آدرس وب سایت تایپ در تکس باکس پذیرفته شود و اگر آدرس وب سایت به صوت صحیح در تکس باکس تایپ نشده بود یک اخطار نمایش داده شود مثل دو آدرس وب سایت زیر که با www یا //:http شروع شده است

www.barnamenevis.org
http://www.barnamenevis.org

sajadzare
یک شنبه 13 بهمن 1392, 15:10 عصر
if(! (textBox1.Text.StartsWith("http://www") || textBox1.Text.StartsWith("www")))
{
MessageBox.Show("آدرس وارد شده معتبر نیست","خطا");

}

bitcob589
یک شنبه 13 بهمن 1392, 15:30 عصر
در پست یک فراموش کردم توضیح دهم آدرس وب با www یا //:http شروع شده باشد و حتما کاربر آدرس url به صورت کامل وارد کرده باشد فرمت آدرس url به صورت صحیح نوشته باشد پذیرفته شودمثل زیر

www.barnamenevis.org
http://www.barnamenevis.org
و اگر آدرس url به صورت زیر نوشته شده بود پذیرفته نشود به دلیل اینکه فرمت url به صورت صحیح تایپ نکرده است


www.barnamenevis
http://www.barnamenevis

kc1860
یک شنبه 13 بهمن 1392, 15:32 عصر
static bool IsValidUrl(string urlString)
{ Uri uri;
return Uri.TryCreate(urlString, UriKind.Absolute, out uri)
&& (uri.Scheme == Uri.UriSchemeHttp
|| uri.Scheme == Uri.UriSchemeHttps
|| uri.Scheme == Uri.UriSchemeFtp
|| uri.Scheme == Uri.UriSchemeMailto);
}

bitcob589
یک شنبه 13 بهمن 1392, 15:42 عصر
static bool IsValidUrl(string urlString)
{ Uri uri;
return Uri.TryCreate(urlString, UriKind.Absolute, out uri)
&& (uri.Scheme == Uri.UriSchemeHttp
|| uri.Scheme == Uri.UriSchemeHttps
|| uri.Scheme == Uri.UriSchemeFtp
|| uri.Scheme == Uri.UriSchemeMailto);
}


کد مورد استفاده قرار گرفت اما آدرس url های که با www شروع می شوند تشخیص داده نمی شوند

kc1860
یک شنبه 13 بهمن 1392, 18:28 عصر
کد مورد استفاده قرار گرفت اما آدرس url های که با www شروع می شوند تشخیص داده نمی شوند
با regex (http://social.msdn.microsoft.com/Forums/en-US/079e783a-220f-4f67-9c74-426dbb4f20b9/url-validation?forum=regexp) می تونید www رو validate کنید:

public static bool IsUrl(string url)
{
string pattern= "^(https?://)"
+ "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" //user@
+ @"(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP- 199.194.52.184
+ "|" // allows either IP or domain
+ @"([0-9a-z_!~*'()-]+\.)*" // tertiary domain(s)- www.
+ @"([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\." // second level domain
+ "[a-z]{2,6})" // first level domain- .com or .museum
+ "(:[0-9]{1,4})?" // port number- :80
+ "((/?)|" // a slash isn't required if there is no file name
+ "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
Regex rx = new Regex(pattern);
if (rx.IsMatch(url))
return (true);
else
return (false);
}

bitcob589
یک شنبه 13 بهمن 1392, 18:56 عصر
با regex (http://social.msdn.microsoft.com/Forums/en-US/079e783a-220f-4f67-9c74-426dbb4f20b9/url-validation?forum=regexp) می تونید www رو validate کنید:

public static bool IsUrl(string url)
{
string pattern= "^(https?://)"
+ "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" //user@
+ @"(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP- 199.194.52.184
+ "|" // allows either IP or domain
+ @"([0-9a-z_!~*'()-]+\.)*" // tertiary domain(s)- www.
+ @"([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\." // second level domain
+ "[a-z]{2,6})" // first level domain- .com or .museum
+ "(:[0-9]{1,4})?" // port number- :80
+ "((/?)|" // a slash isn't required if there is no file name
+ "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
Regex rx = new Regex(pattern);
if (rx.IsMatch(url))
return (true);
else
return (false);
}


چگونه با regex می توان www رو validate کرد
آیا در کدی که در بالا گذاشته شده است نمی توان www رو validate کرد
در کدی که گذاشته شده اگر www یا http نوشته نشود مقدار true بازگرداننده می شود

kc1860
یک شنبه 13 بهمن 1392, 19:12 عصر
در کد بالا از regex استفاده شده و دقیقا هم برای validate کردن www پیشنهاد شده.
در پست قبلی هم کلمه ی regex رو لینک کردم به فرومی که این راه حل رو پیشنهاد داده بود.

شرمنده من درست متوجه سوال شما نشده بودم، اون کاربر دقیقا خلاف خواسته ی شما رو داشت!

bitcob589
یک شنبه 13 بهمن 1392, 19:21 عصر
کد پست 6 را تست کردم اگر www یا http در تکس باکس نوشته نشود مقدار true بر گردانده می شود اگر آدرس url مثل زیر نوشته مقدار true بر گردانده می شود

barnamenevis.org

AmiRReZzZzA
یک شنبه 13 بهمن 1392, 22:15 عصر
سلام . برای تعیین درستی url این هم یک نمونه از راه های ساده ی آن است
WebClient dd = new WebClient();
try
{
dd.DownloadString(url);
MessageBox.Show("Valid");
return true;
}
catch (Exception)
{
MessageBox.Show("Not Valid");
return false;

}

bitcob589
دوشنبه 14 بهمن 1392, 12:59 عصر
سلام . برای تعیین درستی url این هم یک نمونه از راه های ساده ی آن است
WebClient dd = new WebClient();
try
{
dd.DownloadString(url);
MessageBox.Show("Valid");
return true;
}
catch (Exception)
{
MessageBox.Show("Not Valid");
return false;

}

کد بالا در صورتی http نوشته شود مقدار true بر گرداننده می شود
همان طور که در پست یک و سه توضیح داده شد اگر کاربر آدرس url به صورتهای زیر در تکس باکس وارد کرد پذیرفته شود مثل زیر

www.barnamenevis.org
http://www.barnamenevis.org

bitcob589
دوشنبه 14 بهمن 1392, 17:29 عصر
آیا توضیحات پست یک و سه قابل پیاده سازی است

bitcob589
سه شنبه 15 بهمن 1392, 17:22 عصر
آیا امکان تشخیص url های که با www یا //:http شروع شده اند و فرمت آدرس urlبه صورت صحیح نوشته شده اند می توان تشخیص داد