顯示具有 c-sharp 標籤的文章。 顯示所有文章
顯示具有 c-sharp 標籤的文章。 顯示所有文章

2010年12月28日 星期二

C#防堵網頁盜用

//  HTTP_REFERER 是定義在http protocol的標頭資訊,若非來自非同步的request,值為null
//  REMOTE_ADDR 來源IP
//  感謝克里斯大大提供

string referer = Request.ServerVariables["HTTP_REFERER"];
string remoteAddr = Request.ServerVariables["REMOTE_ADDR"];
if((referer != null && referer.IndexOf("163.29.7.165") > -1) || remoteAddr == "163.29.7.165")
{
  //: your content is in here. 
}


2011/04/11 更新
        string referer = Request.ServerVariables["HTTP_REFERER"];
        if (referer == null || referer.IndexOf("your domain") == -1)
        {
            Response.Write("不允許非來自ShowTaiwan網域的存取");
            return ;
        }
//適用於非同步ajax request的情況,防君子不防小人

2010年8月6日 星期五

ASP.NET[C#] 如何取得http Get Post 變數

GET 請用

string idValue = Request["ID"] for C#
string trackerID = Request.QueryString["trackerID"];

string idValue = Request("ID") for VB

POST請用

Request.Form["variable"]

2010年8月5日 星期四

ASP.NET[C#] SQL撈資料轉XML格式直接輸出

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Xml;

public partial class user_group : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs ea)
    {
        string connetionString = "Data Source=*****;Initial Catalog=dbname;User ID=****;Password=****";

        SqlConnection cnn = new SqlConnection(connetionString);

        cnn.Open(); 
        //Console.WriteLine("ServerVersion: {0}", cnn.ServerVersion);
        //Console.WriteLine("State: {0}", cnn.State);

        string sqlGroup = "SELECT DISTINCT [db_owner].[Group].[GroupID],[db_owner].[Group].[name] FROM [db_owner].[Group]";
        SqlCommand sqlGroupCmd = new SqlCommand(sqlGroup, cnn);
        SqlDataAdapter groupAdpt = new SqlDataAdapter(sqlGroupCmd);
        DataTable groupDataTable = new DataTable();
        int noOfGroup = groupAdpt.Fill(groupDataTable);
        //Response.Write(noOfGroup);

        XmlDocument ObjXML = new XmlDocument();
        XmlElement menu = ObjXML.CreateElement("menu");//create xml called 'menu'
        ObjXML.AppendChild(menu);// insert root node (root node without attribute)
        
        //menu.SetAttribute("label", null, "User Group");
        //外圈拿到 Group ID Group Name 
        if (noOfGroup > 0)
        {
            foreach (DataRow groupDr in groupDataTable.Rows)
            {
                String str = groupDr[0].ToString();
                int groupID = int.Parse(str);
                //Response.Write(str);
                
                XmlElement node = ObjXML.CreateElement("node");//create child node
                menu.AppendChild(node);// insert child node
                node.SetAttribute("label", null, groupDr[1].ToString());//set child node attribute Group Name

                //內圈拿到每個group id對應的tracker id, tracker name, 

                string sqlText = "SELECT [db_owner].[GroupTracker].[TrackerID],[db_owner].[TrackerUse].[name] FROM  [db_owner].[GroupTracker],[db_owner].[TrackerUse] WHERE [db_owner].[GroupTracker].[GroupID] = " + str + " AND [db_owner].[GroupTracker].[TrackerID] = [db_owner].[TrackerUse].[TrackerID]";

                //string sqlText = "SELECT [db_owner].[TrackerUse].[TrackerID] FROM [Tracker].[db_owner].[TrackerUse]";

                SqlCommand sqlCmd = new SqlCommand(sqlText, cnn);
                SqlDataAdapter adpt = new SqlDataAdapter(sqlCmd);
                DataTable dataTable = new DataTable();
                // Fill the data table with select statement's query results:
                int recordsAffected = adpt.Fill(dataTable);
                
                //Response.Write(recordsAffected + "
");
                
                if (recordsAffected > 0)
                {
                    foreach (DataRow dr in dataTable.Rows)
                    {
                        XmlElement innernode = ObjXML.CreateElement("node");//create child node
                        node.AppendChild(innernode);// insert child node
                        innernode.SetAttribute("label", null, dr[1].ToString());//set child node attribute
                        innernode.SetAttribute("link", null, dr[0].ToString());//set child node attribute

                    }
                }

            }
            XmlDeclaration xmldecl;
            xmldecl = ObjXML.CreateXmlDeclaration("1.0", null, null);
            xmldecl.Encoding = "utf-8";
            ObjXML.InsertBefore(xmldecl, menu);
            string myxml = ObjXML.InnerXml.ToString();
            Response.Write(myxml);//write xml

            if (cnn.State != ConnectionState.Closed)
            {
                cnn.Close();
            }
        }
        else {
            Response.Write("SQL Empty!!");
        }

        

            
        

    }
}


2010年5月30日 星期日

[ASP.NET]發佈網站到IIS伺服器

微軟的設計邏輯跟自由軟體派就是大相逕庭...吃了些悶虧

用VS 2008在設計網站的時候,可以透過VS本身內建的小Test Web Server來執行網頁結果

(這點倒是非常方便,跟以前在寫PHP的習慣不太一樣)

而真正要發布到IIS上,又是另一回事。

因為ASP.NET是需要經過編譯的,剛開始找不到編譯過後的檔案被放到哪= =

整理:方案總管,發行網站→指定要發佈的目的路徑→
會產生aspx檔案、bin 資料夾、PrecompiledApp.config、web.config


另外不建議使用手動複製檔案來發佈網站。
還需要注意IIS的ASP.NET 版本設定,我就是沒發現這個浪費一堆時間。

很瞎= =

2010年4月28日 星期三

ASP.NET C # 連接資料庫 SQL Server

using System.Data.SqlClient;

string connetionString = "Data Source=data_source(server_name);Initial Catalog=db_name;User ID=account;Password=pwd";
//string connetionString = "server=IP; database=資料庫名稱; uid=帳號; pwd=密碼; Initial Catalog=資料庫名稱";
//string connectionString = GetConnectionString(); 也可以自己寫個方法把連線字串內容包起來

SqlConnection connection = new SqlConnection(connetionString);
try
            {
                connection.Open();
                Response.Write("Connection Open !");
                Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
                Console.WriteLine("State: {0}", connection.State);
                string sqlText = "Select * from products"
                SqlCommand sqlCmd = new SqlCommand(sqlText , connection );
                //SqlDataAdapter adpt = = new SqlDataAdapter(sqlCmd);
                //DataSet dataset = new DataSet();
                //adpt.Fill(dataset , table_name);
                //DataView dataview = new DataView(dataset .Tables[0]);
                connection.Close();
            }
            catch (Exception ex)
            {
                Response.Write("Connection Fail !");
            }