WRequest.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Web;
  5. namespace CB.Common
  6. {
  7. /// <summary>
  8. /// Request操作类
  9. /// </summary>
  10. public class WRequest
  11. {
  12. /// <summary>
  13. /// 判断当前页面是否接收到了Post请求
  14. /// </summary>
  15. /// <returns>是否接收到了Post请求</returns>
  16. public static bool IsPost()
  17. {
  18. return HttpContext.Current.Request.HttpMethod.Equals("POST");
  19. }
  20. /// <summary>
  21. /// 判断当前页面是否接收到了Get请求
  22. /// </summary>
  23. /// <returns>是否接收到了Get请求</returns>
  24. public static bool IsGet()
  25. {
  26. return HttpContext.Current.Request.HttpMethod.Equals("GET");
  27. }
  28. /// <summary>
  29. /// 返回指定的服务器变量信息
  30. /// </summary>
  31. /// <param name="strName">服务器变量名</param>
  32. /// <returns>服务器变量信息</returns>
  33. public static string GetServerString(string strName)
  34. {
  35. if (HttpContext.Current.Request.ServerVariables[strName] == null)
  36. return "";
  37. return HttpContext.Current.Request.ServerVariables[strName].ToString();
  38. }
  39. /// <summary>
  40. /// 返回上一个页面的地址
  41. /// </summary>
  42. /// <returns>上一个页面的地址</returns>
  43. public static string GetUrlReferrer()
  44. {
  45. string retVal = null;
  46. try
  47. {
  48. retVal = HttpContext.Current.Request.UrlReferrer.ToString();
  49. }
  50. catch { }
  51. if (retVal == null)
  52. return "";
  53. return retVal;
  54. }
  55. /// <summary>
  56. /// 得到当前完整主机头
  57. /// </summary>
  58. /// <returns></returns>
  59. public static string GetCurrentFullHost()
  60. {
  61. HttpRequest request = System.Web.HttpContext.Current.Request;
  62. if (!request.Url.IsDefaultPort)
  63. return string.Format("{0}:{1}", request.Url.Host, request.Url.Port.ToString());
  64. return request.Url.Host;
  65. }
  66. /// <summary>
  67. /// 得到主机头
  68. /// </summary>
  69. /// <returns></returns>
  70. public static string GetHost()
  71. {
  72. return HttpContext.Current.Request.Url.Host;
  73. }
  74. /// <summary>
  75. /// 获取当前请求的原始 URL(URL 中域信息之后的部分,包括查询字符串(如果存在))
  76. /// </summary>
  77. /// <returns>原始 URL</returns>
  78. public static string GetRawUrl()
  79. {
  80. return HttpContext.Current.Request.RawUrl;
  81. }
  82. /// <summary>
  83. /// 判断当前访问是否来自浏览器软件
  84. /// </summary>
  85. /// <returns>当前访问是否来自浏览器软件</returns>
  86. public static bool IsBrowserGet()
  87. {
  88. string[] BrowserName = { "ie", "opera", "netscape", "mozilla", "konqueror", "firefox" };
  89. string curBrowser = HttpContext.Current.Request.Browser.Type.ToLower();
  90. for (int i = 0; i < BrowserName.Length; i++)
  91. {
  92. if (curBrowser.IndexOf(BrowserName[i]) >= 0)
  93. return true;
  94. }
  95. return false;
  96. }
  97. /// <summary>
  98. /// 判断是否来自搜索引擎链接
  99. /// </summary>
  100. /// <returns>是否来自搜索引擎链接</returns>
  101. public static bool IsSearchEnginesGet()
  102. {
  103. if (HttpContext.Current.Request.UrlReferrer == null)
  104. return false;
  105. string[] SearchEngine = { "google", "yahoo", "msn", "baidu", "sogou", "sohu", "sina", "163", "lycos", "tom", "yisou", "iask", "soso", "gougou", "zhongsou", "yodao", "youdao", "360" };
  106. string tmpReferrer = HttpContext.Current.Request.UrlReferrer.ToString().ToLower();
  107. for (int i = 0; i < SearchEngine.Length; i++)
  108. {
  109. if (tmpReferrer.IndexOf(SearchEngine[i], StringComparison.CurrentCultureIgnoreCase) >= 0)
  110. return true;
  111. }
  112. return false;
  113. }
  114. /// <summary>
  115. /// 获得当前完整Url地址
  116. /// </summary>
  117. /// <returns>当前完整Url地址</returns>
  118. public static string GetUrl()
  119. {
  120. return HttpContext.Current.Request.Url.ToString();
  121. }
  122. /// <summary>
  123. /// 获得指定Url参数的值
  124. /// </summary>
  125. /// <param name="strName">Url参数</param>
  126. /// <returns>Url参数的值</returns>
  127. public static string GetQueryString(string strName)
  128. {
  129. return GetQueryString(strName, false);
  130. }
  131. /// <summary>
  132. /// 获得指定Url参数的值
  133. /// </summary>
  134. /// <param name="strName">Url参数</param>
  135. /// <param name="sqlSafeCheck">是否进行sql安全测试</param>
  136. /// <returns>Url参数的值</returns>
  137. public static string GetQueryString(string strName, bool SafeCheck)
  138. {
  139. if (HttpContext.Current.Request.QueryString[strName] == null)
  140. return "";
  141. if (SafeCheck && !Utils.IsSafeSqlString(HttpContext.Current.Request.QueryString[strName]))
  142. return "unsafe string";
  143. return HttpContext.Current.Request.QueryString[strName];
  144. }
  145. /// <summary>
  146. /// 获得当前页面的名称
  147. /// </summary>
  148. /// <returns>当前页面的名称</returns>
  149. public static string GetPageName()
  150. {
  151. string[] urlArr = HttpContext.Current.Request.Url.AbsolutePath.Split('/');
  152. return urlArr[urlArr.Length - 1].ToLower();
  153. }
  154. /// <summary>
  155. /// 返回表单或Url参数的总个数
  156. /// </summary>
  157. /// <returns></returns>
  158. public static int GetParamCount()
  159. {
  160. return HttpContext.Current.Request.Form.Count + HttpContext.Current.Request.QueryString.Count;
  161. }
  162. /// <summary>
  163. /// 获得指定表单参数的值
  164. /// </summary>
  165. /// <param name="strName">表单参数</param>
  166. /// <returns>表单参数的值</returns>
  167. public static string GetFormString(string strName)
  168. {
  169. return GetFormString(strName, false);
  170. }
  171. /// <summary>
  172. /// 获得指定表单参数的值
  173. /// </summary>
  174. /// <param name="strName">表单参数</param>4
  175. /// <param name="sqlSafeCheck">是否进行SQL安全检查</param>
  176. /// <returns>表单参数的值</returns>
  177. public static string GetFormString(string strName, bool sqlSafeCheck)
  178. {
  179. if (HttpContext.Current.Request.Form[strName] == null)
  180. return "";
  181. if (sqlSafeCheck && !Utils.IsSafeSqlString(HttpContext.Current.Request.Form[strName]))
  182. return "unsafe string";
  183. return HttpContext.Current.Request.Form[strName];
  184. }
  185. /// <summary>
  186. /// 获得Url或表单参数的值, 先判断Url参数是否为空字符串, 如为True则返回表单参数的值
  187. /// </summary>
  188. /// <param name="strName">参数</param>
  189. /// <returns>Url或表单参数的值</returns>
  190. public static string GetString(string strName)
  191. {
  192. return GetString(strName, false);
  193. }
  194. /// <summary>
  195. /// 获得Url或表单参数的值, 先判断Url参数是否为空字符串, 如为True则返回表单参数的值
  196. /// </summary>
  197. /// <param name="strName">参数</param>
  198. /// <param name="sqlSafeCheck">是否进行SQL安全检查</param>
  199. /// <returns>Url或表单参数的值</returns>
  200. public static string GetString(string strName, bool sqlSafeCheck)
  201. {
  202. if ("".Equals(GetQueryString(strName)))
  203. return GetFormString(strName, sqlSafeCheck);
  204. else
  205. return GetQueryString(strName, sqlSafeCheck);
  206. }
  207. /// <summary>
  208. /// 获得指定Url参数的int类型值
  209. /// </summary>
  210. /// <param name="strName">Url参数</param>
  211. /// <returns>Url参数的int类型值</returns>
  212. public static int GetQueryInt(string strName)
  213. {
  214. return Utils.StrToInt(HttpContext.Current.Request.QueryString[strName], 0);
  215. }
  216. /// <summary>
  217. /// 获得指定Url参数的DateTime类型值
  218. /// </summary>
  219. /// <param name="strName">Url参数</param>
  220. /// <returns>Url参数的DateTime类型值</returns>
  221. public static DateTime GetQueryDateTime(string strName)
  222. {
  223. return Utils.StrToDateTime(HttpContext.Current.Request.QueryString[strName],DateTime.Today);
  224. }
  225. /// <summary>
  226. /// 判断指定参数是否有值
  227. /// </summary>
  228. /// <param name="strName">Url参数</param>
  229. /// <returns>Url参数的bool类型值</returns>
  230. public static bool GetQueryExist(string strName)
  231. {
  232. return HttpContext.Current.Request.QueryString[strName] != null;
  233. }
  234. /// <summary>
  235. /// 获得指定Url参数的int类型值
  236. /// </summary>
  237. /// <param name="strName">Url参数</param>
  238. /// <param name="defValue">缺省值</param>
  239. /// <returns>Url参数的int类型值</returns>
  240. public static int GetQueryInt(string strName, int defValue)
  241. {
  242. return Utils.StrToInt(HttpContext.Current.Request.QueryString[strName], defValue);
  243. }
  244. /// <summary>
  245. /// 获得指定表单参数的int类型值
  246. /// </summary>
  247. /// <param name="strName">表单参数</param>
  248. /// <param name="defValue">缺省值</param>
  249. /// <returns>表单参数的int类型值</returns>
  250. public static int GetFormInt(string strName, int defValue)
  251. {
  252. return Utils.StrToInt(HttpContext.Current.Request.Form[strName], defValue);
  253. }
  254. /// <summary>
  255. /// 获得指定Url或表单参数的int类型值, 先判断Url参数是否为缺省值, 如为True则返回表单参数的值
  256. /// </summary>
  257. /// <param name="strName">Url或表单参数</param>
  258. /// <param name="defValue">缺省值</param>
  259. /// <returns>Url或表单参数的int类型值</returns>
  260. public static int GetInt(string strName, int defValue)
  261. {
  262. if (GetQueryInt(strName, defValue) == defValue)
  263. return GetFormInt(strName, defValue);
  264. else
  265. return GetQueryInt(strName, defValue);
  266. }
  267. /// <summary>
  268. /// 获得指定Url参数的float类型值
  269. /// </summary>
  270. /// <param name="strName">Url参数</param>
  271. /// <param name="defValue">缺省值</param>
  272. /// <returns>Url参数的int类型值</returns>
  273. public static float GetQueryFloat(string strName, float defValue)
  274. {
  275. return Utils.StrToFloat(HttpContext.Current.Request.QueryString[strName], defValue);
  276. }
  277. /// <summary>
  278. /// 获得指定表单参数的float类型值
  279. /// </summary>
  280. /// <param name="strName">表单参数</param>
  281. /// <param name="defValue">缺省值</param>
  282. /// <returns>表单参数的float类型值</returns>
  283. public static float GetFormFloat(string strName, float defValue)
  284. {
  285. return Utils.StrToFloat(HttpContext.Current.Request.Form[strName], defValue);
  286. }
  287. /// <summary>
  288. /// 获得指定Url或表单参数的float类型值, 先判断Url参数是否为缺省值, 如为True则返回表单参数的值
  289. /// </summary>
  290. /// <param name="strName">Url或表单参数</param>
  291. /// <param name="defValue">缺省值</param>
  292. /// <returns>Url或表单参数的int类型值</returns>
  293. public static float GetFloat(string strName, float defValue)
  294. {
  295. if (GetQueryFloat(strName, defValue) == defValue)
  296. return GetFormFloat(strName, defValue);
  297. else
  298. return GetQueryFloat(strName, defValue);
  299. }
  300. /// <summary>
  301. /// 获得当前页面客户端的IP
  302. /// </summary>
  303. /// <returns>当前页面客户端的IP</returns>
  304. public static string GetIP()
  305. {
  306. string result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
  307. if (string.IsNullOrEmpty(result))
  308. result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
  309. if (string.IsNullOrEmpty(result))
  310. result = HttpContext.Current.Request.UserHostAddress;
  311. if (string.IsNullOrEmpty(result) || !Utils.IsIP(result))
  312. return "127.0.0.1";
  313. return result;
  314. }
  315. /// <summary>
  316. /// 保存用户上传的文件
  317. /// </summary>
  318. /// <param name="path">保存路径</param>
  319. public static void SaveRequestFile(string path)
  320. {
  321. if (HttpContext.Current.Request.Files.Count > 0)
  322. {
  323. HttpContext.Current.Request.Files[0].SaveAs(path);
  324. }
  325. }
  326. /// <summary>
  327. /// 获取是否包含
  328. /// </summary>
  329. /// <param name="name">1 是包含选中,0 排除选中</param>
  330. /// <param name="defaultValue"></param>
  331. /// <returns></returns>
  332. public static bool GetInclude(string name, bool defaultValue)
  333. {
  334. bool include = defaultValue;
  335. if (!String.IsNullOrWhiteSpace(name))
  336. {
  337. string data = HttpContext.Current.Request[name];
  338. if (!string.IsNullOrEmpty(data))
  339. {
  340. if (data == "1")
  341. { return true; }
  342. else if (data == "0")
  343. { return false; }
  344. }
  345. }
  346. return include;
  347. }
  348. }
  349. }