// 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日 星期五
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 版本設定,我就是沒發現這個浪費一堆時間。
很瞎= =
用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 !"); }
訂閱:
文章 (Atom)