Osman KURT

Yazılım Uzmanı | MVC Eğitmeni

ASP.Net ile String İfadeyi Html Tag lardan Temizleme

Yazı editörü kullanıldığı zaman örneğin fck editör vs.. bu editörlere yazılan yazıları veritabanına kaydederken html tagları ile birlikte kayıt edilir.Bazı durumlarda string ifadeden html tagları temizlemek durumunda kalırız.Bu yazımda ASP.Net de string ifade içindeki html tagları nasıl temizleriz bir inceleyelim.

Yazı editörü ile bir yazı yazdık  ve bol html taglara sahip bir içerik yazımız oluştu.Bu yazının ilk 300 karakterini html taglardan arınmış sade bir şekilde alacağız.Örnek kod yapımız aşağıdaki gibi olacaktır.

using System.Text.RegularExpressions;
string icerik = dt.Rows[0]["icerik"].ToString();
icerik = Server.HtmlDecode(icerik);
icerik = Regex.Replace(icerik, @"<!--?\w+((\s+\w+(\s*=\s*(?:"".*?""|'.*?'|[^'""-->\s]+))?)+\s*|\s*)/?>", string.Empty);
    if (icerik.Length > 300)
    {
    icerik = icerik.Substring(0, 300);
    }
lbl.Text = aciklama;

İşlemimiz bu kadar basit.

Görüşmek Üzere;

Osman KURT

Yazılım Geliştirici ve Grafiker

 

ASP.Net C# da DropDownlist' i Doldurmak

Arkadaşlar projelerimizde en çok kullanacağımız fonksiyonlardandır dropdownlist. Herhangi bir listeleme olayında il ilçe gibi bir sürü farklı verileri göstermede işimize yarar. Bu aracı asp.net sayfamıza ekledikten sonra pencerenin yan tarafında bulunan proporties kısmın dan da doldurabiliriz ama bu pek de sağlıklı olmaz. Fazla mudahale şansı sağlamaz bize. Bizde ne yapacağız bu aracımızı kod kısmından dolduracağız.

Şimdi sayfamıza 1 adet dropdownlist atalım ve form load olayına alt kısımdaki kodumuzu yazalım. Tabi veritabanı kısmınıkendinize göre ayarlamı unutmayalım.

 SqlCommand sorgu = new SqlCommand("select * from Sayfalar order by SayfaId asc ", baglan.baglanti);
        if (ConnectionState.Closed == baglan.baglanti.State)
            baglan.baglanti.Open();
        SqlDataReader dr = sorgu.ExecuteReader();
        while (dr.Read())
        {
            ListItem litem = new ListItem();
            litem.Text = dr["SayfaAd_tr"].ToString();
            litem.Value = dr["SayfaId"].ToString();
            ddlsayfalar.Items.Add(litem);
        }
        dr.Close();
        baglan.baglanti.Close();

Bu kodlarımızı yazdıktan sonra .net sayfamızı çalıştıralım ve dropdownlist aracımızın içinde ki verilerin listelendiğini göreceksiniz.

Görüşmek Üzere,

Osman KURT

Yazılım Geliştirici ve Garfiker

C# Asp.Net'te URL'yi yeni Pencerede Açmak

Genelde C# ile kodlama yaparken yeni bir web sayfasında yönlendirme yapmak gerektiğinde aşağıdaki kodu kullanırız:

Response.Redirect("www.osmankurt.net");

Ama bu şekilde bir kullanımda sayfa aynı pencerede açılacağı için önceki sayfamız kaybolur. Eğer yeni navigasyon penceresiyle birlikte kaynak sayfasınında çalışmasını istiyorsanız o zaman aşağıdaki biçimde bir kullanım sorununuzu çözecektir.

string navigateURL = "www.osmankurt.net";
string target="_blank";
string windowProperties="status=no, menubar=yes, toolbar=yes";
string scriptText="window.open('"+navigateURL+"','"+target+"','"+windowProperties+"')";

Page.ClientScript.RegisterStartupScript(this.GetType(),"eşsizAnahtar",scriptText ,true);

navigateURL: Açmak istediğiniz sayfanız yolu
target: Açılacak sayfanın pencere biçimini belirler.
windowProperties: Açılacak pencerinin özellikleri (yes=göster / no=gösterme)

Böylece C# code behind sayfasından yeni sayfanın farklı bir pencerede açılmasını sağlayabiliriz.

Sonraki yazılarımda görüşmek üzere;

Osman KURT

Yazılım Geliştirici ve Grafiker

Asp.net 4.0 ValidateRequest Sorunu

Asp.net ile geliştirdiğimiz projelerde html içeriğe sahip string ifadeleri veritabanına kaydetmek istediğimizde normal şartlarda hata alırız.Bunun nedeni sistem bu olayı bir XSS saldırısı olarak algılamaktadır.Bu yüzden bu tür istekler sunucu tarafından kabul edilmez ta ki siz müdahale edene kadar.

ValidateRequest = "false" yaparsak bu sorun ortadan kalkacaktır.İster herhangi bir sayfanın design tarafında ister tüm proje için geçerli olan web.config tarafında bu sorunu çözebiliriz.

Kullanmak istediğimiz sayfanın başına;

ValidateRequest="false"

Web.config tarafında ;

<pages validaterequest="false"></pages>

Eğer projemizi asp.net 4.0 ile geliştiriyor isek web.config dosyamızda küçük bir değişiklik daha yapmamız gerekiyor.

<system.web>

<httpruntime requestvalidationmode="2.0">

</httpruntime>

</system.web>

Bu yazımın bir benzerini daha önceki yazılarımda paylaşmıştım ama 4.0 la gelen bir özelliği atladığım için tekrar yazmanın daha iyi olacağını düşündüm, yararlı olması dileğiyle;

Osman KURT

Yazılım Geliştirici ve Grafiker

ASP.Net de Tarayıcı Bilgisine Ulaşmak

Arkadaşlar geçen yapmış olduğum bir projemde lazım oldu. Kullandım ve gerçekten kullanışlı bir kod ve bu yüzden sizinle paylaşmak istedim. Benim işime nerde lazım oldu derseniz yaptığım projede kullanılan bir style dosyası browser lar arası problem yaşatıyodu bazı özellikler çalışmıyordu fireworks da onun için bende bu kodu kullandım ve her browser a ayrı style doayaları atadım ve style dosyaşlarını daadmin panelinden dinamik bir şekilde çektim. Çok güzel dimi :) neyse fazla uzatmadan kodumuza geçelim isterseniz.Ayrıca dinamik css eklemek kodları da daha önceki yazılarımda mevcuttur kullanmak isterseniz aklınızda bulunsun.

Tarayıcı bilgilerine System.Web kütüphanesi altında HttpBrowserCapabilities sınıfı yardımı ile alacağız.

    System.Web.HttpBrowserCapabilities browser = Request.Browser;
    string name = browser.Browser;
    float version = (float)(browser.MajorVersion + browser.MinorVersion);
    if (name == "IE" && version >= 7){
    //IE 7 Kullanılıyor
    }
    elseif(name == "Firefox" && version >= 2){
    //Firefox 2 kullanılıyor
    }

Bu kadar basit :D

Bu kodlarımızı yazdıktan sonra işlemimiz tamamlanmıştır.

Görüşmek üzere;

Osman KURT

Yazılım Geliştirici ve Grafier

ASP.Net de Başka Siteden MetaTag Çekmek

Arakadaşlar daha önceki yazılarım da dinamik meta tag eklemeyi göstermiştim. Ama şimdi size daha güzel gelebilecek bir kodu paylaşacağım. Tamam sitemize dinamik meta tag giriyoruz herşey güzel ama peki metalarımızı girmeye bile üşenecek bir yapıya sahipsek :D o zaman bu kod tam size göre. Neyse uzatmayım ve kodumuzu yazmaya başlayalım.

Öncelikle Kütüphanemize alt kısımda ki kodumuzu girelim;

    using System.Text.RegularExpressions;

Bu referansı ekledikten sonra yazmaya devam edelim ilk olarak kendimize bit method yazıyoruz;

protected string GetTitle(string myurl)
    {
          //WebClient create ediliyor.
      System.Net.WebClient myclient = new System.Net.WebClient();
          //myclient.DownloadString(myurl) ile sitemize bağlanıyoruz ve verilerimizi indiriyoruz.
          //(@"(.*?)") ile title tağı arasında bulunan string değerini arıyoruz. ve bu değeri return olarak geri dönderiyoruz.
          return Regex.Match(myclient.DownloadString(myurl), (@"(.*?)")).Groups[1].ToString();
    }

Bu methodumuzu yazdık ve sıra geldi load olayında linkimizi girmeye ve metaları çekmeye;

protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = GetTitle("http://www.siteadi.com");
    }

Ve kodlarımızı sonlandırdık.

Görüşmek Üzere;

Osman KURT

Yazılım Geliştirici veGrafiker

 

ASP.Net de Kullanıcıyı Mobile Sayfaya Yönlendirme

Gelişen teknoloji ve akıllı telefonlar sayesinde internet kullanımının büyük bir ölümünü mobile kullanımlar gerçekleştirmektedir. Böyle bir kullanıcı kitlesini kaybetmeyi hiçbir admin istemez. Öyleyse ne yapıcaz alt kısım da göstermiş olduğum gibi kodlarımızı web projemize entegre edicez ve kullanıcılara sunucaz.

Dikkat etmemiz gerek bir nokta bu olayın .Net 4.0 ile gelen bir özellik olduğu altsürümlerde çalışmıyacaktır.:( 

Şimdi lafı uzatmadan kodlarımızı yazmaya başlayalım isterseniz;

private static readonly Regex MobileRegex = new Regex(@"(nokia|sonyericsson|blackberry|IPHONE|samsung|sec-|windows ce|motorola|mot-|up.b|midp-)", RegexOptions.IgnoreCase | RegexOptions.Compiled);
     
    public bool IsMobile
    {
        get
        {
            HttpRequest r = HttpContext.Current.Request;
     
            if (r.Browser.IsMobileDevice)
                return true;
     
            if (!string.IsNullOrEmpty(r.UserAgent) && MobileRegex.IsMatch(r.UserAgent))
                return true;
     
            return false;
        }
    }
     
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsMobile)
            Response.RedirectPermanent("Mobile.aspx", true);
    }

Bu kodlarımızı yazdıktan sonra servere atalım ve test edelim.

Önerilerinizi Bekliyorum;

Görüşmek Üzere

Osman KURT

Yazılım geliştirici ve Grafiker

ASP.Net de OpenDialog Filtre Uygulama

Arkadaşlar OpenFileDialog ile dosya seçme işlemlerinde filtreleme uygulamak çoğu zaman ihtiyaç duyulan bir durumdur. Bu işlem bize hem zaman kazandıracaktır hem de sağlıklı seçimler yapma şansı sunacaktır. Örnek vermek gerekirse herhangi bir kalsörden sadece doc dosyalarını görmek istiyorsunuz o zaman filtreleme tam size göre bişeydir.

OpenFileDialog Extension Filter örnek uygulama ekran görüntüsü aşağıdaki gibi olacaktır.

Dikkat edilirse sadece bizim belirttiğimiz uzantıda yani .xls uzantısında dosyalar seçilebiliyor.İstenilirse ek olarak tüm dosyalar da eklenebilir örnek resimde olduğu gibi..

Kod yapısını incelersek..

OpenFileDialog file = new OpenFileDialog();
    file.Filter = "Excel Dosyası (*.xls)|*.xls|Tüm Dosyalar (*.*)|*.*";
    file.FilterIndex = 1;
    DialogResult sonuc = file.ShowDialog();      
    if (sonuc == DialogResult.OK)
    { }

Bu kodlarımızı entegre ettikten sonra işlemimiz tamamlanmıştır arkadaşlar.

Görüşmek Üzere;

Osman KURT

Yazılım Geliştirici ve Grafiker

WebConfig Hata Olaylarında Sayfa Yönlendirme

Arkadaşlar bir proje yaparken hepimizin bazı eksiklikleri olabilir bazı durumlarda bazı şeyleri düşünemeyiz böyle durumlarda sitemizde gezinen kullanıcının hem güvenini sarsmamak hemde kendi projenizin güvenliğini tehlikeye atmamak için bu hataları çok iyi bir şekilde yönetmemiz gerek. Çünkü hata yayınlanırken gösterilen bir kod parçası dahi kötü niyetli insanlar için kaçınılmaz bir nimet olabilir. Bu yüzden herhangi bir hata oluşması durumunda kullanıcıya hata mesajını göstermek yerine onu başka bir sayfaya yönlendirmek düşünüyorum ki en iyi seçenek. Lafı fazla uzatmadan kodlarımıza geçelim. Bu olayı web config dediğimiz yapılandırma sayfasında gerçekleştiriyoruz. Alt kısım da vereceğim kodlarla bu işlem basti bir şekilde tamamlanacaktır.

<system.web>

<customErrors mode=“On“>
<error statusCode=“400“ redirect=“BadRequest.aspx“/>
<error statusCode=“403“ redirect=“Yasak.aspx“/>
<error statusCode=“404“ redirect=“SayfaBulunamadi.aspx“/>
<error statusCode=“500“ redirect=“ServerError.aspx“/>
</customErrors>
</system.web>


 
Bu kodlarımızı yazdık ve işlemimiz sona erdi en azından tehlikelerden biri böylece sonlanmış oldu.

Görüşmek Üzere;

Osman KURT

Yazılım Geliştirici ve Grafiker

ASP.Net de Domain Sorgulama

Arkadaşlar bu yazımızda sizlere asp.net de domain sorgulama kodlarını göstereceğim. Lafı uzatmadan hemen kodlarımıza geçelim isterseniz.

İlk Olarak sayfamızı tasarlamaya başlayalım. Sayfamızı alt kısımda ki resim gibi hazırlayalım lütfen.

Bu formumuzu hazırladıktan sonra şimdi sorgulama için gerekli kodlarımızı yazmaya başlayalım.

private TcpClient TcpC = new TcpClient();
protected void Page_Load(object sender, EventArgs e)
{
img_Durum.Visible = false;
}
protected void Button1_Click(object sender, EventArgs e)
{
Sorgula();
}
private void Sorgula()
{
TcpC.Connect("whois.internic.net", 43);

string strDomain = txt_domain.Text + "." + DrDLst_uzanti.Text + "\r\n";
byte[] arrDomain = Encoding.ASCII.GetBytes(strDomain);

Stream objStream = TcpC.GetStream();

objStream.Write(arrDomain, 0, strDomain.Length);

StreamReader objSr = new StreamReader
(TcpC.GetStream(), Encoding.ASCII);

string strServerResponse = objSr.ReadToEnd();

strServerResponse = Regex.Replace
(strServerResponse, "", "");

lbl_Whois.Text = strServerResponse;

TcpC.Close();

if (lbl_Whois.Text.IndexOf("No match for") == -1 || txt_domain.Text == "")
{
img_Durum.Visible = true;
img_Durum.ImageUrl = "images/hata.png";
lbl_Durum.ForeColor = System.Drawing.Color.Red;
lbl_Durum.Text = "Bu Domain Musait Değil Alınamaz.";
}
else
{
img_Durum.Visible = true;
img_Durum.ImageUrl = "images/tamam.png";
lbl_Durum.ForeColor = System.Drawing.Color.Green;
lbl_Durum.Text = "Domain Kullanıma Musait.";
}

}

Bu kodlarımızı da yazdıktan sonra işlemimiz tamamlanmıştır. Artık domain sorgulamasını istediğiniz yerde yapabilirsiniz.

Görüşmek Üzere;

Osman KURT

Yazılım geliştirici ve Grafiker