DOUG LLOYD:有时 当我们编程 我们做事如此普遍,所以 频繁,所以很多人 照此idea--或相同 的事情,它有一个名字。 MVC是只有一个这样的东西。 这就是所谓的一个编程范例。 这有点像一个最佳实践 已蒸馏向下 人们试图做一些事情。 在这种情况下,实现 的网页的系统 该用户与交互 在一个更复杂的网站。 而且它这样做通常是 我们建议作为标准 其他人可能会喜欢跟随, 并有一个非常具体的方法 一个可以遵循这种模式。 所以,MVC是一个范例,并且其原因 我们用它抽象掉的细节 从用户。 有些东西用户 并不真正需要看到的。 他们只是想有 良好的用户体验, 我们并不需要让他们 访问每一个文件,该文件 存在我们的Web服务器上,也许吧。 可能有一些文件,这些文件只是 用来增强用户体验, 所以我们可以抽象那些离开。 排序我们可以隐藏他们, 用户不能与他们合作, 但是我们pages--我们pages-- 知道如何对付他们 并呼吁他们或者需要, 希望他们,或者类似的东西。 主要动机 对于MVC是数据安全性, 因为MVC通常出现在 使用数据库的情况下。 特别是我们 要防止用户 从直接影响的数据库。 我们只希望间接地做到这一点, 通过我们的过滤。 或者,确保一切正常通过 我们做错误检查的一点点 或之前安全打样我们 它发送给数据库,其中 事情会出错,也许是 真的错了,如果我们不小心。 所以MVC表示模型视图控制器。 什么是所有这些意味着什么? 基本上,模型是你的数据库。 这其中所有的 为您的网站的重要数据 lives--用户名,登录密码。 你可以更新它,提到它, 几乎所有这样的。 你会查询数据库,你问 从数据库中的信息。 这是该型号 - 所有的 数据在您的网站的生活。 该观点是有点像 用户体验。 这之后,他们看到的页面 他们所需的信息。 所以也许他们提交 他们登录information-- 他们会做一个控制器, 我们将在第二讲。 他们也许递交 登录信息, 和数据库查询。 信息请求和 从数据库中抽取。 然后,一旦用户的登录 在,他们看到自己的主页。 这是一个观点,好不好? 然后,控制器是什么 叫你的站点的业务逻辑。 而业务逻辑 这些术语的一个 是那种空洞无washy--喜欢, 是什么商业逻辑是什么意思? 基本上你的业务 逻辑是你的PHP。 您的用户不需要 直接看到你的PHP, 但你的PHP大概是怎么回事 到发出请求到数据库。 因此用户输入 在一个视图的信息, 其中将集成控制器。 就像,他们会输入到表格。 如何这种形式的进程 信息是控制器。 这就是PHP这实际上 发出请求到模型中。 然后将模型给出 信息到视图, 这使得它给用户, 也许是最好的显示如下。 因此,我们在这里。 下面是我们的左边,我们的模型 视图控制器模式安排。 它是如何工作的? 该user-- us--使 请求到控制器。 我们提交资料 如由HTTP形式。 在此基础上,控制器的 工作就是要确保 什么给用户不是 的东西,会损害模型。 这样一来,控制器会 确保一切正常。 这将非常仔细地看。 如果有任何错误,它会停止的事情 因此用户无法进入该模型。 不过,假设一切都 OK,这是一个有效的查询, 控制器将查询型号 - 它会要求它提供的信息。 该模型将提供 信息的页面,这是一个观点, 它会传送它的 方式,然后在视图 将填充信息 从模型请求。 因此,举例来说,如果我们谈论 有关登录到你的Facebook页面, 例如。 该视图将数据 说出来的模型是 指的是你的朋友和新闻 饲料或类似的东西,对吧? 但是,你不会看到别人的。 你会getting--所以 您提交的查询, 您登录到该型号 - 借口 我,你登录到该页面。 控制器采用 您的登录信息 提出请求的模型,使 确保你是你说你是谁。 该模型的想,好,是的, 你是你说你是谁, 所以让我给你的新闻源。 我给你的原始数据 你的新闻源的观点, 然后在视图使它 漂亮,处理它的方式 我们已经习惯了,显示 该信息提供给用户。 请注意,连接这 不存在这个图上。 有没有直接的关系 你和模型之间。 总是有这样的缓冲 在输入侧的控制器, 并有的一个缓冲 查看输出侧。 也许你是个好 的人,所以也许你 不会做的任何损害 模型,但也许你不是。 或者,也许有别人谁的 恶意用户谁也说不定 想破坏你的数据库,也许 从数据库中删除一切, 这可能是非常昂贵的。 很显然,有用户数据is-- 还有价值有用户数据。 因此,如果我们没有把这个缓冲区 在用户和数据库 - 之间区 在用户和型号 - 事 可能不会很顺利我们。 所以重要的是要 有这种模式在哪里 用户可以与数据库进行交互, 肯定的,但是他们必须要经过美国 去做吧。 而这基本上与MVC的想法。 它试图实现数据的安全性。 它试图保护模式 从无意或有意 恶意用户。 所以会发生什么,当 我们应用这种模式? 好了,我们分离数据 从我们的website--要求 从逻辑的型号 - 实现我们网站的 functionality--的controller--和 从单纯的美学和页面 构成模板我们 用户experience--视图。 这是什么意思? 嗯,这意味着你可以 到用户观看可见。 您可以隐藏模型了。 而controllers--用户 不能或许直接操作。 他们并不需要访问你的PHP代码。 他们只需要看到的一种形式 在那里他们可以在输入的东西。 所以,也许形式 的图,该控制器 是的形式提交到PHP中, 控制器使得一个查询模式, 该模型提供了更多的信息, 到不同的观点, 为您显示的信息。 你的程序可以访问 所有的业务逻辑, 但你的用户不能直接 访问你的业务逻辑。 和一个特别,或许, 这明显说明 是你曾经收到 一个403 Forbidden错误。 你有没有去到Web 页面,看到403禁止? 这有点像404找不到。 403禁止意味着你试图访问 一个页面,你就不能访问。 也许这个站点 使用MVC分离 遁形其业务逻辑 需要存在于服务器上,以便 为页面的工作,但不 希望你能直接访问它。 所以,你可能会得到一个403 Forbidden错误。 它甚至不会无所谓 如果你登录。 任何用户都无法触及这个点PHP文件。 他们只能碰 这一次,这埃德蒙顿 一个他们可以touch--或许 可与锁定的文件交互 更间接地比用户。 所以,我们有时会看到这个权限 错误,这403禁止。 我们怎么改变权限,因此 这东西可以或不可以看到? 当我们这样做通常是使用一个 Linux命令称为chmod-- C-H-MOD。 要做到这一点,该格式是相当 simple--文件模式,权限, 和任何你想要的文件 以应用更改。 所以,也许你会看到什么 像this--搭配chmod 600 helpers.php。 或者,也许你会看到this-- CHMOD 加X中包括目录。 当时这是否意味着有关系吗? 因此,有两种不同的方式 该权限通常是 应用使用chmod。 第一个被称为 八进制数的方法。 这通常适用权限 以三种不同的类别 的用户在同一时间。 所以CHMOD 711文件将允许你 正确的读,写和执行 您的文件,将使 others--专 您的组和天下 - 仅执行该文件。 这就是这样的语句。 第一个数字有 是你可以做什么, 第二个数字是 你的组可以做, 第三个是这个世界能做到。 如果谁的访问您的 页面,这就是世界。 这些是什么号码 实际上转化为有关系吗? 因此,这些基本上翻译是这样的。 如果权限 零,什么都可能发生。 如果它是一个,你可以执行 file--如果这是你的许可。 如果是二,你可以写文件 但你不能做任何事情。 如果是三,你 可以写和执行。 等等,你可以看到。 七意味着你可以做任何事情。 那么,为什么这些所谓的八进制数? 好吧,如果你想想看, 这里就像不一yeses, 如果我们想想他们 红与绿盒, 也许这使得它一点点清晰。 但是,如果我们考虑一下那些红色方框 作为零和绿框为的, 这些实际上只是套 二进制数的,对不对? 000转换为十进制0; 001, 小数1; 010是十进制2,依此类推。 因此,我们称这些八进制 数字,因为有 八种不同的可能性。 有八个 不同的,如果我们的数字 谈约三 information--的位 读位,写入 位和执行位。 所以,现在你可以讲二进制, 十进制,十六进制和八进制。 所以,你知道如何与沟通 在四个不同的数量的计算机 系统,所以这是很酷。 所以,除了八进制 许可计划,有 也象征权限 方案中,这是稍微不同 通常用于最好的应用或 除去全线的权限。 因此,文件模式加X文件里 可能会添加合适的 执行所有三个 users--类别 你自己,你的团队,和世界。 那加是增加的部分。 执行权,这是在x。 而事实上,它适用于所有 三组用户将是一个。 所以this--加x--很可能会 是完全一样的搭配chmod 711 文件,因为如果你回去 看八进制数计划, 那些乱七八糟给我们 权利要执行的文件。 因此,这很可能是相同的。 你可以使用这个 参考指南是什么 在不同的东西 象征性的文件模式-ING结构。 绿色的项目在这里会 在所有的绿色的例子 一秒钟前了。 蓝色将是蓝色的。 橙色将是橙色。 所以,你可以的东西应用到您的 基,对他人,对用户来说, 还是给大家。 你可以给他们读, 写和执行权限, 您可以添加或删除 或分配完全是一个集 采用这种模式的权限。 我们如何检查什么 文件权限方案是? 在我们改变它,它的 可能是很好的真正了解 什么是文件权限。 要做到这一点的方法之一是运行ls 只是调整它一点点。 所以,如果我输入ls冲L-- 这是一个小写的L--也许 我会看到这样的事情。 它看起来有点神秘,但 我们真正关心的部分 在左边那边的东西。 这实际上指定 文件权限方案。 你可能会说,因为它是 得到的r,W的,而x的穿插。 这些第一three-- 忽略第一个 一秒钟,这 我们将双回。 那些前三后 所述first--所以第二, 第三和第四字符 该10个字符的字符串的 是你拥有的权限。 因此很明显,我可以读, 写和执行PHP。 我可以读,写和 执行PHP Webdev的, 我可以读取和写入test.php的。 我的小组可以做到这一点。 因此,显然与PHP 和PHP Webdev的目录, 我的团队可以写 他们,但没有别的。 而世界也无能为力。 因此,这些文件是不 公开访问 如果我试着 访问他们,我不是 运行Apache,使他们可以访问, 然后,我会得到一个403错误。 这是一个失败。 我试图访问一个文件,但我 无权这样做。 什么是第一个字符? 那么,你或许可以推断 这里说的D的参考目录 而仪表板指 所谓的“常规文件。” 也许你当你已经看到了这个 试图删除使用RM文件。 你见过的神秘邮件 “删除普通文件” - 在这种情况下, 这将会是test.php的。 常规文件只是一些 这不是一个目录。 有一对夫妇他人 在这里,但通常你 去看看德公司的目录 并没有为第一要素。 但是,这真的一切就是这么简单。 你可以查看文件 使用LS几许升的权限, 你可以使用chmod更改。 当然,使用these-- 更改权限 执行本MVC范例 保护数据在您的网站 并不允许用户 访问一切, 但只有东西,他们需要 为了访问您的网页 工作,你希望它的工作方式。 我是道格·劳埃德。 这是CS50。