Konuyu görüntüle
IUCODERS FORUM > Programlama > Diğer (COBOL,asp php js..) > asp: Login (excelden kontrol) Aşağıdaki asp.net kodlarını aspye çevirebilecek biri var mı?
Yazar
sevecen


avatar
adana istanbul
Kayıt: 08.02.2006
24.04.2008-11:47 #43279
Merhaba arkadaşlar,
asp'de hiç yazmadım. Önce buraya yazdım. Birazdan nette araştıracağım. Yardımcı olursanız sevinirim. Login ekranı. Butona basıldığında 2 textbox değerini exceldeki verilerle karşılaştırıyor, giriş tamamsa başka sayfaya yönlenen değilse ekranda uyarı veriyor.asp.net kodları aşağıda:

 protected void imgbtnLogin_Click(object sender, ImageClickEventArgs e)
    {
        string excel = ConfigurationManager.AppSettings["ExcelPath"].ToString();
        DataTable dtExcel = ReadExcel(excel);
        string no = txtUserName.Text.Trim();
        string pass = txtPassword.Text.Trim();
        bool ok = false;

        foreach (DataRow row in dtExcel.Rows)
        {
            //2 no 4 şifre
            if (row[2].ToString().Trim() == no && row[4].ToString().Trim() == pass)
            {
                Response.Redirect("default.aspx");
                ok = true;
                Session.Add("UserName", "OK");
                Session.Timeout = 30;             }
        }//foreach
        if (!ok)
            Label1.Text = "Kullanıcı adı / şifre yanlış !";
    }


public static DataTable ReadExcel(string excelPath)
    {
        DataTable dtEXCEL = new DataTable();

        string strConn;
        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                 "Data Source=" + excelPath + ";" +
                 "Extended Properties=Excel 8.0;";

        OleDbConnection oleConn = new OleDbConnection(strConn);
        oleConn.Open();
        object[] _obj = new object[] { null, null, null, "TABLE" };

        DataTable dtNAME = oleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, _obj);

        OleDbDataAdapter adp;

        if (dtNAME.Rows.Count > 0)
        {
            adp = new OleDbDataAdapter("SELECT * FROM [" + dtNAME.Rows[0]["TABLE_NAME"].ToString() + "]", oleConn);
            adp.Fill(dtEXCEL);
            adp.Dispose();
        }
        oleConn.Close();
        oleConn.Dispose();

        return dtEXCEL;
    }//ReadExcel






bize ruyalarimizin degil uyanikligimizin tabiri gerek (Alinti)





Yazar
aliprinter


avatar
İstanbul
Kayıt: 12.02.2006
24.04.2008-14:25 #43286
Öncelikle Excel'den verileri okuyup recordset nesnesi ataman lazım. Recordseti DataTable olarak düşünebilirsin. Sheet ismini excel dosyasından okutmayı bilmiyorum o yüzden sql kodu içerisinde sheet ismini kendin vereceksin ben örnek olarak TABLE_NAME yazdım. Daha sonra Recordset içerisindeki kayıtları teker teker kontrol edip 2. sütun kullanıcı adına, 4. sütun şifreye eşitse düngüden çıkıp true değeri döndürüyor aşağıdaki fonksiyon. Aslında SQL içerisinden WHERE ile k.adı ve şifre sorgulaması da yapılabilir ama excel sütun adı nasıl belirtilir aklımda değil.

<%
Private Function ExcelLogin(no, pass)
	Dim objConn
	Dim objRs
        Dim strConn
	Dim excelPath
	Dim strSQL
	Dim ok
	
	excelPath = Server.MapPath("dosya.xls")
                strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" _   
                 & "Data Source=" + excelPath + ";" _
                 & "Extended Properties=Excel 8.0;"

	
	Set objConn = Server.CreateObject("ADODB.Connection")
	objConn.Open strConn

	Set objRs = Server.CreateObject("ADODB.Recordset")
	strSQL="SELECT * FROM [TABLE_NAME$]"
	Set objRs = objConn.Execute(strSQL)

	
	Do While Not objRs.EOF
		If objRs(2) = no And objRs(4) = pass Then
			ok = true
			Exit Do
		End If
		objRs.MoveNext
	Loop

  	objRs.Close
        objConn.Close

	ExcelLogin = ok
End Function
%>


Daha sonra bu fonksiyonu login kontrolü yapacağın şu şekilde zaman çağırman lazım:
<%

Dim no
Dim pass

no = Trim(Request.Form("txtUserName"))
pass = Trim(Request.Form("txtPassword"))

If ExcelLogin(no, pass) Then
	Session("UserName") = "OK"
	Session.Timeout = 30
	Response.Redirect "index.asp"
Else
	Response.Write "Kullanıcı adı / şifre yanlış !"
End If

%>


Fonksiyon ve çağırdığın yer aynı dosyada olmalı. Farklı dosyalarda olacaksa include etmelisin.
Bir de ASP codebehind çalışmadığı için textboxlardan verileri formdan post edip Request.Form ile okutmalısın kodlardan gördüğün gibi. Anlamadığın kısım olursa sorabilirsin.

İşe yarar umarım. peace





Yazar
tarikkranda


avatar

Kayıt: 07.01.2006
24.04.2008-22:58 #43341
Merhabalar,
Ben ASP den anlamam ama burda merak ettiğim bir konu var. Bu login işlemleri kullanıcılar tarafından aynı anda eş zamanlı olarak gerçekleştirilirse Excel dosyasını çoklu olarak nasıl işleyebiliyorsunuz? Bu bir problem oluşturmuyor mu?





Yazar
aliprinter


avatar
İstanbul
Kayıt: 12.02.2006
25.04.2008-00:11 #43353
Herhangi bir projede Excel'i veritabanı olarak hiç kullanmadığım için performansı konusunda birebir tecrübem yok. Fakat web siteleri gibi çok kullanıcılı sistemlerde problemler çıkartabilmesi mümkün tabi. Login olan kullanıcı sayısı ne kadar çoksa performansı o derece kötü etkileyecektir. Bildiğim kadarıyla bir Excel dosyasına aynı anda erişebilecek maksimum kullanıcı sayısı 256. Tabi sadece okuma modunda. Çünkü veri girişi aynı anda sadece bir kullanıcı için gerçekleşebilmekte. sevecen'in Login uygulamasında da sadece Excel'den veriler kontrol amacıyla okunduğu için bu durumda aynı anda 256 kullanıcı giriş yapabilir.
O yüzden bence Excel veritabanı olarak çok zorda kalınmadıkça pek kullanılmamalı ya da veri giriş ve kontrolü çok azdır o zaman olabilir.
Ancak sanki sorunuzdan ASP ve ASP.NET'te Excel'i veritabanı olarak kullanmak farklıymış gibi algıladım. Arada kaynak kullanımı olarak bi farkı var mı? İkisi de Jet OLEDB kullanıyor. Dolayısıyla ASP'de veritabanı olarak kullanılan Excel'in durumuyla ASP.NET'tekinin durumu aynı olarak düşünüyorum.





Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb