1 00:00:00,000 --> 00:00:05,177 2 00:00:05,177 --> 00:00:07,010 DOUG LLOYD:有时 当我们编程 3 00:00:07,010 --> 00:00:10,620 我们做事如此普遍,所以 频繁,所以很多人 4 00:00:10,620 --> 00:00:14,920 照此idea--或相同 的事情,它有一个名字。 5 00:00:14,920 --> 00:00:16,780 MVC是只有一个这样的东西。 6 00:00:16,780 --> 00:00:19,130 这就是所谓的一个编程范例。 7 00:00:19,130 --> 00:00:21,830 这有点像一个最佳实践 已蒸馏向下 8 00:00:21,830 --> 00:00:24,100 人们试图做一些事情。 9 00:00:24,100 --> 00:00:26,770 在这种情况下,实现 的网页的系统 10 00:00:26,770 --> 00:00:29,700 该用户与交互 在一个更复杂的网站。 11 00:00:29,700 --> 00:00:32,430 而且它这样做通常是 我们建议作为标准 12 00:00:32,430 --> 00:00:35,721 其他人可能会喜欢跟随, 并有一个非常具体的方法 13 00:00:35,721 --> 00:00:37,500 一个可以遵循这种模式。 14 00:00:37,500 --> 00:00:42,580 >> 所以,MVC是一个范例,并且其原因 我们用它抽象掉的细节 15 00:00:42,580 --> 00:00:43,560 从用户。 16 00:00:43,560 --> 00:00:45,700 有些东西用户 并不真正需要看到的。 17 00:00:45,700 --> 00:00:47,616 他们只是想有 良好的用户体验, 18 00:00:47,616 --> 00:00:50,590 我们并不需要让他们 访问每一个文件,该文件 19 00:00:50,590 --> 00:00:52,750 存在我们的Web服务器上,也许吧。 20 00:00:52,750 --> 00:00:56,160 可能有一些文件,这些文件只是 用来增强用户体验, 21 00:00:56,160 --> 00:00:57,644 所以我们可以抽象那些离开。 22 00:00:57,644 --> 00:01:00,060 排序我们可以隐藏他们, 用户不能与他们合作, 23 00:01:00,060 --> 00:01:02,480 但是我们pages--我们pages-- 知道如何对付他们 24 00:01:02,480 --> 00:01:05,840 并呼吁他们或者需要, 希望他们,或者类似的东西。 25 00:01:05,840 --> 00:01:09,130 >> 主要动机 对于MVC是数据安全性, 26 00:01:09,130 --> 00:01:12,415 因为MVC通常出现在 使用数据库的情况下。 27 00:01:12,415 --> 00:01:14,480 特别是我们 要防止用户 28 00:01:14,480 --> 00:01:17,900 从直接影响的数据库。 29 00:01:17,900 --> 00:01:21,520 我们只希望间接地做到这一点, 通过我们的过滤。 30 00:01:21,520 --> 00:01:24,780 或者,确保一切正常通过 我们做错误检查的一点点 31 00:01:24,780 --> 00:01:27,930 或之前安全打样我们 它发送给数据库,其中 32 00:01:27,930 --> 00:01:32,850 事情会出错,也许是 真的错了,如果我们不小心。 33 00:01:32,850 --> 00:01:35,630 >> 所以MVC表示模型视图控制器。 34 00:01:35,630 --> 00:01:36,870 什么是所有这些意味着什么? 35 00:01:36,870 --> 00:01:38,742 基本上,模型是你的数据库。 36 00:01:38,742 --> 00:01:40,700 这其中所有的 为您的网站的重要数据 37 00:01:40,700 --> 00:01:42,790 lives--用户名,登录密码。 38 00:01:42,790 --> 00:01:46,400 你可以更新它,提到它, 几乎所有这样的。 39 00:01:46,400 --> 00:01:49,490 你会查询数据库,你问 从数据库中的信息。 40 00:01:49,490 --> 00:01:54,810 这是该型号 - 所有的 数据在您的网站的生活。 41 00:01:54,810 --> 00:01:57,930 >> 该观点是有点像 用户体验。 42 00:01:57,930 --> 00:02:02,090 这之后,他们看到的页面 他们所需的信息。 43 00:02:02,090 --> 00:02:04,280 所以也许他们提交 他们登录information-- 44 00:02:04,280 --> 00:02:07,280 他们会做一个控制器, 我们将在第二讲。 45 00:02:07,280 --> 00:02:10,020 他们也许递交 登录信息, 46 00:02:10,020 --> 00:02:12,320 和数据库查询。 47 00:02:12,320 --> 00:02:16,489 信息请求和 从数据库中抽取。 48 00:02:16,489 --> 00:02:19,030 然后,一旦用户的登录 在,他们看到自己的主页。 49 00:02:19,030 --> 00:02:21,470 这是一个观点,好不好? 50 00:02:21,470 --> 00:02:24,655 >> 然后,控制器是什么 叫你的站点的业务逻辑。 51 00:02:24,655 --> 00:02:26,530 而业务逻辑 这些术语的一个 52 00:02:26,530 --> 00:02:30,900 是那种空洞无washy--喜欢, 是什么商业逻辑是什么意思? 53 00:02:30,900 --> 00:02:33,650 基本上你的业务 逻辑是你的PHP。 54 00:02:33,650 --> 00:02:36,260 您的用户不需要 直接看到你的PHP, 55 00:02:36,260 --> 00:02:40,600 但你的PHP大概是怎么回事 到发出请求到数据库。 56 00:02:40,600 --> 00:02:43,310 >> 因此用户输入 在一个视图的信息, 57 00:02:43,310 --> 00:02:46,120 其中将集成控制器。 58 00:02:46,120 --> 00:02:48,130 就像,他们会输入到表格。 59 00:02:48,130 --> 00:02:50,910 如何这种形式的进程 信息是控制器。 60 00:02:50,910 --> 00:02:55,159 这就是PHP这实际上 发出请求到模型中。 61 00:02:55,159 --> 00:02:57,200 然后将模型给出 信息到视图, 62 00:02:57,200 --> 00:03:00,540 这使得它给用户, 也许是最好的显示如下。 63 00:03:00,540 --> 00:03:01,240 >> 因此,我们在这里。 64 00:03:01,240 --> 00:03:05,760 下面是我们的左边,我们的模型 视图控制器模式安排。 65 00:03:05,760 --> 00:03:06,810 它是如何工作的? 66 00:03:06,810 --> 00:03:09,460 >> 该user-- us--使 请求到控制器。 67 00:03:09,460 --> 00:03:13,700 我们提交资料 如由HTTP形式。 68 00:03:13,700 --> 00:03:16,080 在此基础上,控制器的 工作就是要确保 69 00:03:16,080 --> 00:03:20,124 什么给用户不是 的东西,会损害模型。 70 00:03:20,124 --> 00:03:22,790 这样一来,控制器会 确保一切正常。 71 00:03:22,790 --> 00:03:23,720 这将非常仔细地看。 72 00:03:23,720 --> 00:03:27,030 如果有任何错误,它会停止的事情 因此用户无法进入该模型。 73 00:03:27,030 --> 00:03:29,470 >> 不过,假设一切都 OK,这是一个有效的查询, 74 00:03:29,470 --> 00:03:33,660 控制器将查询型号 - 它会要求它提供的信息。 75 00:03:33,660 --> 00:03:36,490 该模型将提供 信息的页面,这是一个观点, 76 00:03:36,490 --> 00:03:39,150 它会传送它的 方式,然后在视图 77 00:03:39,150 --> 00:03:42,620 将填充信息 从模型请求。 78 00:03:42,620 --> 00:03:46,110 >> 因此,举例来说,如果我们谈论 有关登录到你的Facebook页面, 79 00:03:46,110 --> 00:03:46,870 例如。 80 00:03:46,870 --> 00:03:49,570 该视图将数据 说出来的模型是 81 00:03:49,570 --> 00:03:52,070 指的是你的朋友和新闻 饲料或类似的东西,对吧? 82 00:03:52,070 --> 00:03:53,380 但是,你不会看到别人的。 83 00:03:53,380 --> 00:03:55,088 >> 你会getting--所以 您提交的查询, 84 00:03:55,088 --> 00:03:59,400 您登录到该型号 - 借口 我,你登录到该页面。 85 00:03:59,400 --> 00:04:01,240 控制器采用 您的登录信息 86 00:04:01,240 --> 00:04:04,920 提出请求的模型,使 确保你是你说你是谁。 87 00:04:04,920 --> 00:04:07,450 该模型的想,好,是的, 你是你说你是谁, 88 00:04:07,450 --> 00:04:09,030 所以让我给你的新闻源。 89 00:04:09,030 --> 00:04:11,730 我给你的原始数据 你的新闻源的观点, 90 00:04:11,730 --> 00:04:14,063 然后在视图使它 漂亮,处理它的方式 91 00:04:14,063 --> 00:04:17,560 我们已经习惯了,显示 该信息提供给用户。 92 00:04:17,560 --> 00:04:20,579 >> 请注意,连接这 不存在这个图上。 93 00:04:20,579 --> 00:04:24,750 有没有直接的关系 你和模型之间。 94 00:04:24,750 --> 00:04:29,420 总是有这样的缓冲 在输入侧的控制器, 95 00:04:29,420 --> 00:04:31,840 并有的一个缓冲 查看输出侧。 96 00:04:31,840 --> 00:04:33,850 >> 也许你是个好 的人,所以也许你 97 00:04:33,850 --> 00:04:36,310 不会做的任何损害 模型,但也许你不是。 98 00:04:36,310 --> 00:04:38,990 或者,也许有别人谁的 恶意用户谁也说不定 99 00:04:38,990 --> 00:04:42,640 想破坏你的数据库,也许 从数据库中删除一切, 100 00:04:42,640 --> 00:04:45,080 这可能是非常昂贵的。 101 00:04:45,080 --> 00:04:48,300 很显然,有用户数据is-- 还有价值有用户数据。 102 00:04:48,300 --> 00:04:53,290 因此,如果我们没有把这个缓冲区 在用户和数据库 - 之间区 103 00:04:53,290 --> 00:04:58,070 在用户和型号 - 事 可能不会很顺利我们。 104 00:04:58,070 --> 00:05:00,232 >> 所以重要的是要 有这种模式在哪里 105 00:05:00,232 --> 00:05:03,440 用户可以与数据库进行交互, 肯定的,但是他们必须要经过美国 106 00:05:03,440 --> 00:05:04,750 去做吧。 107 00:05:04,750 --> 00:05:06,530 而这基本上与MVC的想法。 108 00:05:06,530 --> 00:05:08,290 它试图实现数据的安全性。 109 00:05:08,290 --> 00:05:13,130 它试图保护模式 从无意或有意 110 00:05:13,130 --> 00:05:15,430 恶意用户。 111 00:05:15,430 --> 00:05:17,392 >> 所以会发生什么,当 我们应用这种模式? 112 00:05:17,392 --> 00:05:19,850 好了,我们分离数据 从我们的website--要求 113 00:05:19,850 --> 00:05:23,320 从逻辑的型号 - 实现我们网站的 114 00:05:23,320 --> 00:05:27,160 functionality--的controller--和 从单纯的美学和页面 115 00:05:27,160 --> 00:05:31,497 构成模板我们 用户experience--视图。 116 00:05:31,497 --> 00:05:32,330 这是什么意思? 117 00:05:32,330 --> 00:05:35,830 嗯,这意味着你可以 到用户观看可见。 118 00:05:35,830 --> 00:05:37,800 您可以隐藏模型了。 119 00:05:37,800 --> 00:05:41,450 而controllers--用户 不能或许直接操作。 120 00:05:41,450 --> 00:05:43,230 他们并不需要访问你的PHP代码。 121 00:05:43,230 --> 00:05:45,646 他们只需要看到的一种形式 在那里他们可以在输入的东西。 122 00:05:45,646 --> 00:05:47,605 所以,也许形式 的图,该控制器 123 00:05:47,605 --> 00:05:52,835 是的形式提交到PHP中, 控制器使得一个查询模式, 124 00:05:52,835 --> 00:05:55,210 该模型提供了更多的信息, 到不同的观点, 125 00:05:55,210 --> 00:05:57,400 为您显示的信息。 126 00:05:57,400 --> 00:05:59,640 >> 你的程序可以访问 所有的业务逻辑, 127 00:05:59,640 --> 00:06:02,940 但你的用户不能直接 访问你的业务逻辑。 128 00:06:02,940 --> 00:06:07,600 和一个特别,或许, 这明显说明 129 00:06:07,600 --> 00:06:11,370 是你曾经收到 一个403 Forbidden错误。 130 00:06:11,370 --> 00:06:14,070 你有没有去到Web 页面,看到403禁止? 131 00:06:14,070 --> 00:06:16,200 这有点像404找不到。 132 00:06:16,200 --> 00:06:20,590 >> 403禁止意味着你试图访问 一个页面,你就不能访问。 133 00:06:20,590 --> 00:06:23,790 也许这个站点 使用MVC分离 134 00:06:23,790 --> 00:06:28,600 遁形其业务逻辑 需要存在于服务器上,以便 135 00:06:28,600 --> 00:06:32,220 为页面的工作,但不 希望你能直接访问它。 136 00:06:32,220 --> 00:06:33,990 所以,你可能会得到一个403 Forbidden错误。 137 00:06:33,990 --> 00:06:36,073 >> 它甚至不会无所谓 如果你登录。 138 00:06:36,073 --> 00:06:38,570 任何用户都无法触及这个点PHP文件。 139 00:06:38,570 --> 00:06:41,080 他们只能碰 这一次,这埃德蒙顿 140 00:06:41,080 --> 00:06:48,140 一个他们可以touch--或许 可与锁定的文件交互 141 00:06:48,140 --> 00:06:52,330 更间接地比用户。 142 00:06:52,330 --> 00:06:57,610 >> 所以,我们有时会看到这个权限 错误,这403禁止。 143 00:06:57,610 --> 00:07:01,360 我们怎么改变权限,因此 这东西可以或不可以看到? 144 00:07:01,360 --> 00:07:06,910 当我们这样做通常是使用一个 Linux命令称为chmod-- C-H-MOD。 145 00:07:06,910 --> 00:07:11,080 >> 要做到这一点,该格式是相当 simple--文件模式,权限, 146 00:07:11,080 --> 00:07:13,710 和任何你想要的文件 以应用更改。 147 00:07:13,710 --> 00:07:17,380 所以,也许你会看到什么 像this--搭配chmod 600 helpers.php。 148 00:07:17,380 --> 00:07:21,870 或者,也许你会看到this-- CHMOD 加X中包括目录。 149 00:07:21,870 --> 00:07:23,112 当时这是否意味着有关系吗? 150 00:07:23,112 --> 00:07:25,570 因此,有两种不同的方式 该权限通常是 151 00:07:25,570 --> 00:07:26,920 应用使用chmod。 152 00:07:26,920 --> 00:07:29,350 第一个被称为 八进制数的方法。 153 00:07:29,350 --> 00:07:32,160 这通常适用权限 以三种不同的类别 154 00:07:32,160 --> 00:07:34,300 的用户在同一时间。 155 00:07:34,300 --> 00:07:40,120 所以CHMOD 711文件将允许你 正确的读,写和执行 156 00:07:40,120 --> 00:07:43,050 您的文件,将使 others--专 157 00:07:43,050 --> 00:07:46,469 您的组和天下 - 仅执行该文件。 158 00:07:46,469 --> 00:07:47,760 这就是这样的语句。 159 00:07:47,760 --> 00:07:50,150 第一个数字有 是你可以做什么, 160 00:07:50,150 --> 00:07:52,370 第二个数字是 你的组可以做, 161 00:07:52,370 --> 00:07:54,470 第三个是这个世界能做到。 162 00:07:54,470 --> 00:07:57,930 如果谁的访问您的 页面,这就是世界。 163 00:07:57,930 --> 00:08:01,130 >> 这些是什么号码 实际上转化为有关系吗? 164 00:08:01,130 --> 00:08:03,130 因此,这些基本上翻译是这样的。 165 00:08:03,130 --> 00:08:06,300 如果权限 零,什么都可能发生。 166 00:08:06,300 --> 00:08:10,239 如果它是一个,你可以执行 file--如果这是你的许可。 167 00:08:10,239 --> 00:08:13,030 如果是二,你可以写文件 但你不能做任何事情。 168 00:08:13,030 --> 00:08:14,967 如果是三,你 可以写和执行。 169 00:08:14,967 --> 00:08:16,050 等等,你可以看到。 170 00:08:16,050 --> 00:08:19,320 七意味着你可以做任何事情。 171 00:08:19,320 --> 00:08:21,760 >> 那么,为什么这些所谓的八进制数? 172 00:08:21,760 --> 00:08:24,537 好吧,如果你想想看, 这里就像不一yeses, 173 00:08:24,537 --> 00:08:26,620 如果我们想想他们 红与绿盒, 174 00:08:26,620 --> 00:08:28,161 也许这使得它一点点清晰。 175 00:08:28,161 --> 00:08:31,410 但是,如果我们考虑一下那些红色方框 作为零和绿框为的, 176 00:08:31,410 --> 00:08:33,659 这些实际上只是套 二进制数的,对不对? 177 00:08:33,659 --> 00:08:42,510 000转换为十进制0; 001, 小数1; 010是十进制2,依此类推。 178 00:08:42,510 --> 00:08:44,840 因此,我们称这些八进制 数字,因为有 179 00:08:44,840 --> 00:08:46,410 八种不同的可能性。 180 00:08:46,410 --> 00:08:48,118 有八个 不同的,如果我们的数字 181 00:08:48,118 --> 00:08:50,220 谈约三 information--的位 182 00:08:50,220 --> 00:08:52,940 读位,写入 位和执行位。 183 00:08:52,940 --> 00:08:56,910 所以,现在你可以讲二进制, 十进制,十六进制和八进制。 184 00:08:56,910 --> 00:09:00,250 所以,你知道如何与沟通 在四个不同的数量的计算机 185 00:09:00,250 --> 00:09:02,640 系统,所以这是很酷。 186 00:09:02,640 --> 00:09:05,200 >> 所以,除了八进制 许可计划,有 187 00:09:05,200 --> 00:09:08,520 也象征权限 方案中,这是稍微不同 188 00:09:08,520 --> 00:09:13,290 通常用于最好的应用或 除去全线的权限。 189 00:09:13,290 --> 00:09:17,070 因此,文件模式加X文件里 可能会添加合适的 190 00:09:17,070 --> 00:09:20,270 执行所有三个 users--类别 191 00:09:20,270 --> 00:09:22,890 你自己,你的团队,和世界。 192 00:09:22,890 --> 00:09:26,060 那加是增加的部分。 193 00:09:26,060 --> 00:09:28,430 执行权,这是在x。 194 00:09:28,430 --> 00:09:34,330 而事实上,它适用于所有 三组用户将是一个。 195 00:09:34,330 --> 00:09:39,330 >> 所以this--加x--很可能会 是完全一样的搭配chmod 711 196 00:09:39,330 --> 00:09:44,970 文件,因为如果你回去 看八进制数计划, 197 00:09:44,970 --> 00:09:47,990 那些乱七八糟给我们 权利要执行的文件。 198 00:09:47,990 --> 00:09:49,880 因此,这很可能是相同的。 199 00:09:49,880 --> 00:09:53,280 >> 你可以使用这个 参考指南是什么 200 00:09:53,280 --> 00:09:59,430 在不同的东西 象征性的文件模式-ING结构。 201 00:09:59,430 --> 00:10:03,522 绿色的项目在这里会 在所有的绿色的例子 202 00:10:03,522 --> 00:10:04,230 一秒钟前了。 203 00:10:04,230 --> 00:10:05,740 蓝色将是蓝色的。 204 00:10:05,740 --> 00:10:07,450 橙色将是橙色。 205 00:10:07,450 --> 00:10:10,360 所以,你可以的东西应用到您的 基,对他人,对用户来说, 206 00:10:10,360 --> 00:10:11,510 还是给大家。 207 00:10:11,510 --> 00:10:13,670 你可以给他们读, 写和执行权限, 208 00:10:13,670 --> 00:10:17,130 您可以添加或删除 或分配完全是一个集 209 00:10:17,130 --> 00:10:20,310 采用这种模式的权限。 210 00:10:20,310 --> 00:10:22,530 >> 我们如何检查什么 文件权限方案是? 211 00:10:22,530 --> 00:10:25,770 在我们改变它,它的 可能是很好的真正了解 212 00:10:25,770 --> 00:10:27,800 什么是文件权限。 213 00:10:27,800 --> 00:10:31,370 要做到这一点的方法之一是运行ls 只是调整它一点点。 214 00:10:31,370 --> 00:10:35,570 所以,如果我输入ls冲L-- 这是一个小写的L--也许 215 00:10:35,570 --> 00:10:36,870 我会看到这样的事情。 216 00:10:36,870 --> 00:10:39,490 它看起来有点神秘,但 我们真正关心的部分 217 00:10:39,490 --> 00:10:41,000 在左边那边的东西。 218 00:10:41,000 --> 00:10:43,380 这实际上指定 文件权限方案。 219 00:10:43,380 --> 00:10:47,470 你可能会说,因为它是 得到的r,W的,而x的穿插。 220 00:10:47,470 --> 00:10:49,750 >> 这些第一three-- 忽略第一个 221 00:10:49,750 --> 00:10:51,870 一秒钟,这 我们将双回。 222 00:10:51,870 --> 00:10:54,080 那些前三后 所述first--所以第二, 223 00:10:54,080 --> 00:10:56,700 第三和第四字符 该10个字符的字符串的 224 00:10:56,700 --> 00:10:59,150 是你拥有的权限。 225 00:10:59,150 --> 00:11:02,390 因此很明显,我可以读, 写和执行PHP。 226 00:11:02,390 --> 00:11:04,870 我可以读,写和 执行PHP Webdev的, 227 00:11:04,870 --> 00:11:07,786 我可以读取和写入test.php的。 228 00:11:07,786 --> 00:11:11,020 >> 我的小组可以做到这一点。 229 00:11:11,020 --> 00:11:14,960 因此,显然与PHP 和PHP Webdev的目录, 230 00:11:14,960 --> 00:11:18,330 我的团队可以写 他们,但没有别的。 231 00:11:18,330 --> 00:11:20,210 而世界也无能为力。 232 00:11:20,210 --> 00:11:22,115 因此,这些文件是不 公开访问 233 00:11:22,115 --> 00:11:23,990 如果我试着 访问他们,我不是 234 00:11:23,990 --> 00:11:29,160 运行Apache,使他们可以访问, 然后,我会得到一个403错误。 235 00:11:29,160 --> 00:11:29,950 这是一个失败。 236 00:11:29,950 --> 00:11:32,916 我试图访问一个文件,但我 无权这样做。 237 00:11:32,916 --> 00:11:34,290 什么是第一个字符? 238 00:11:34,290 --> 00:11:39,120 那么,你或许可以推断 这里说的D的参考目录 239 00:11:39,120 --> 00:11:42,080 而仪表板指 所谓的“常规文件。” 240 00:11:42,080 --> 00:11:45,430 也许你当你已经看到了这个 试图删除使用RM文件。 241 00:11:45,430 --> 00:11:49,310 你见过的神秘邮件 “删除普通文件” - 在这种情况下, 242 00:11:49,310 --> 00:11:51,020 这将会是test.php的。 243 00:11:51,020 --> 00:11:53,900 常规文件只是一些 这不是一个目录。 244 00:11:53,900 --> 00:11:56,191 有一对夫妇他人 在这里,但通常你 245 00:11:56,191 --> 00:11:59,179 去看看德公司的目录 并没有为第一要素。 246 00:11:59,179 --> 00:12:00,720 但是,这真的一切就是这么简单。 247 00:12:00,720 --> 00:12:03,210 你可以查看文件 使用LS几许升的权限, 248 00:12:03,210 --> 00:12:05,100 你可以使用chmod更改。 249 00:12:05,100 --> 00:12:09,430 当然,使用these-- 更改权限 250 00:12:09,430 --> 00:12:14,180 执行本MVC范例 保护数据在您的网站 251 00:12:14,180 --> 00:12:16,180 并不允许用户 访问一切, 252 00:12:16,180 --> 00:12:19,120 但只有东西,他们需要 为了访问您的网页 253 00:12:19,120 --> 00:12:22,110 工作,你希望它的工作方式。 254 00:12:22,110 --> 00:12:23,040 >> 我是道格·劳埃德。 255 00:12:23,040 --> 00:12:24,880 这是CS50。 256 00:12:24,880 --> 00:12:27,286