Request
1
using System;
2
using System.Web;
3
using System.Text;
4
using System.Text.RegularExpressions;
5
6
namespace ChinaValue.CommonV2008
7

{
8
/**//// <summary>
9
/// Request操作类
10
/// </summary>
11
public class CVRequest
12
{
13
/**//// <summary>
14
/// 判断当前页面是否接收到了Post请求
15
/// </summary>
16
/// <returns>是否接收到了Post请求</returns>
17
public static Boolean IsPost()
18
{
19
return HttpContext.Current.Request.HttpMethod.Equals("POST");
20
}
21
22
/**//// <summary>
23
/// 判断当前页面是否接收到了Get请求
24
/// </summary>
25
/// <returns>是否接收到了Get请求</returns>
26
public static Boolean IsGet()
27
{
28
return HttpContext.Current.Request.HttpMethod.Equals("GET");
29
}
30
31
/**//// <summary>
32
/// 返回指定的服务器变量信息
33
/// </summary>
34
/// <param name="strName">服务器变量名</param>
35
/// <returns>服务器变量信息</returns>
36
public static String GetServerString(string strName)
37
{
38
if (HttpContext.Current.Request.ServerVariables[strName] == null)
39
{
40
return String.Empty;
41
}
42
43
return HttpContext.Current.Request.ServerVariables[strName].ToString();
44
}
45
46
/**//// <summary>
47
/// 返回上一个页面的地址
48
/// </summary>
49
/// <returns>上一个页面的地址</returns>
50
public static String GetUrlReferrer()
51
{
52
String retVal = null;
53
54
try
55
{
56
retVal = HttpContext.Current.Request.UrlReferrer.ToString();
57
}
58
catch
{ }
59
60
if (retVal == null)
61
return String.Empty;
62
63
return retVal;
64
65
}
66
67
/**//// <summary>
68
/// 得到当前完整主机头
69
/// </summary>
70
/// <returns></returns>
71
public static String GetCurrentFullHost()
72
{
73
HttpRequest request = System.Web.HttpContext.Current.Request;
74
75
if (!request.Url.IsDefaultPort)
76
{
77
return string.Format("{0}:{1}", request.Url.Host, request.Url.Port.ToString());
78
}
79
80
return request.Url.Host;
81
}
82
83
/**//// <summary>
84
/// 得到主机头
85
/// </summary>
86
/// <returns></returns>
87
public static String GetHost()
88
{
89
return HttpContext.Current.Request.Url.Host;
90
}
91
92
/**//// <summary>
93
/// 获取当前请求的原始 URL(URL 中域信息之后的部分,包括查询字符串(如果存在))
94
/// </summary>
95
/// <returns>原始 URL</returns>
96
public static String GetRawUrl()
97
{
98
return HttpContext.Current.Request.RawUrl;
99
}
100
101
/**//// <summary>
102
/// 判断当前访问是否来自浏览器软件
103
/// </summary>
104
/// <returns>当前访问是否来自浏览器软件</returns>
105
public static Boolean IsBrowserGet()
106
{
107
String[] BrowserName =
{ "ie", "opera", "netscape", "mozilla" };
108
String curBrowser = HttpContext.Current.Request.Browser.Type.ToLower();
109
110
for (Int32 i = 0; i < BrowserName.Length; i++)
111
{
112
if (curBrowser.IndexOf(BrowserName[i]) >= 0)
113
{
114
return true;
115
}
116
}
117
118
return false;
119
}
120
121
/**//// <summary>
122
/// 判断是否来自搜索引擎链接
123
/// </summary>
124
/// <returns>是否来自搜索引擎链接</returns>
125
public static Boolean IsSearchEnginesGet()
126
{
127
String[] SearchEngine =
{ "google", "yahoo", "msn", "baidu", "sogou", "sohu", "sina", "163", "lycos", "tom" };
128
String tmpReferrer = HttpContext.Current.Request.UrlReferrer.ToString().ToLower();
129
130
for (int i = 0; i < SearchEngine.Length; i++)
131
{
132
if (tmpReferrer.IndexOf(SearchEngine[i]) >= 0)
133
{
134
return true;
135
}
136
}
137
138
return false;
139
}
140
141
/**//// <summary>
142
/// 获得当前完整Url地址
143
/// </summary>
144
/// <returns>当前完整Url地址</returns>
145
public static String GetUrl()
146
{
147
return HttpContext.Current.Request.Url.ToString();
148
}
149
150
/**//// <summary>
151
/// 获得指定Url参数的值(过滤SQL注入字符)
152
/// </summary>
153
/// <param name="strName">Url参数</param>
154
/// <returns>Url参数的值</returns>
155
public static String GetQueryString(String strName)
156
{
157
return GetQueryString(strName, true);
158
}
159
160
/**//// <summary>
161
/// 获得指定Url参数的值
162
/// </summary>
163
/// <param name="strName">Url参数</param>
164
/// <param name="dropInjWords">是否过滤SQL注入字符</param>
165
/// <returns>Url参数的值</returns>
166
public static String GetQueryString(String strName, Boolean dropInjWords)
167
{
168
if (HttpContext.Current.Request.QueryString[strName] == null)
169
{
170
return String.Empty;
171
}
172
173
String queryStr = HttpContext.Current.Request.QueryString[strName];
174
175
if (dropInjWords)
176
{
177
return DropInjectionWords(queryStr);
178
}
179
180
return queryStr;
181
}
182
183
/**//// <summary>
184
/// 过滤SQL注入的字符
185
/// </summary>
186
/// <param name="str"></param>
187
/// <returns></returns>
188
public static String DropInjectionWords(String str)
189
{
190
StringBuilder sb = new StringBuilder(str);
191
192
sb = sb.Replace(";", ";");
193
sb = sb.Replace("'", "’");
194
195
if (Regex.IsMatch(sb.ToString(), @"\s*select\s+"))
196
{
197
sb = sb.Replace("select", "select");
198
}
199
200
if (Regex.IsMatch(sb.ToString(), @"\s*and\s+"))
201
{
202
sb = sb.Replace("and", "and");
203
}
204
//sb = sb.Replace("=", "=");
205
206
return sb.ToString();
207
}
208
209
/**//// <summary>
210
/// 获得当前页面的名称
211
/// </summary>
212
/// <returns>当前页面的名称</returns>
213
public static String GetPageName()
214
{
215
string[] urlArr = HttpContext.Current.Request.Url.AbsolutePath.Split('/');
216
return urlArr[urlArr.Length - 1].ToLower();
217
}
218
219
/**//// <summary>
220
/// 返回表单或Url参数的总个数
221
/// </summary>
222
/// <returns></returns>
223
public static Int32 GetParamCount()
224
{
225
return HttpContext.Current.Request.Form.Count + HttpContext.Current.Request.QueryString.Count;
226
}
227
228
/**//// <summary>
229
/// 获得指定表单参数的值(过滤SQL注入字符)
230
/// </summary>
231
/// <param name="strName">表单参数</param>
232
/// <returns>表单参数的值</returns>
233
public static String GetFormString(String strName)
234
{
235
return GetFormString(strName, true);
236
}
237
238
/**//// <summary>
239
/// 获得指定表单参数的值
240
/// </summary>
241
/// <param name="strName">表单参数</param>
242
/// <param name="dropInjWords">是否过滤SQL注入字符</param>
243
/// <returns>表单参数的值</returns>
244
public static String GetFormString(String strName, Boolean dropInjWords)
245
{
246
if (HttpContext.Current.Request.Form[strName] == null)
247
{
248
return String.Empty;
249
}
250
251
String fromStr = HttpContext.Current.Request.Form[strName];
252
253
if (dropInjWords)
254
{
255
return DropInjectionWords(fromStr);
256
}
257
258
return fromStr;
259
}
260
261
/**//// <summary>
262
/// 获得Url或表单参数的值, 先判断Url参数是否为空字符串, 如为True则返回表单参数的值(过滤SQL注入字符)
263
/// </summary>
264
/// <param name="strName">参数</param>
265
/// <returns>Url或表单参数的值</returns>
266
public static String GetString(String strName)
267
{
268
if ("".Equals(GetQueryString(strName)))
269
{
270
return GetFormString(strName);
271
}
272
else
273
{
274
return GetQueryString(strName);
275
}
276
}
277
278
/**//// <summary>
279
/// 获得Url或表单参数的值, 先判断Url参数是否为空字符串, 如为True则返回表单参数的值
280
/// </summary>
281
/// <param name="strName">参数</param>
282
/// <param name="dropInjWords">是否过滤SQL注入字符</param>
283
/// <returns>Url或表单参数的值</returns>
284
public static String GetString(String strName, Boolean dropInjWords)
285
{
286
if ("".Equals(GetQueryString(strName)))
287
{
288
return GetFormString(strName, dropInjWords);
289
}
290
else
291
{
292
return GetQueryString(strName, dropInjWords);
293
}
294
}
295
296
/**//// <summary>
297
/// 获得指定Url参数的int类型值
298
/// </summary>
299
/// <param name="strName">Url参数</param>
300
/// <param name="defValue">缺省值</param>
301
/// <returns>Url参数的int类型值</returns>
302
public static Int32 GetQueryInt(String strName, Int32 defValue)
303
{
304
return ConvertStr.ToInt32(HttpContext.Current.Request.QueryString[strName], defValue);
305
}
306
307
/**//// <summary>
308
/// 获得指定表单参数的int类型值
309
/// </summary>
310
/// <param name="strName">表单参数</param>
311
/// <param name="defValue">缺省值</param>
312
/// <returns>表单参数的int类型值</returns>
313
public static Int32 GetFormInt(string strName, int defValue)
314
{
315
return ConvertStr.ToInt32(HttpContext.Current.Request.Form[strName], defValue);
316
}
317
318
/**//// <summary>
319
/// 获得指定Url或表单参数的int类型值, 先判断Url参数是否为缺省值, 如为True则返回表单参数的值
320
/// </summary>
321
/// <param name="strName">Url或表单参数</param>
322
/// <param name="defValue">缺省值</param>
323
/// <returns>Url或表单参数的int类型值</returns>
324
public static Int32 GetInt(string strName, int defValue)
325
{
326
if (GetQueryInt(strName, defValue) == defValue)
327
{
328
return GetFormInt(strName, defValue);
329
}
330
else
331
{
332
return GetQueryInt(strName, defValue);
333
}
334
}
335
336
/**//// <summary>
337
/// 获得指定Url参数的float类型值
338
/// </summary>
339
/// <param name="strName">Url参数</param>
340
/// <param name="defValue">缺省值</param>
341
/// <returns>Url参数的int类型值</returns>
342
public static float GetQueryFloat(string strName, float defValue)
343
{
344
return ConvertStr.ToFloat(HttpContext.Current.Request.QueryString[strName], defValue);
345
}
346
347
348
/**//// <summary>
349
/// 获得指定表单参数的float类型值
350
/// </summary>
351
/// <param name="strName">表单参数</param>
352
/// <param name="defValue">缺省值</param>
353
/// <returns>表单参数的float类型值</returns>
354
public static float GetFormFloat(string strName, float defValue)
355
{
356
return ConvertStr.ToFloat(HttpContext.Current.Request.Form[strName], defValue);
357
}
358
359
/**//// <summary>
360
/// 获得指定Url或表单参数的float类型值, 先判断Url参数是否为缺省值, 如为True则返回表单参数的值
361
/// </summary>
362
/// <param name="strName">Url或表单参数</param>
363
/// <param name="defValue">缺省值</param>
364
/// <returns>Url或表单参数的int类型值</returns>
365
public static float GetFloat(string strName, float defValue)
366
{
367
if (GetQueryFloat(strName, defValue) == defValue)
368
{
369
return GetFormFloat(strName, defValue);
370
}
371
else
372
{
373
return GetQueryFloat(strName, defValue);
374
}
375
}
376
377
/**//// <summary>
378
/// 获得当前页面客户端的IP
379
/// </summary>
380
/// <returns>当前页面客户端的IP</returns>
381
public static String GetIP()
382
{
383
String result = String.Empty;
384
385
result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
386
387
if (null == result || result == String.Empty)
388
{
389
result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
390
}
391
392
if (null == result || result == String.Empty)
393
{
394
result = HttpContext.Current.Request.UserHostAddress;
395
}
396
397
if (null == result || result == String.Empty)
398
{
399
return "0.0.0.0";
400
}
401
402
return result;
403
}
404
}
405
}

2

3

4

5

6

7



8


9

10

11

12



13


14

15

16

17

18



19

20

21

22


23

24

25

26

27



28

29

30

31


32

33

34

35

36

37



38

39



40

41

42

43

44

45

46


47

48

49

50

51



52

53

54

55



56

57

58



59

60

61

62

63

64

65

66

67


68

69

70

71

72



73

74

75

76



77

78

79

80

81

82

83


84

85

86

87

88



89

90

91

92


93

94

95

96

97



98

99

100

101


102

103

104

105

106



107



108

109

110

111



112

113



114

115

116

117

118

119

120

121


122

123

124

125

126



127



128

129

130

131



132

133



134

135

136

137

138

139

140

141


142

143

144

145

146



147

148

149

150


151

152

153

154

155

156



157

158

159

160


161

162

163

164

165

166

167



168

169



170

171

172

173

174

175

176



177

178

179

180

181

182

183


184

185

186

187

188

189



190

191

192

193

194

195

196



197

198

199

200

201



202

203

204

205

206

207

208

209


210

211

212

213

214



215

216

217

218

219


220

221

222

223

224



225

226

227

228


229

230

231

232

233

234



235

236

237

238


239

240

241

242

243

244

245



246

247



248

249

250

251

252

253

254



255

256

257

258

259

260

261


262

263

264

265

266

267



268

269



270

271

272

273



274

275

276

277

278


279

280

281

282

283

284

285



286

287



288

289

290

291



292

293

294

295

296


297

298

299

300

301

302

303



304

305

306

307


308

309

310

311

312

313

314



315

316

317

318


319

320

321

322

323

324

325



326

327



328

329

330

331



332

333

334

335

336


337

338

339

340

341

342

343



344

345

346

347

348


349

350

351

352

353

354

355



356

357

358

359


360

361

362

363

364

365

366



367

368



369

370

371

372



373

374

375

376

377


378

379

380

381

382



383

384

385

386

387

388



389

390

391

392

393



394

395

396

397

398



399

400

401

402

403

404

405
