天天看点

ThinkPHP5学习笔记(6)请求和响应

Request请求对象和Response响应对象

$_GET、$_POST、$_REQUEST、$_COOKIE

调用请求对象$request=Request::instance()

$this->request或request()->url();助手函数

input()助手函数

响应格式 json xml 模板渲染

页面跳转 重定向

$this->success $this->error $this->redirect

1

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

<code>&lt;?php</code>

<code>namespace</code> <code>app\admin\controller;</code>

<code>use</code> <code>think\Request;</code>

<code>use</code> <code>think\Controller;</code>

<code>class</code> <code>Index </code><code>extends</code> <code>Controller</code>

<code>{</code>

<code>    </code><code>public</code> <code>function</code> <code>index()</code>

<code>    </code><code>{</code>

<code>        </code><code>return</code> <code>'&lt;style type="text/css"&gt;*{ padding: 0; margin: 0; } .think_default_text{ padding: 4px 48px;} a{color:#2E5CD5;cursor: pointer;text-decoration: none} a:hover{text-decoration:underline; } body{ background: #fff; font-family: "Century Gothic","Microsoft yahei"; color: #333;font-size:18px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.6em; font-size: 42px }&lt;/style&gt;&lt;div style="padding: 24px 48px;"&gt; &lt;h1&gt;:)&lt;/h1&gt;&lt;p&gt; ThinkPHP V5&lt;br/&gt;&lt;span style="font-size:30px"&gt;十年磨一剑 - 为API开发设计的高性能框架&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:22px;"&gt;[ V5.0 版本由 &lt;a href="http://www.qiniu.com" target="qiniu"&gt;七牛云&lt;/a&gt; 独家赞助发布 ]&lt;/span&gt;&lt;/div&gt;&lt;script type="text/javascript" src="http://tajs.qq.com/stats?sId=9347272" charset="UTF-8"&gt;&lt;/script&gt;&lt;script type="text/javascript" src="http://ad.topthink.com/Public/static/client.js"&gt;&lt;/script&gt;&lt;thinkad id="ad_bd568ce7058a1091"&gt;&lt;/thinkad&gt;'</code><code>;</code>

<code>    </code><code>}</code>

<code>    </code><code>public</code> <code>function</code> <code>hello(){</code>

<code>        </code><code>//  获取请求类型</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isGet()) {</code><code>echo</code> <code>'当前为GET请求'</code><code>;}</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isPost())</code><code>echo</code> <code>'当前为POST请求'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isPut()) </code><code>echo</code> <code>'当前为PUT请求'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isDelete()) </code><code>echo</code> <code>'当前为DELETE请求'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isAjax()) </code><code>echo</code> <code>'当前为AJAX请求'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isPjax()) </code><code>echo</code> <code>'当前为PJAX请求'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isMobile()) </code><code>echo</code> <code>'当前为Mobile请求'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isHead()) </code><code>echo</code> <code>'当前为HEAD请求'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isPatch()) </code><code>echo</code> <code>'当前为PATCH请求'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isOptions()) </code><code>echo</code> <code>'当前为OPTIONS请求'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isCli()) </code><code>echo</code> <code>'当前为cli'</code><code>;</code>

<code>        </code><code>if</code><code>(Request::instance()-&gt;isCgi()) </code><code>echo</code> <code>'当前为cgi'</code><code>;</code>

<code>        </code><code>if</code><code>(request()-&gt;isGet()){</code><code>echo</code> <code>'当前为GET请求'</code><code>;};</code>

<code>        </code><code>// 获取URL信息</code>

<code>        </code><code>$request</code> <code>= Request::instance();</code>

<code>        </code><code>$request</code> <code>= request();</code>

<code>        </code><code>echo</code> <code>'domain:'</code><code>.</code><code>$request</code><code>-&gt;domain().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'file:'</code><code>.</code><code>$request</code><code>-&gt;baseFile().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'url:'</code><code>.</code><code>$request</code><code>-&gt;url().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'url with domain:'</code><code>.</code><code>$request</code><code>-&gt;url(true).</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'url without query:'</code><code>.</code><code>$request</code><code>-&gt;baseUrl().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'root:'</code><code>.</code><code>$request</code><code>-&gt;root().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'root with domain:'</code><code>.</code><code>$request</code><code>-&gt;root(true).</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'pathinfo:'</code><code>.</code><code>$request</code><code>-&gt;</code><code>pathinfo</code><code>().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'pathinfo:'</code><code>.</code><code>$request</code><code>-&gt;path().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'ext'</code><code>.</code><code>$request</code><code>-&gt;ext().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>// 设置/获取 模块/控制器/操作名称</code>

<code>        </code><code>echo</code> <code>'当前模块名称是'</code><code>.</code><code>$request</code><code>-&gt;module();</code>

<code>        </code><code>echo</code> <code>'当前控制器名称是'</code><code>.</code><code>$request</code><code>-&gt;controller();</code>

<code>        </code><code>echo</code> <code>'当前操作名称是'</code><code>.</code><code>$request</code><code>-&gt;action();</code>

<code>        </code><code>Request::instance()-&gt;module(</code><code>'module_name'</code><code>);</code>

<code>        </code><code>// 获取请求参数</code>

<code>        </code><code>echo</code> <code>'请求方法:'</code><code>.</code><code>$request</code><code>-&gt;method().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'资源类型:'</code><code>.</code><code>$request</code><code>-&gt;type().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'访问地址:'</code><code>.</code><code>$request</code><code>-&gt;ip().</code><code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>'是否Ajax请求:'</code><code>.var_export(</code><code>$request</code><code>-&gt;isAjax(),true);</code>

<code>        </code><code>echo</code> <code>'请求参数:'</code><code>;</code>

<code>        </code><code>dump(</code><code>$request</code><code>-&gt;param());</code>

<code>        </code><code>echo</code> <code>'请求参数:仅包含name'</code><code>;</code>

<code>        </code><code>dump(</code><code>$request</code><code>-&gt;only([</code><code>'name'</code><code>]));</code>

<code>        </code><code>echo</code> <code>'请求参数:排除name'</code><code>;</code>

<code>        </code><code>dump(</code><code>$request</code><code>-&gt;except([</code><code>'name'</code><code>]));</code>

<code>        </code><code>// 获取路由和调度信息</code>

<code>        </code><code>echo</code> <code>'路由信息'</code><code>;</code>

<code>        </code><code>dump(</code><code>$request</code><code>-&gt;route());</code>

<code>        </code><code>echo</code> <code>'调度信息'</code><code>;</code>

<code>        </code><code>dump(</code><code>$request</code><code>-&gt;dispatch());</code>

<code>        </code><code>// 设置请求信息</code>

<code>        </code><code>$request</code><code>-&gt;root(</code><code>'index.php'</code><code>);</code>

<code>        </code><code>$request</code><code>-&gt;</code><code>pathinfo</code><code>(</code><code>'admin/index/hello'</code><code>);</code>

<code>    </code><code>public</code> <code>function</code> <code>hello2(){</code>

<code>        </code><code>$data</code> <code>= [</code><code>'name'</code><code>=&gt;</code><code>'thinkphp'</code><code>,</code><code>'status'</code><code>=&gt;1];</code>

<code>        </code><code>// 浏览器安装json插件</code>

<code>        </code><code>return</code> <code>json(</code><code>$data</code><code>);</code>

<code>        </code><code>// return xml($data);</code>

<code>        </code><code>// $this-&gt;assign('name','渲染 模板');</code>

<code>        </code><code>// return $this-&gt;fetch();</code>

<code>    </code><code>// hello3</code>

<code>    </code><code>// 如果没有 extends Controller 就写:</code>

<code>    </code><code>// use \traits\controller\Jump;</code>

<code>    </code><code>public</code> <code>function</code> <code>hello3(){</code>

<code>        </code><code>$this</code><code>-&gt;success(</code><code>'正常的页面跳转'</code><code>,</code><code>'hello'</code><code>);</code>

<code>        </code><code>$this</code><code>-&gt;error(</code><code>'错误的页面跳转'</code><code>,</code><code>'hello2'</code><code>);</code>

<code>        </code><code>$this</code><code>-&gt;redirect(</code><code>'http://tp-shop.cn'</code><code>);</code>

<code>    </code><code>public</code> <code>function</code> <code>hello4(){</code>

<code>        </code><code>// 检测变量是否设置</code>

<code>        </code><code>Request::instance()-&gt;has(</code><code>'id'</code><code>,</code><code>'get'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;has(</code><code>'name'</code><code>,</code><code>'post'</code><code>);</code>

<code>        </code><code>input(</code><code>'?get.id'</code><code>);</code>

<code>        </code><code>input(</code><code>'?post.name'</code><code>);</code>

<code>        </code><code>// 变量获取</code>

<code>        </code><code>echo</code> <code>$request</code><code>-&gt;bind(</code><code>'user_name'</code><code>,</code><code>'张三'</code><code>);</code>

<code>        </code><code>echo</code> <code>$request</code><code>-&gt;user_name;</code>

<code>        </code><code>print_r(</code><code>$request</code><code>-&gt;param());</code>

<code>        </code><code>echo</code> <code>'&lt;br/&gt;'</code><code>;</code>

<code>        </code><code>echo</code> <code>$request</code><code>-&gt;param(</code><code>'name'</code><code>);</code>

<code>        </code><code>print_r(input());</code>

<code>        </code><code>echo</code> <code>input(</code><code>'name'</code><code>);</code>

<code>        </code><code>print_r(Request::instance()-&gt;param(false));</code>

<code>        </code><code>print_r(Request::instance()-&gt;param(true));</code>

<code>        </code><code>echo</code> <code>(input(</code><code>'param.name'</code><code>));</code>

<code>        </code><code>print_r (input(</code><code>'param.'</code><code>));</code>

<code>         </code><code>// 或</code>

<code>        </code><code>echo</code> <code>(input(</code><code>'name'</code><code>));</code>

<code>        </code><code>print_r(</code><code>''</code><code>);</code>

<code>        </code><code>// 获取GET变量</code>

<code>        </code><code>echo</code> <code>(Request::instance()-&gt;get(</code><code>'id'</code><code>));</code>

<code>        </code><code>echo</code> <code>(Request::instance()-&gt;get(</code><code>'name'</code><code>));</code>

<code>        </code><code>print_r(Request::instance()-&gt;get());    </code><code>// 获取经过过滤的</code>

<code>        </code><code>print_r(Request::instance()-&gt;get(false));</code><code>//获取原始变量</code>

<code>        </code><code>// 或</code>

<code>        </code><code>echo</code> <code>input(</code><code>'get.id'</code><code>);</code>

<code>        </code><code>echo</code> <code>input(</code><code>'get.name'</code><code>);</code>

<code>        </code><code>print_r(input(</code><code>'get.'</code><code>));</code>

<code>        </code><code>// 获取POST变量</code>

<code>        </code><code>echo</code> <code>(Request::instance()-&gt;post(</code><code>'name'</code><code>));</code>

<code>        </code><code>print_r(Request::instance()-&gt;post());</code>

<code>        </code><code>print_r(Request::instance()-&gt;post(false));</code>

<code>        </code><code>echo</code> <code>(input(</code><code>'post.name'</code><code>));</code>

<code>        </code><code>print_r(</code><code>'post.'</code><code>);</code>

<code>        </code><code>// 获取PUT变量</code>

<code>        </code><code>echo</code> <code>(Request::instance()-&gt;put(</code><code>'name'</code><code>));</code>

<code>        </code><code>print_r (Request::instance()-&gt;put());</code>

<code>        </code><code>print_r (Request::instance()-&gt;put(false));</code>

<code>        </code><code>echo</code> <code>(input(</code><code>'put.name'</code><code>));</code>

<code>        </code><code>print_r(input(</code><code>'put.'</code><code>));</code>

<code>        </code><code>//  获取REQUEST变量</code>

<code>        </code><code>echo</code> <code>(Request::instance()-&gt;request(</code><code>'id'</code><code>));</code>

<code>        </code><code>print_r(Request::instance()-&gt;request());</code>

<code>        </code><code>print_r(Request::instance()-&gt;request(false));</code>

<code>        </code><code>echo</code> <code>(input(</code><code>'request.id'</code><code>));</code>

<code>        </code><code>print_r (input(</code><code>'request.'</code><code>));</code>

<code>        </code><code>// 获取SERVER变量</code>

<code>        </code><code>echo</code> <code>(Request::instance()-&gt;server(</code><code>'PHP_SELF'</code><code>));</code>

<code>        </code><code>print_r(Request::instance()-&gt;server());</code>

<code>        </code><code>echo</code> <code>(input(</code><code>'server.PHP_SELF'</code><code>));</code>

<code>        </code><code>print_r(input(</code><code>'server.'</code><code>));</code>

<code>        </code><code>//获取SESSION变量</code>

<code>        </code><code>echo</code> <code>(Request::instance()-&gt;session(</code><code>'user_id'</code><code>));</code>

<code>        </code><code>print_r(Request::instance()-&gt;session());</code>

<code>        </code><code>echo</code> <code>(input(</code><code>'session.user_id'</code><code>));</code>

<code>        </code><code>print_r(input(</code><code>'session.'</code><code>));</code>

<code>        </code><code>// 获取Cookie变量</code>

<code>        </code><code>echo</code> <code>(Request::instance()-&gt;cookie(</code><code>'user_id'</code><code>));</code>

<code>        </code><code>print_r(Request::instance()-&gt;cookie());</code>

<code>        </code><code>echo</code> <code>(input(</code><code>'cookie.user_id'</code><code>));</code>

<code>        </code><code>print_r(input(</code><code>'cookie.'</code><code>));</code>

<code>        </code><code>// 变量过滤</code>

<code>        </code><code>// 在application/config.php中设置</code>

<code>        </code><code>// 'default_filter'=&gt;'htmlspecialchars';</code>

<code>        </code><code>Request::instance()-&gt;filter(</code><code>'htmlspecialchars'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;filter([</code><code>'strip_tags'</code><code>,</code><code>'htmlspecialchars'</code><code>]);</code>

<code>        </code><code>// 在添加变量的时候添加过滤方法</code>

<code>        </code><code>Request::instance()-&gt;get(</code><code>'name'</code><code>,</code><code>''</code><code>,</code><code>'htmlspecialchars'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;param(</code><code>'username'</code><code>,</code><code>''</code><code>,</code><code>'strip_tags'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;post(</code><code>'name'</code><code>,</code><code>''</code><code>,</code><code>'org\Filter::safeHtml'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;param(</code><code>'username'</code><code>,</code><code>''</code><code>,</code><code>'strip_tags,strtolower'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;post(</code><code>'email'</code><code>,</code><code>''</code><code>,</code><code>'FILTER_VALIDATE_EMAIL'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;post(</code><code>'email'</code><code>,</code><code>''</code><code>,</code><code>'email'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;get(</code><code>'name'</code><code>,</code><code>''</code><code>,false);</code>

<code>        </code><code>// 获取部分变量</code>

<code>        </code><code>Request::instance()-&gt;only(</code><code>'id,name'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;only([</code><code>'id'</code><code>,</code><code>'name'</code><code>]);</code>

<code>        </code><code>Request::instance()-&gt;only([</code><code>'id'</code><code>,</code><code>'name'</code><code>],</code><code>'get'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;only([</code><code>'id'</code><code>,</code><code>'name'</code><code>],</code><code>'post'</code><code>);</code>

<code>        </code><code>// 排除部分变量</code>

<code>        </code><code>Request::instance()-&gt;except(</code><code>'id,name'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;except([</code><code>'id'</code><code>,</code><code>'name'</code><code>]);</code>

<code>        </code><code>Request::instance()-&gt;except([</code><code>'id'</code><code>,</code><code>'name'</code><code>],</code><code>'get'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;except([</code><code>'id'</code><code>,</code><code>'name'</code><code>],</code><code>'post'</code><code>);</code>

<code>        </code><code>//  变量修饰符</code>

<code>        </code><code>input(</code><code>'get.id/d'</code><code>);</code>

<code>        </code><code>input(</code><code>'get.name/s'</code><code>);</code>

<code>        </code><code>input(</code><code>'get.ids/a'</code><code>);</code>

<code>        </code><code>Request::instance()-&gt;get(</code><code>'id/d'</code><code>);</code>

<code>    </code><code>public</code> <code>function</code> <code>hello5(){</code>

<code>        </code><code>Request::instance()-&gt;get([</code><code>'id'</code><code>=&gt;10]);</code>

<code>        </code><code>Request::instance()-&gt;post([</code><code>'name'</code><code>=&gt;</code><code>'thinkphp'</code><code>]);</code>

<code>        </code><code>// 尽量避免直接修改$_GET,$_POST,也不能直接修改param变量,下面写法无效</code>

<code>        </code><code>// Request::instance()-&gt;param(['id'=&gt;10]);</code>

<code>}               </code>     本文转自phpervip 51CTO博客,原文链接:http://blog.51cto.com/phpervip/1931987,如需转载请自行联系原作者

<code></code>