# 请求与输入
### 基本输入
您可以使用一些简单的方法访问所有用户输入。使用`Input`外观时,您无需担心请求的HTTP动词,因为对所有动词的输入方式都是相同的。全局`input`[帮助器函数](https://octobercms.com/docs/services/helpers)是的别名`Input::get`。
#### 检索输入值
~~~
$name = Input::get('name');
~~~
#### 如果输入值不存在,则检索默认值
~~~
$name = Input::get('name', 'Sally');
~~~
#### 确定是否存在输入值
~~~
if (Input::has('name')) {
//
}
~~~
#### 获取请求的所有输入
~~~
$input = Input::all();
~~~
#### 仅获取部分请求输入
~~~
$input = Input::only('username', 'password');
$input = Input::except('credit_card');
~~~
当使用带有“数组”输入的表单时,可以使用点符号来访问数组:
~~~
$input = Input::get('products.0.name');
~~~
> **注意:**某些JavaScript库(例如Backbone)可能会将输入作为JSON发送到应用程序。您可以像平常一样通过访问此数据`Input::get`。
### [](https://octobercms.com/docs/services/request-input#cookies)饼干
默认情况下,十月份创建的所有cookie均会加密并使用身份验证代码签名,这意味着如果客户端更改了它们,它们将被视为无效。`cookie.unencryptedCookies`配置密钥中命名的Cookies将不会被加密。
> **注意:**Cookie是使用APP\_KEY加密的,因此,如果客户端知道APP\_KEY,则有可能由客户端制作Cookie。如果您的应用程序的加密密钥在恶意方的手中,则该方可以使用该加密密钥来制作Cookie值,并利用继承给PHP对象序列化/反序列化的漏洞,例如在应用程序内调用任意类方法。为了缓解这种情况,请在怀疑您的APP\_KEY受到威胁时始终旋转它,并确保在使用前始终确保从cookie接收到的数据与您期望的一样。
#### 检索Cookie值
~~~
$value = Cookie::get('name');
~~~
#### 将新的Cookie附加到响应
~~~
$response = Response::make('Hello World');
$response->withCookie(Cookie::make('name', 'value', $minutes));
~~~
#### 为下一个响应排队一个cookie
如果要在创建响应之前设置cookie,请使用`Cookie::queue`方法。Cookie将自动附加到您的应用程序的最终响应中。
~~~
Cookie::queue($name, $value, $minutes);
~~~
#### 创建一个永久存在的cookie
~~~
$cookie = Cookie::forever('name', 'value');
~~~
#### 未经加密处理cookie
如果您不希望对某些Cookie进行加密或解密,则可以在配置中指定它们。例如,当您想通过Cookie将数据从前端传递到服务器端后端,反之亦然时,这很有用。
将不应加密或解密的cookie名称添加到配置文件中的`unencryptedCookies`参数`config/cookie.php`。
~~~
/*
|--------------------------------------------------------------------------
| Cookies without encryption
|--------------------------------------------------------------------------
|
| OctoberCMS encrypts/decrypts cookies by default. You can specify cookies
| that should not be encrypted or decrypted here. This is useful, for
| example, when you want to pass data from frontend to server side backend
| via cookies, and vice versa.
|
*/
'unencryptedCookies' => [
'my_cookie',
],
~~~
另外,对于插件,您也可以从`Plugin.php`插件中动态添加这些插件。
~~~
public function boot()
{
Config::push('cookie.unencryptedCookies', "my_cookie");
}
~~~
### [](https://octobercms.com/docs/services/request-input#old-input)旧输入
您可能需要保留一个请求的输入,直到下一个请求。例如,检查表单中的验证错误后,您可能需要重新填充表单。
#### 将输入闪烁到会话
~~~
Input::flash();
~~~
#### 仅将部分输入闪烁
~~~
Input::flashOnly('username', 'email');
Input::flashExcept('password');
~~~
由于您通常希望将输入的Flash与重定向到上一页相关联,因此您可以轻松地将输入的Flash链接到重定向。
~~~
return Redirect::to('form')->withInput();
return Redirect::to('form')->withInput(Input::except('password'));
~~~
> **注意:**您可以使用[Session](https://octobercms.com/docs/services/session)类跨请求刷新其他数据。
#### 检索旧数据
~~~
Input::old('username');
~~~
### [](https://octobercms.com/docs/services/request-input#files)档案
#### 检索上传的文件
~~~
$file = Input::file('photo');
~~~
#### 确定是否上传了文件
~~~
if (Input::hasFile('photo')) {
//
}
~~~
该`file`方法返回的对象是`Symfony\Component\HttpFoundation\File\UploadedFile`该类的实例,该类扩展了PHP`SplFileInfo`类并提供了多种与文件进行交互的方法。
#### 确定上传的文件是否有效
~~~
if (Input::file('photo')->isValid()) {
//
}
~~~
#### 移动上传的文件
~~~
Input::file('photo')->move($destinationPath);
Input::file('photo')->move($destinationPath, $fileName);
~~~
#### 检索上传文件的路径
~~~
$path = Input::file('photo')->getRealPath();
~~~
#### 检索上传文件的原始名称
~~~
$name = Input::file('photo')->getClientOriginalName();
~~~
#### 检索上传文件的扩展名
~~~
$extension = Input::file('photo')->getClientOriginalExtension();
~~~
#### 检索上传文件的大小
~~~
$size = Input::file('photo')->getSize();
~~~
#### 检索上传文件的MIME类型
~~~
$mime = Input::file('photo')->getMimeType();
~~~
### [](https://octobercms.com/docs/services/request-input#request-information)索取资料
本`Request`类提供了检查您的应用程序的HTTP请求许多方法和扩展`Symfony\Component\HttpFoundation\Request`类。这儿是一些精彩片段。
#### 检索请求URI
~~~
$uri = Request::path();
~~~
#### 检索请求方法
~~~
$method = Request::method();
if (Request::isMethod('post')) {
//
}
~~~
#### 确定请求路径是否与模式匹配
~~~
if (Request::is('admin/*')) {
//
}
~~~
#### 获取请求URL
~~~
$url = Request::url();
~~~
#### 检索请求URI段
~~~
$segment = Request::segment(1);
~~~
#### 检索请求标头
~~~
$value = Request::header('Content-Type');
~~~
#### 从$ \_SERVER检索值
~~~
$value = Request::server('PATH_INFO');
~~~
#### 确定请求是否通过HTTPS
~~~
if (Request::secure()) {
//
}
~~~
#### 确定请求是否正在使用AJAX
~~~
if (Request::ajax()) {
//
}
~~~
#### 确定请求是否具有JSON内容类型
~~~
if (Request::isJson()) {
//
}
~~~
#### 确定请求是否要求JSON
~~~
if (Request::wantsJson()) {
//
}
~~~
#### 检查请求的响应格式
该`Request::format`方法将基于HTTP Accept标头返回请求的响应格式:
~~~
if (Request::format() == 'json') {
//
}
~~~
- 基本说明
- 基本操作
- October cms 安装
- 后台控制器路径
- 图标
- 获取安装网上的插件/主题
- 插件构造器使用
- 定时任务
- October后台控制器
- vscode编辑器
- ajax操作
- 使用
- ajax更新组件
- ajax属性API
- JavaScript API
- ajax综合使用
- 主题
- 多语言主题
- 安装市场主题
- 主题程序处理
- 主题
- 页面
- 部件
- 布局
- 内容
- 组件
- 媒体
- 主题表单操作
- 表单使用
- 表单后端程序处理
- 插件
- 自定义插件
- 插件说明
- 插件导航条
- 插件数据库设置
- 插件的设置管理
- 插件的配置文件config
- 组件
- app服务
- app容器
- 扩展行为
- 缓存
- Collection类
- Lazy Collections
- Collection方法
- 助手函数
- 数组助手函数
- 路径助手函数
- 玄乐助手函数
- 其他助手函数
- 错误与记录
- 事件处理
- HTML页面
- 文件与目录操作
- 散列和加密
- 邮件
- 邮件内容
- 邮件发送
- 分页
- 模板解析器
- 动态解析器语法
- 队列消息
- 请求与输入
- 响应
- 视图
- 路由器
- 配置
- 验证操作
- 处理错误消息
- 错误消息与视图
- 可用的验证规则
- 有条件的验证规则
- 验证数组
- 错误消息
- 自定义验证规则
- 模型操作
- 定义模型与其属性
- 检索模型
- 插入与更新
- 删除模型
- 查询范围
- 事件操作
- 关联操作
- 定义关系
- 关系类型
- 多肽关系
- 关系查询
- 渴望加载
- 插入模型
- 数据库操作
- 基本用法
- 数据表结构
- 查询连贯操作
- 结果检索
- select子句
- 插入更新
- where子句
- 排序,分组,限制和偏移
- 文件附件
- Collection操作
- 属性操作
- 系列化json
- 数据库属性
- 数据库行为
- 控制器
- 后台控制器定义
- 后台页面
- 后台组件
- 后台表单
- 表单组件
- 表单视图
- 表单行为
- 后台列表
- 列表行为
- 列表过滤器
- 可用列类型
- 关系行为
- 关系行为类型
- 扩展关系行为
- 列表排序操作
- 导入导出操作
- 用于与权限
- corlate模板修改
- 修改顶部导航
- laravel问题
- 控制器不存在
- 控制器
- 路由组
- laravel笔记
- laravel 安装
- 伪静态配置
- 依赖注入 & 控制器
- 中间件
- 路由文件
- 视图