1 00:00:00,000 --> 00:00:03,920 >> [音乐播放] 2 00:00:03,920 --> 00:00:11,760 3 00:00:11,760 --> 00:00:13,800 >> DAVID J.马兰:好吧。 4 00:00:13,800 --> 00:00:15,640 这是CS50。 5 00:00:15,640 --> 00:00:17,620 这是8周的开始。 6 00:00:17,620 --> 00:00:22,440 你可能还记得,我们不放过 上次看一个新的语言 7 00:00:22,440 --> 00:00:23,240 干脆。 8 00:00:23,240 --> 00:00:25,905 事实上,一个是相当 重量轻,它甚至不是 9 00:00:25,905 --> 00:00:26,940 一种编程语言。 10 00:00:26,940 --> 00:00:31,100 这是一种标记语言,它让我们 实际上结构,使网页。 11 00:00:31,100 --> 00:00:33,350 而当你点别的 与this--结合 12 00:00:33,350 --> 00:00:35,670 或者你会很快,如果 你还没有。 13 00:00:35,670 --> 00:00:38,530 我们将使用层叠 样式表或CSS,这 14 00:00:38,530 --> 00:00:40,971 是另一种类型的语言 用属性和值 15 00:00:40,971 --> 00:00:43,220 那将让我们做 喜欢的东西改变颜色 16 00:00:43,220 --> 00:00:46,010 并改变其位置 这些类型的调整的。 17 00:00:46,010 --> 00:00:49,940 但今天起,我们开始 专注于更强大的语言, 18 00:00:49,940 --> 00:00:52,810 实际的编程语言,如PHP。 19 00:00:52,810 --> 00:00:54,880 >> 所以,PHP已经有一段时间了。 20 00:00:54,880 --> 00:00:56,810 正如你所看到的,它 设计的主要 21 00:00:56,810 --> 00:01:00,280 早在实际 在web开发中使用 22 00:01:00,280 --> 00:01:02,360 而实际产生的网页。 23 00:01:02,360 --> 00:01:04,849 那么什么样的 特点做了语言 24 00:01:04,849 --> 00:01:10,040 需要为了使卷筒纸 动态与它的网页? 25 00:01:10,040 --> 00:01:14,760 >> 换句话说,如果你想生成 像Facebook的内容dynamically-- 26 00:01:14,760 --> 00:01:19,480 新闻源,它不断地变化,或 即弹出不时即时消息 27 00:01:19,480 --> 00:01:21,872 以时间 - 像有什么 功能按键件 28 00:01:21,872 --> 00:01:24,580 需要在编程语言 它可以让你动态 29 00:01:24,580 --> 00:01:28,070 打印新的信息在屏幕上? 30 00:01:28,070 --> 00:01:28,685 >> 学生:代码。 31 00:01:28,685 --> 00:01:29,560 DAVID J.马兰:代码。 32 00:01:29,560 --> 00:01:30,440 行。 33 00:01:30,440 --> 00:01:31,995 我们就买那种。 34 00:01:31,995 --> 00:01:35,310 有一点更精确。 35 00:01:35,310 --> 00:01:37,639 我的意思是,我们可以做 这与C,坦率地说。 36 00:01:37,639 --> 00:01:38,930 这将是在颈部疼痛。 37 00:01:38,930 --> 00:01:41,045 但是 - 是这一承诺? 38 00:01:41,045 --> 00:01:41,895 >> 学生:是啊。 39 00:01:41,895 --> 00:01:42,677 变量,也许? 40 00:01:42,677 --> 00:01:43,760 DAVID J.马兰:变量。 41 00:01:43,760 --> 00:01:44,160 OK,确保万无一失。 42 00:01:44,160 --> 00:01:45,740 变量肯定能帮助我们。 43 00:01:45,740 --> 00:01:47,020 甚至更简单的东西。 44 00:01:47,020 --> 00:01:50,640 我们在使用它的第一个 第一天的节目 45 00:01:50,640 --> 00:01:55,686 当我们真正说的“hello world”。 46 00:01:55,686 --> 00:01:56,570 >> 学生:打印。 47 00:01:56,570 --> 00:01:57,778 >> DAVID J.马兰:打印,对不对? 48 00:01:57,778 --> 00:02:01,050 打印,或printf中 C.因此,这段时间的世界里, 49 00:02:01,050 --> 00:02:03,362 我们已经在我们的 处置语言 - C, 50 00:02:03,362 --> 00:02:05,570 在particular--甚至 从头开始为此事了 51 00:02:05,570 --> 00:02:07,400 可以生成文本的字符串。 52 00:02:07,400 --> 00:02:11,090 >> 好吧,如果HTML,正如我们上周所看到的,是 只是一大堆的文本字符串 53 00:02:11,090 --> 00:02:14,692 尽管开放式支架和关闭 支架和某种韵 54 00:02:14,692 --> 00:02:16,650 和原因,它的背后, 那么我们可能真的 55 00:02:16,650 --> 00:02:20,440 开始生成的网页要么 手动键入出来gedit中 56 00:02:20,440 --> 00:02:23,870 或在Microsoft Word中,为 matter--我们只需要一个文本编辑器。 57 00:02:23,870 --> 00:02:26,830 >> 或者,我们可以编写代码, 您的建议 58 00:02:26,830 --> 00:02:30,435 早些时候,这将让我们 动态生成HTML, 59 00:02:30,435 --> 00:02:32,560 这就是我们要 开始用PHP做 60 00:02:32,560 --> 00:02:34,900 并且最终即使有 语言JavaScript调用, 61 00:02:34,900 --> 00:02:37,910 是用一种语言来生成另一个。 62 00:02:37,910 --> 00:02:40,720 事实上,这就是Facebook的 和很多很多其他网站 63 00:02:40,720 --> 00:02:44,530 做真正动态 显示新的信息给你。 64 00:02:44,530 --> 00:02:47,117 >> 因此,让我们开始this--一 神秘的看线,但一 65 00:02:47,117 --> 00:02:48,450 这实际上是非常强大的。 66 00:02:48,450 --> 00:02:51,210 到目前为止,我们一直在使用C, 这是编译型语言。 67 00:02:51,210 --> 00:02:55,050 而就在快recap--一个编译 语言有什么特点呢? 68 00:02:55,050 --> 00:02:59,050 你显然需要编译 它,但到底是什么意思呢? 69 00:02:59,050 --> 00:03:00,505 是吗? 70 00:03:00,505 --> 00:03:02,940 >> 学生:它需要 组装成机器代码。 71 00:03:02,940 --> 00:03:03,060 >> DAVID J.马兰:OK。 72 00:03:03,060 --> 00:03:04,530 它需要被组装 成机器代码。 73 00:03:04,530 --> 00:03:07,340 所以,你把你的源代码, 这是有点类似英语的。 74 00:03:07,340 --> 00:03:09,270 你,转换为 一些较低的水平, 75 00:03:09,270 --> 00:03:11,590 这是所谓的最终 对象代码 - 0和1的。 76 00:03:11,590 --> 00:03:14,830 而正是这些0和1的 一个CPU,像那些由Intel生产, 77 00:03:14,830 --> 00:03:16,110 真正理解。 78 00:03:16,110 --> 00:03:19,690 >> 现在,PHP和Python和Ruby和 JavaScript和其他的串 79 00:03:19,690 --> 00:03:23,190 语言不编译 语言,但解释型语言, 80 00:03:23,190 --> 00:03:26,630 这意味着你只需要输入他们,然后 你不把它们变成0和1。 81 00:03:26,630 --> 00:03:30,790 你不是只提供那么作为 输入到别人的节目, 82 00:03:30,790 --> 00:03:32,080 所谓的翻译。 83 00:03:32,080 --> 00:03:34,460 而那人的 程序的设计 84 00:03:34,460 --> 00:03:38,280 要了解每 在Python或PHP的每一个符号 85 00:03:38,280 --> 00:03:42,650 或Ruby或任何数量的 其他语言的意思。 86 00:03:42,650 --> 00:03:44,760 >> 所以我们需要的是 这样的事情。 87 00:03:44,760 --> 00:03:46,350 所以,事实上,我要去 去到家电 88 00:03:46,350 --> 00:03:48,100 在这里,只需到任何 旧的窗口,而且我们 89 00:03:48,100 --> 00:03:52,580 要继续前进,并开放 一个名为,说,你好。 90 00:03:52,580 --> 00:03:55,780 现在,以前,我可能有救 这即使是文件扩展名, 91 00:03:55,780 --> 00:03:57,910 但我该怎么办 事情就更简单了这里。 92 00:03:57,910 --> 00:04:02,450 我要继续前进,开始 这个文件与此语法晦涩。 93 00:04:02,450 --> 00:04:06,310 因此,“用户,垃圾桶,ENV, 对于环境,PHP。“ 94 00:04:06,310 --> 00:04:10,670 >> 这是一个简单的一行代码是 要告诉我的操作系统, 95 00:04:10,670 --> 00:04:13,730 去找你的地方 环境,不管它是什么, 96 00:04:13,730 --> 00:04:18,149 无论PHP is--的interpreter-- 并继续使用该翻译 97 00:04:18,149 --> 00:04:20,589 解释下面的代码。 98 00:04:20,589 --> 00:04:22,760 现在,这是怎么样的 PHP的一个丑陋的功能。 99 00:04:22,760 --> 00:04:24,980 但是,在这种语言,任何 一次编写PHP代码, 100 00:04:24,980 --> 00:04:29,200 你需要有这些丑陋的一 PHP标签划分的开始 101 00:04:29,200 --> 00:04:32,220 你的代码 - <?php的。 102 00:04:32,220 --> 00:04:37,430 >> 但低于在这里,我现在可以做些什么 很简单,如printf你好逗号 103 00:04:37,430 --> 00:04:40,922 世界反斜杠N分别闭合 引号,括号接近。 104 00:04:40,922 --> 00:04:42,630 然后刚刚好 措施,我要去 105 00:04:42,630 --> 00:04:45,380 继续前进,接近 在这里我的PHP标签 106 00:04:45,380 --> 00:04:47,390 让一切看起来 漂亮精美印刷。 107 00:04:47,390 --> 00:04:50,780 >> 而当我点击保存, gedit中实际上是足够聪明 108 00:04:50,780 --> 00:04:54,620 看那个第一行和 意识到,哦,你写PHP代码。 109 00:04:54,620 --> 00:04:56,710 我的语法高亮 它与色 110 00:04:56,710 --> 00:04:58,690 在这里,使其立起 出多一点。 111 00:04:58,690 --> 00:05:01,300 但现在我会去 到我的终端窗口。 112 00:05:01,300 --> 00:05:02,340 我会缩小。 113 00:05:02,340 --> 00:05:06,860 >> 这项计划被称为“你好,” 所以我打算做点斜线你好, 114 00:05:06,860 --> 00:05:07,990 但是权限被拒绝。 115 00:05:07,990 --> 00:05:08,490 和bash。 116 00:05:08,490 --> 00:05:10,610 实际上,我们听说过 事情在几个星期前 117 00:05:10,610 --> 00:05:13,140 在Shellshock的范围内, 其中的一个漏洞。 118 00:05:13,140 --> 00:05:16,240 >> 但是被拒绝的权限,我们已经看到了 之前,可能在不同的上下文。 119 00:05:16,240 --> 00:05:19,060 有谁还记得如何 你可能会解决一些 120 00:05:19,060 --> 00:05:22,100 其中,权限类似这样的拒绝? 121 00:05:22,100 --> 00:05:23,490 什么是命令,至少? 122 00:05:23,490 --> 00:05:24,159 >> 学生:CHMOD。 123 00:05:24,159 --> 00:05:26,700 DAVID J.马兰:是啊,CHMOD, 用于改变文件的模式。 124 00:05:26,700 --> 00:05:30,171 你会得到更习惯 下周有一个后续问题 125 00:05:30,171 --> 00:05:30,670 设置的。 126 00:05:30,670 --> 00:05:33,211 但现在,我要改变 该模式不被读取, 127 00:05:33,211 --> 00:05:36,650 但让所有人executeability 特权的能力 128 00:05:36,650 --> 00:05:37,710 运行此文件。 129 00:05:37,710 --> 00:05:40,360 我要去分配 即该文件打招呼。 130 00:05:40,360 --> 00:05:45,150 >> 如果我现在做点斜线打招呼进入, 看,其实,我的程序,你好世界。 131 00:05:45,150 --> 00:05:48,760 和什么样的步骤做了我 显然完全跳过? 132 00:05:48,760 --> 00:05:49,520 编译。 133 00:05:49,520 --> 00:05:51,680 所以,我只是跑这个程序很简单。 134 00:05:51,680 --> 00:05:55,690 >> 而事实证明,你可以做到这一点 很多语法类似于C 135 00:05:55,690 --> 00:06:03,400 让我走在今天的代码, 我把我的虚拟主机目录 136 00:06:03,400 --> 00:06:05,250 在这里,真正的原因 我们再回过头来。 137 00:06:05,250 --> 00:06:09,350 而且我要进入, 比方说,条件1。 138 00:06:09,350 --> 00:06:12,450 >> 你会看到这里,第一, 最重要的是,一大堆的意见。 139 00:06:12,450 --> 00:06:15,240 但其实这是 一个再创造的PHP 140 00:06:15,240 --> 00:06:18,960 一个程序,我们在做一周 一个叫条件1.C 141 00:06:18,960 --> 00:06:20,690 其中,目的在 这个方案的寿命 142 00:06:20,690 --> 00:06:22,950 显然是要问 为一个整数的用户 143 00:06:22,950 --> 00:06:25,270 然后做一些蓬松 分析它,从而 144 00:06:25,270 --> 00:06:29,510 你说,如果是正面还是 负或等于零。 145 00:06:29,510 --> 00:06:34,220 和我提起这事,只是因为, 除了也许一个小细节, 146 00:06:34,220 --> 00:06:37,150 它是不可区分的,到目前为止,从C. 147 00:06:37,150 --> 00:06:39,930 >> 什么是特色之一 在这里,也许跳出 148 00:06:39,930 --> 00:06:41,410 你作为一个有点不同? 149 00:06:41,410 --> 00:06:42,160 也许两件事。 150 00:06:42,160 --> 00:06:42,660 是吗? 151 00:06:42,660 --> 00:06:44,070 >> 学生:美元符号N + 152 00:06:44,070 --> 00:06:44,944 >> DAVID J.马兰:是啊。 153 00:06:44,944 --> 00:06:46,210 因此,美元符号存在n。 154 00:06:46,210 --> 00:06:48,120 而美元符号,如 我们会看到,会 155 00:06:48,120 --> 00:06:51,460 是一个修复程序的开始 在PHP中的任何变量。 156 00:06:51,460 --> 00:06:54,250 它在爱恨bad--好 它的排序明显的是什么 157 00:06:54,250 --> 00:06:56,797 一个变量,坏的,因为它是 另一件事键入。 158 00:06:56,797 --> 00:06:58,630 而且还有另外一个 事情我们还没有完全 159 00:06:58,630 --> 00:07:00,876 看到的那样,至少由该拼写。是吗? 160 00:07:00,876 --> 00:07:01,630 >> 学生:Readline的。 161 00:07:01,630 --> 00:07:02,671 >> DAVID J.马兰:Readline的。 162 00:07:02,671 --> 00:07:06,550 readline的,我们并没有看到,本身在 C,尽管存在着一些 163 00:07:06,550 --> 00:07:09,530 类似的,但是我们使用的GetString, 这是它的对手。 164 00:07:09,530 --> 00:07:12,950 所以,如果我进入这个 目录中,这恰好是, 165 00:07:12,950 --> 00:07:18,030 我会在我的虚拟主机了一下解释 目录和我的源目录, 166 00:07:18,030 --> 00:07:22,730 我继续前进,做点斜线 条件 - whoops--点斜线 167 00:07:22,730 --> 00:07:26,710 条件1,你会看到,同样, 同样issue--权限被拒绝。 168 00:07:26,710 --> 00:07:33,610 >> 因此,让我放大和文件模式做一个加 X上的情况下,点斜线条件。 169 00:07:33,610 --> 00:07:35,222 我想一个整数,请50。 170 00:07:35,222 --> 00:07:36,930 我们可以发挥这 游戏一整天。 171 00:07:36,930 --> 00:07:39,140 它要表现得完全 因为它没有在一个星期。 172 00:07:39,140 --> 00:07:42,860 >> 行,所以不是所有的不同,除了 没有语法只是轻微的一点, 173 00:07:42,860 --> 00:07:45,490 但在顶部,我又 有这种线, 174 00:07:45,490 --> 00:07:49,760 让我创造的东西, 貌似名为hello C程序, 175 00:07:49,760 --> 00:07:51,150 所谓的条件1。 176 00:07:51,150 --> 00:07:54,520 但它不是0和个位 我直接执行。 177 00:07:54,520 --> 00:07:57,620 它不是运行此 翻译的名字 178 00:07:57,620 --> 00:07:59,440 刚好是相同的语言。 179 00:07:59,440 --> 00:08:04,970 该计划被称为PHP,和我的代码 下面一行被传递到它。 180 00:08:04,970 --> 00:08:07,740 >> 我们可以做的另一种相当简单的 例如让人联想到的东西 181 00:08:07,740 --> 00:08:09,240 我们在几周前就已经。 182 00:08:09,240 --> 00:08:12,020 再次,这是一种类型的 的任意代码块 183 00:08:12,020 --> 00:08:14,000 这显然​​是不 当你运行它呢? 184 00:08:14,000 --> 00:08:15,625 这是什么付印,大概是? 185 00:08:15,625 --> 00:08:23,540 186 00:08:23,540 --> 00:08:28,250 >> 所以最初的16行,它的 要说X现在是2,可能是。 187 00:08:28,250 --> 00:08:30,920 %d是一样$我的printf的。 188 00:08:30,920 --> 00:08:33,460 这样的话它的魔方,点, 点,点,在第17行。 189 00:08:33,460 --> 00:08:36,299 然后第18行出现 调用函数立方。 190 00:08:36,299 --> 00:08:37,600 何为立方定义? 191 00:08:37,600 --> 00:08:40,319 >> 嗯,它看起来像在第25行, 所以这还不是全部不同。 192 00:08:40,319 --> 00:08:42,610 我已经得到了上面的一些意见 它,但在大多数情况下, 193 00:08:42,610 --> 00:08:45,370 这是一个相当简单的 移植或转换 194 00:08:45,370 --> 00:08:48,470 从C程序的PHP版本。 195 00:08:48,470 --> 00:08:52,670 但现在有几个 差别也许应该跳出。 196 00:08:52,670 --> 00:08:56,100 还有什么是你如何不同 可以写在C中同样的程序? 197 00:08:56,100 --> 00:08:57,900 >> 学生:[听不清]。 198 00:08:57,900 --> 00:09:00,070 >> DAVID J.马兰:有 没有原型往上顶。 199 00:09:00,070 --> 00:09:03,210 所以PHP--坦率地说,一 很多现代languages​​--的 200 00:09:03,210 --> 00:09:06,920 有很多更聪明,更乐于助人 比C编译器中,你 201 00:09:06,920 --> 00:09:09,740 可以把函数在这里, 你可以把一个函数到这里, 202 00:09:09,740 --> 00:09:12,740 并解释是怎么回事 做你的阅读青睐 203 00:09:12,740 --> 00:09:16,010 它决定之前,整个文件 有些功能不存在。 204 00:09:16,010 --> 00:09:17,970 这么好看的改进年后。 205 00:09:17,970 --> 00:09:22,126 但也有一些 有什么不同或不存在这里。 206 00:09:22,126 --> 00:09:22,626 是吗? 207 00:09:22,626 --> 00:09:25,084 >> 学生:[听不清]。 208 00:09:25,084 --> 00:09:27,750 DAVID J.马兰:我们不必 声明的变量的类型, 209 00:09:27,750 --> 00:09:31,780 所以我们会看到不久的 有不同类型的PHP, 210 00:09:31,780 --> 00:09:34,970 但你并不需要指定它们, 这也是有好有坏。 211 00:09:34,970 --> 00:09:36,623 并有一件事缺失。 212 00:09:36,623 --> 00:09:37,430 >> 学生:有没有图书馆。 213 00:09:37,430 --> 00:09:38,630 >> DAVID J.马兰:没有图书馆。 214 00:09:38,630 --> 00:09:39,350 好了,这很好。 215 00:09:39,350 --> 00:09:40,540 我们得到了很多开箱即用。 216 00:09:40,540 --> 00:09:43,373 所以实际上是多了很多 事情比我想象的不同。 217 00:09:43,373 --> 00:09:44,350 怎么样在回来的方式? 218 00:09:44,350 --> 00:09:46,032 那是什么? 219 00:09:46,032 --> 00:09:46,740 说一次? 220 00:09:46,740 --> 00:09:47,960 >> 学生:指针。 221 00:09:47,960 --> 00:09:49,270 >> DAVID J.马兰:没有指针。 222 00:09:49,270 --> 00:09:51,280 行的,至少在这个示例中,没有。 223 00:09:51,280 --> 00:09:52,070 这是公平的。 224 00:09:52,070 --> 00:09:55,090 因此,有没有指针 在PHP中其实一般。 225 00:09:55,090 --> 00:09:58,730 有一种叫做参考, 但我们不会花太多的时间在那里。 226 00:09:58,730 --> 00:09:59,520 还有呢? 227 00:09:59,520 --> 00:10:00,185 >> 学生:主要。 228 00:10:00,185 --> 00:10:01,060 DAVID J.马兰:主。 229 00:10:01,060 --> 00:10:02,768 因此,这是大问题 我在想的。 230 00:10:02,768 --> 00:10:04,660 请注意,没有主入口点。 231 00:10:04,660 --> 00:10:06,525 您只需开始编写代码。 232 00:10:06,525 --> 00:10:08,400 这实际上是 将是有利 233 00:10:08,400 --> 00:10:10,560 当我们转型 暂时以实际使用 234 00:10:10,560 --> 00:10:13,980 此相同的语言,用于基于web的 编程,为此我们 235 00:10:13,980 --> 00:10:16,580 不希望只有一个入口点。 236 00:10:16,580 --> 00:10:19,980 我们可能希望有一堆 网址,一堆不同的文件 237 00:10:19,980 --> 00:10:22,930 在用户输入所有服用 并产生输出。 238 00:10:22,930 --> 00:10:27,130 >> 但这里是非常令人沮丧 例如,我答应最后一次, 239 00:10:27,130 --> 00:10:30,130 即此文件夹中 在这里,拼写错误。 240 00:10:30,130 --> 00:10:33,680 所以在这个文件中的拼写,这是我们 不会花太多时间,有 241 00:10:33,680 --> 00:10:37,870 本质上是porting-- P-O-R-T。 它只是给出时候,说了一句话, 242 00:10:37,870 --> 00:10:40,800 你从一种语言转换 另一个通常手动。 243 00:10:40,800 --> 00:10:45,680 >> 这是PC的移植 从PSET 5版本拼写的。 244 00:10:45,680 --> 00:10:48,856 我基本上是试图转换 通过线就行密切,我可以。 245 00:10:48,856 --> 00:10:51,730 所以,如果你喜欢这种东西, 它实际上是值得在某些时候 246 00:10:51,730 --> 00:10:54,229 两个边向上拉他们 一边,看看哪些是相同的 247 00:10:54,229 --> 00:10:55,230 这有什么不同。 248 00:10:55,230 --> 00:10:57,510 但他们相当不错的相似。 249 00:10:57,510 --> 00:11:00,110 如果你还记得什么 拼写甚至长得很像, 250 00:11:00,110 --> 00:11:02,110 即使你没有 要改变这个文件, 251 00:11:02,110 --> 00:11:04,860 这是很相似的 在结构上只有一对夫妇 252 00:11:04,860 --> 00:11:06,200 变化在这里和那里。 253 00:11:06,200 --> 00:11:10,140 >> 所以,这只是说,这是很 简单的转换拼写 254 00:11:10,140 --> 00:11:12,000 从C到PHP。 255 00:11:12,000 --> 00:11:15,390 但是,在字典中,有 一些更加引人注目。 256 00:11:15,390 --> 00:11:19,270 让我继续前进,创造 我自己dictionary.php文件。 257 00:11:19,270 --> 00:11:24,010 所以在这略有不同 我们称之为.C它的.php来代替。 258 00:11:24,010 --> 00:11:26,980 因为这是一个PHP文件,我 do--略有annoyingly--有 259 00:11:26,980 --> 00:11:30,132 启动与该文件 一个PHP标签那样。 260 00:11:30,132 --> 00:11:32,340 而且我要继续前进 并定义一些功能。 261 00:11:32,340 --> 00:11:35,770 函数调用检查,这是 要采取的一个字像以前一样。 262 00:11:35,770 --> 00:11:37,520 但这种说法的 将有一元钱 263 00:11:37,520 --> 00:11:39,840 签名因为我们再次使用PHP。 264 00:11:39,840 --> 00:11:42,350 从另一个功能 dictionary.c是负载 265 00:11:42,350 --> 00:11:47,120 并用了在字典中的名称, 所以我会得到这个函数蓄势待发。 266 00:11:47,120 --> 00:11:50,920 >> 另一位在dictionary.c是什么? 267 00:11:50,920 --> 00:11:54,580 大小的最好的人之一,在 至少,如果你周围保留了一些变数。 268 00:11:54,580 --> 00:11:57,830 这样的尺寸只是要返回一个变量。 269 00:11:57,830 --> 00:11:59,090 再有就是卸载。 270 00:11:59,090 --> 00:12:02,830 >> 所以,有这四个 在问题的功能设置5 271 00:12:02,830 --> 00:12:06,770 你需要实现与 一些数据结构或结构。 272 00:12:06,770 --> 00:12:10,170 所以,我承诺,在 PHP,我们可以声明 273 00:12:10,170 --> 00:12:14,490 哈希表,例如 这些更容易。 274 00:12:14,490 --> 00:12:17,377 事实上,如果我想要一个哈希表, 我只是要去这样的 275 00:12:17,377 --> 00:12:18,460 还有就是我的哈希表。 276 00:12:18,460 --> 00:12:21,555 这就是说明,令人沮丧, 我们在上次离开。 277 00:12:21,555 --> 00:12:23,930 而你知道吗,如果我想 对于大小可变的,好了, 278 00:12:23,930 --> 00:12:25,867 这其中并非全部 从C不同, 279 00:12:25,867 --> 00:12:27,450 但我要继续前进,做到这一点。 280 00:12:27,450 --> 00:12:28,630 并注意没有数据类型。 281 00:12:28,630 --> 00:12:31,180 我会回去以后和 其实在这里补充一些意见。 282 00:12:31,180 --> 00:12:32,480 但对于负载? 283 00:12:32,480 --> 00:12:35,780 >> 如果美元符号字典 是我的文件的名称 284 00:12:35,780 --> 00:12:39,600 实际上我想加载 也就是说这个表,现在, 285 00:12:39,600 --> 00:12:42,360 其实我可以做的 事情很简单。 286 00:12:42,360 --> 00:12:44,880 埃德蒙顿,这是minorly annoying--在PHP中, 287 00:12:44,880 --> 00:12:47,710 你必须指定内部 如果一个函数的你 288 00:12:47,710 --> 00:12:51,060 要访问一些全球 这被定义之外的变量。 289 00:12:51,060 --> 00:12:53,530 >> 但是,这并不特别 有趣的现在。 290 00:12:53,530 --> 00:12:57,920 更有趣的是这对每个 构建我上次提到的。 291 00:12:57,920 --> 00:13:01,880 而事实证明,PHP有一个功能 所谓的文件,其目的在生活中 292 00:13:01,880 --> 00:13:05,550 是打开一个文件,并读出在 它的所有行到一个数组 293 00:13:05,550 --> 00:13:06,840 并把他们回。 294 00:13:06,840 --> 00:13:12,170 >> 这是说我可以做这样的字典 现在有效的,当我打电话的文件, 295 00:13:12,170 --> 00:13:15,472 这是要交给我回来 从文件中单词的数组。 296 00:13:15,472 --> 00:13:16,430 这不是所有的好。 297 00:13:16,430 --> 00:13:20,130 它仍然将是一个行 的话,东西直线。 298 00:13:20,130 --> 00:13:23,880 但是,我可以继续循环 在每个这些词使用 299 00:13:23,880 --> 00:13:25,710 该语法,我​​们看到简要最后一次。 300 00:13:25,710 --> 00:13:27,940 你会看到它的更多 在即将到来的PSET。 301 00:13:27,940 --> 00:13:32,070 >> 但现在我有一个循环迭代 在字典中的每个单词。 302 00:13:32,070 --> 00:13:36,100 并在每个迭代中,记得我 调用当前单词“字。” 303 00:13:36,100 --> 00:13:39,790 和所有它要采取 把一个单词到词典 304 00:13:39,790 --> 00:13:43,530 将是猜字“真”。 305 00:13:43,530 --> 00:13:44,740 这是我的插入功能。 306 00:13:44,740 --> 00:13:46,661 这是我的加载功能 我的字典。 307 00:13:46,661 --> 00:13:49,410 现在,这是一个有点作弊,因为, 你知道吗,有实际 308 00:13:49,410 --> 00:13:52,920 反斜杠N为在单词的结尾 我也许应该改掉, 309 00:13:52,920 --> 00:13:56,380 但是这不是一个问题,因为PHP有 一个函数调用印章字面 310 00:13:56,380 --> 00:13:58,480 关闭一个字符扒在最后。 311 00:13:58,480 --> 00:13:59,400 所以,没有任何问题。 312 00:13:59,400 --> 00:14:02,199 我们已经先行一步,实际上 缩短的只是这个。 313 00:14:02,199 --> 00:14:05,240 现在我应该跟踪 大小,让我们至少要做到this-- 314 00:14:05,240 --> 00:14:05,835 大小++。 315 00:14:05,835 --> 00:14:07,339 因为之前,我可以做到这一点。 316 00:14:07,339 --> 00:14:10,380 然后这很可能会 工作得很好,让我们回到正确的。 317 00:14:10,380 --> 00:14:10,930 完成的。 318 00:14:10,930 --> 00:14:11,797 PSET 5。 319 00:14:11,797 --> 00:14:13,545 >> [笑] 320 00:14:13,545 --> 00:14:14,420 >> DAVID J.马兰:OK。 321 00:14:14,420 --> 00:14:16,628 我们要再做一次 与下一个PSET得。 322 00:14:16,628 --> 00:14:18,730 那么,关于大小? 323 00:14:18,730 --> 00:14:22,080 那么,这一次希望是关于 你所期望的最后一次, 324 00:14:22,080 --> 00:14:24,460 但我必须这样做 这个愚蠢的全球性的事情。 325 00:14:24,460 --> 00:14:26,610 这只是从一个神器 该语言的设计。 326 00:14:26,610 --> 00:14:28,450 >> 但是,检查是更有趣一点。 327 00:14:28,450 --> 00:14:31,420 所以,如果我通过了以美元 第一次签的话,我 328 00:14:31,420 --> 00:14:34,060 要获得 全球变量表。 329 00:14:34,060 --> 00:14:36,700 现在如果我想 检查一个词是存在的, 330 00:14:36,700 --> 00:14:44,350 我可以简单地说,如果这是真的, 下面的设置在该表中, 331 00:14:44,350 --> 00:14:49,957 然后继续前进,返回 真实的;否则,返回false。 332 00:14:49,957 --> 00:14:51,180 完成的。 333 00:14:51,180 --> 00:14:52,440 PSET 5的另一半。 334 00:14:52,440 --> 00:14:54,540 >> 好吧,如此反复,我 而省几个小钱。 335 00:14:54,540 --> 00:14:56,831 凭心而论,我也许应该 花了几秒钟 336 00:14:56,831 --> 00:14:58,300 在此实现。 337 00:14:58,300 --> 00:15:01,860 我可能不应该嘲笑一切 小时就提上了PSET这么多。 338 00:15:01,860 --> 00:15:04,045 所以用strtolower是一个函数。 339 00:15:04,045 --> 00:15:06,670 同样的事情也存在主义 在C中,至少对于字符, 340 00:15:06,670 --> 00:15:08,560 但PHP的得到整个字符串版本。 341 00:15:08,560 --> 00:15:11,226 >> 这是怎么回事,迫使一切 为小写,其中一些你 342 00:15:11,226 --> 00:15:14,944 可能会做什么规范化 你把你的字典。 343 00:15:14,944 --> 00:15:16,360 现在你可以用C做了。 344 00:15:16,360 --> 00:15:17,780 这有没有关系PHP。 345 00:15:17,780 --> 00:15:20,260 >> 但是,任何时候你有 一个布尔条件, 346 00:15:20,260 --> 00:15:22,680 喜欢的东西就行 10那里,也就是只 347 00:15:22,680 --> 00:15:27,145 将评估结果为true或 假的,如果您还有清晰 348 00:15:27,145 --> 00:15:33,620 将返回true或false,我可以 只是真正使这个性感 349 00:15:33,620 --> 00:15:38,360 而只是做这样的事情。 350 00:15:38,360 --> 00:15:40,500 因此,有我的检查功能。 351 00:15:40,500 --> 00:15:42,560 对了,如果布尔 返回一个真或假, 352 00:15:42,560 --> 00:15:44,630 就让我们回到它立竿见影。 353 00:15:44,630 --> 00:15:47,340 >> 而且还有一些其他的调整 我能在这里和那里。 354 00:15:47,340 --> 00:15:51,380 Load--卸载,顺便说一句,这样做了。 355 00:15:51,380 --> 00:15:52,850 无关那里。 356 00:15:52,850 --> 00:15:55,840 由于所有的存储器中 PHP和许多其他语言 357 00:15:55,840 --> 00:15:57,570 其实是你管理。 358 00:15:57,570 --> 00:16:00,330 因此,而在C中,作为 你已经学会了痛苦, 359 00:16:00,330 --> 00:16:04,700 任何你的malloc或释放calloc或 realloc的,你必须释放自己。 360 00:16:04,700 --> 00:16:08,770 任何你的fopen,你要FCLOSE, 使资源得到最终释放 361 00:16:08,770 --> 00:16:11,690 而像Valgrind的工具不 注意,不要抱怨, 362 00:16:11,690 --> 00:16:13,570 这是一件好事,在它们上面运行。 363 00:16:13,570 --> 00:16:16,190 >> 但可以肯定,必须有 有些赶,对不对? 364 00:16:16,190 --> 00:16:19,400 否则,我们种浪费 一大堆星期。 365 00:16:19,400 --> 00:16:23,270 所以有任何数量的原因 样的,为什么我们把这个轨迹, 366 00:16:23,270 --> 00:16:24,440 但有一个折衷。 367 00:16:24,440 --> 00:16:25,820 没错,这一直是主题。 368 00:16:25,820 --> 00:16:29,690 >> 那么,什么可能的权衡 在这里运动,从C到PHP? 369 00:16:29,690 --> 00:16:33,250 感觉就像是赢得所有迄今除 有点丑陋的这里或那里。 370 00:16:33,250 --> 00:16:34,040 是啊。 371 00:16:34,040 --> 00:16:34,700 那是什么? 372 00:16:34,700 --> 00:16:36,064 >> 学生:[听不清]内存。 373 00:16:36,064 --> 00:16:36,980 DAVID J.马兰:速度。 374 00:16:36,980 --> 00:16:37,479 行。 375 00:16:37,479 --> 00:16:40,720 好吧,我的速度是相当快的。 376 00:16:40,720 --> 00:16:42,020 对不对? 377 00:16:42,020 --> 00:16:44,320 但程序的执行速度? 378 00:16:44,320 --> 00:16:45,580 好了,所以这是一个公平的问题。 379 00:16:45,580 --> 00:16:50,930 >> 因此,它会发生,我提前 选曲无论我尝试的解决方案,一个 380 00:16:50,930 --> 00:16:53,510 我对大板 是一个尝试的解决方案, 381 00:16:53,510 --> 00:16:55,510 我有这个目录在这里。 382 00:16:55,510 --> 00:16:58,510 所以,我在那一刻,我可以继续前进, 在国王詹姆斯圣经运行此, 383 00:16:58,510 --> 00:16:59,657 按Enter键。 384 00:16:59,657 --> 00:17:01,990 这是正确的希望 执行结束时, 385 00:17:01,990 --> 00:17:05,109 给我时间总 0.38秒的 386 00:17:05,109 --> 00:17:07,270 1有些武断例子。 387 00:17:07,270 --> 00:17:09,270 >> 如果我现在进入这个 第二个终端窗口 388 00:17:09,270 --> 00:17:14,569 在这里,我第一次打开gedit中,让 我进入今天的代码 - 这又 389 00:17:14,569 --> 00:17:19,650 在该目录下这里 - 和 让我继续运行拼写。 390 00:17:19,650 --> 00:17:23,470 因此,只要是明确的, 这是PHP的版本。 391 00:17:23,470 --> 00:17:25,170 我只是展示它的顶部位置。 392 00:17:25,170 --> 00:17:32,020 >> 所以,如果我做波浪CS50的拼写 PSET 5文字,国王詹姆斯输入。 393 00:17:32,020 --> 00:17:39,700 394 00:17:39,700 --> 00:17:43,050 它仍然比写快 它在C,但总的时间 395 00:17:43,050 --> 00:17:47,650 是,公告,0.93,而我 基于C语言的实现为0.38。 396 00:17:47,650 --> 00:17:49,110 所以这是一个不平凡的区别。 397 00:17:49,110 --> 00:17:51,100 >> 而这仅仅是在一个文件中。 398 00:17:51,100 --> 00:17:53,480 如果你要运行两 项目与大板 399 00:17:53,480 --> 00:17:56,510 并有一大堆的投入 经过测试,这肯定会增加。 400 00:17:56,510 --> 00:18:00,310 如果我们有更大的数据集, 这也将增加了所有的多。 401 00:18:00,310 --> 00:18:04,820 所以,是的,付出一些代价 速度的确是这样的。 402 00:18:04,820 --> 00:18:05,470 还有什么? 403 00:18:05,470 --> 00:18:08,000 404 00:18:08,000 --> 00:18:08,860 是吗? 405 00:18:08,860 --> 00:18:10,340 >> 学生:内存使用量。 406 00:18:10,340 --> 00:18:11,756 >> DAVID J.马兰:内存使用量。 407 00:18:11,756 --> 00:18:15,380 所以,我没有给1秒 写这篇文章时,PHP想到 408 00:18:15,380 --> 00:18:17,300 版本到多少 内存我用。 409 00:18:17,300 --> 00:18:22,080 我完全是推迟到PHP 自己和谁写的程序。 410 00:18:22,080 --> 00:18:24,500 而这可能是OK, 但如果我真的真的 411 00:18:24,500 --> 00:18:28,420 关心挤压尽可能多的性能 我的节目或我的网站 412 00:18:28,420 --> 00:18:31,150 或者出什么工具 我建立的,也许 413 00:18:31,150 --> 00:18:33,310 PHP确实是不正确的语言。 414 00:18:33,310 --> 00:18:36,330 >> 而事实上,这是为什么, 例如,很多网站servers-- 415 00:18:36,330 --> 00:18:38,980 实际的程序 成为了网络内容 - 416 00:18:38,980 --> 00:18:41,810 是不是用PHP写的 或Python或Ruby。 417 00:18:41,810 --> 00:18:44,630 它们被写入,像 现在你会做PSET 6, 418 00:18:44,630 --> 00:18:48,120 在C中,这样就可以挤 每一位的表现出来呢 419 00:18:48,120 --> 00:18:50,780 而真正行使 在什么样的细粒度控制 420 00:18:50,780 --> 00:18:52,980 怎么回事下方 油烟机而不是仅仅把它 421 00:18:52,980 --> 00:18:54,890 理所当然更高一些 级数据结构。 422 00:18:54,890 --> 00:18:58,071 >> 考虑一下,毕竟, 谁PHP实现 423 00:18:58,071 --> 00:19:00,070 散列的概念 table--它实际上更多 424 00:19:00,070 --> 00:19:04,260 妥善称为关联array-- 他或她有任何想法什么样的 425 00:19:04,260 --> 00:19:07,090 输入您将要 投入的结构? 426 00:19:07,090 --> 00:19:08,260 所以,很显然不是,对不对? 427 00:19:08,260 --> 00:19:10,340 这是一个通用的工具 在工具箱的 428 00:19:10,340 --> 00:19:13,430 提供给任何人谁想要 要使用它,所以它肯定 429 00:19:13,430 --> 00:19:17,680 不能被最终优化 为正是你想要做什么。 430 00:19:17,680 --> 00:19:21,180 >> 因此,贸易offs--开发时间可能 不同,性能可能会有所不同, 431 00:19:21,180 --> 00:19:23,120 复杂性和内存使用情况可能会有所不同。 432 00:19:23,120 --> 00:19:24,820 还等什么,你会发现 越来越多的是,有 433 00:19:24,820 --> 00:19:26,570 将不同 工具的交易。 434 00:19:26,570 --> 00:19:31,160 而事实上一个超级多数 人们最后的项目在这个类中, 435 00:19:31,160 --> 00:19:34,360 不管你信不信,C是不会 是正确的语言来使用。 436 00:19:34,360 --> 00:19:37,880 >> 而事实上,一个外卖的 最终为任何一类这样的 437 00:19:37,880 --> 00:19:40,510 是让你思考, 好了,应该怎么决绝 438 00:19:40,510 --> 00:19:42,710 你要下架的时候 要解决一些问题。 439 00:19:42,710 --> 00:19:46,720 而事实上,我们跨过这道坎 更因为我们看更多的语言 440 00:19:46,720 --> 00:19:47,920 甚至超越今天。 441 00:19:47,920 --> 00:19:50,530 >> 因此,让我们过渡到现在 也许是更熟悉的环境 442 00:19:50,530 --> 00:19:52,480 使用像PHP语言。 443 00:19:52,480 --> 00:19:56,720 这有点常见的使用 在命令行中,编写脚本 444 00:19:56,720 --> 00:19:59,050 像我一样,但它的 多,更常见。 445 00:19:59,050 --> 00:20:02,350 和它的目的是在使用 文件的形式,典型地结束 446 00:20:02,350 --> 00:20:05,060 在.php--但是这 不是prerequisite-- 447 00:20:05,060 --> 00:20:07,990 这本身生成的网页内容。 448 00:20:07,990 --> 00:20:11,310 >> 因此,让我继续前进,打开几 例子我提前做好准备。 449 00:20:11,310 --> 00:20:15,100 而这些实际上是某种真实 在那一个的第一件事情故事 450 00:20:15,100 --> 00:20:18,200 我办完做过自己 CS50,也许,我想, 451 00:20:18,200 --> 00:20:21,350 CS51年前是我的 室友和我帮助 452 00:20:21,350 --> 00:20:24,320 运行校内新生 体育节目​​,其中,在当时, 453 00:20:24,320 --> 00:20:28,610 曾新生报名参加各种 通过填写一张纸运动, 454 00:20:28,610 --> 00:20:31,800 因为它被称为,走 穿过院子到威格尔斯沃, 455 00:20:31,800 --> 00:20:34,030 并放到一些 监考的大门下降。 456 00:20:34,030 --> 00:20:37,210 然后,他或她会去通过 他们,然后手动实际上给我们发电子邮件 457 00:20:37,210 --> 00:20:39,140 我们注册了一些运动。 458 00:20:39,140 --> 00:20:41,166 >> 所以很明显,一个机会 改进。 459 00:20:41,166 --> 00:20:44,040 这些天来,你可能会转向只 谷歌形式,但早在一天, 460 00:20:44,040 --> 00:20:46,914 我们要真正达到for--这 甚至没有那么长的时间ago--到达 461 00:20:46,914 --> 00:20:49,410 对于编程 语言,是不是PHP。 462 00:20:49,410 --> 00:20:51,200 当时,它是 一些所谓的Perl, 463 00:20:51,200 --> 00:20:52,890 这是自熄灭时尚的。 464 00:20:52,890 --> 00:20:54,160 但这个想法是一样的。 465 00:20:54,160 --> 00:20:58,940 >> 我本质上坐下来试试 端口进入的Perl版本的PHP, 466 00:20:58,940 --> 00:21:03,710 但在完全免责,没有给 任何认为美学只是还没有。 467 00:21:03,710 --> 00:21:04,960 因此,这里是一个网页。 468 00:21:04,960 --> 00:21:05,670 这是一个文件。 469 00:21:05,670 --> 00:21:09,470 如果我放大,其明显 所谓froshim0.php 470 00:21:09,470 --> 00:21:12,060 只是因为它是我们的第一次 例如,在这个系列。 471 00:21:12,060 --> 00:21:15,970 并注意它有什么出现 是一个非常丑陋的HTML表单, 472 00:21:15,970 --> 00:21:18,680 但形式很有趣 因为它允许 473 00:21:18,680 --> 00:21:21,910 我提供用户输入到浏览器。 474 00:21:21,910 --> 00:21:27,730 >> 现在,最后的时候,我们有一个形式, 谁没有,我们提出我们的查询参数, 475 00:21:27,730 --> 00:21:30,450 因为它是所谓的队列参数? 476 00:21:30,450 --> 00:21:31,330 所以,谷歌,对吗? 477 00:21:31,330 --> 00:21:34,090 我们完全踢上的想法 干什么用该输入什么。 478 00:21:34,090 --> 00:21:36,160 >> 但今天,我们开始产生输出。 479 00:21:36,160 --> 00:21:39,420 而行为我要去看看 这里最初是相当琐碎。 480 00:21:39,420 --> 00:21:42,980 大卫,我会检查过性别 在这里,马修斯说,在这里。 481 00:21:42,980 --> 00:21:43,800 我不会队长。 482 00:21:43,800 --> 00:21:45,410 我要点击注册。 483 00:21:45,410 --> 00:21:50,720 并注意URL有 改为注册,0.php, 484 00:21:50,720 --> 00:21:52,310 再有就是在这里这个丑陋的文本。 485 00:21:52,310 --> 00:21:54,460 我给不计较 这种格式。 486 00:21:54,460 --> 00:21:59,900 >> 但有趣的是,3 值显然来传递。 487 00:21:59,900 --> 00:22:02,960 这是PHP的排序 相当于printf-- 488 00:22:02,960 --> 00:22:06,330 我们将看到它真正被称为 在刚刚打印出bit-- 489 00:22:06,330 --> 00:22:08,300 你传递给它的东西。 490 00:22:08,300 --> 00:22:11,414 因此,这表明,这种形式 有至少三个字段,它 491 00:22:11,414 --> 00:22:12,580 你看到我输入他们进来。 492 00:22:12,580 --> 00:22:15,739 一个是我的名字,一个是 性别,一个是宿舍。 493 00:22:15,739 --> 00:22:18,780 和队长甚至都没有被发送到 服务器,因为我没有检查它。 494 00:22:18,780 --> 00:22:22,150 >> 因此,这显然是说, 当你提交的东西在网络上, 495 00:22:22,150 --> 00:22:26,830 不仅做了URL有时 change--有时没有。 496 00:22:26,830 --> 00:22:30,330 事实上,文件名改变, 但究竟是从URL缺席 497 00:22:30,330 --> 00:22:32,861 我们确实看到最后一次与谷歌。 498 00:22:32,861 --> 00:22:33,360 是吗? 499 00:22:33,360 --> 00:22:34,380 >> 学生:没有查询字符串 500 00:22:34,380 --> 00:22:35,220 >> DAVID J.马兰:有没有查询字符串。 501 00:22:35,220 --> 00:22:37,270 有没有问号的东西。 502 00:22:37,270 --> 00:22:40,050 有没有问号Q 等于猫,因为我们做了最后一次。 503 00:22:40,050 --> 00:22:42,170 而且也肯定没有 问号名称等于 504 00:22:42,170 --> 00:22:46,310 大卫宿舍或等于马修斯, 那么,是所有的准备? 505 00:22:46,310 --> 00:22:51,290 >> 好了,让我回去在这里gedit中 并开辟了第一个这些文件 506 00:22:51,290 --> 00:22:57,020 在我的虚拟主机,本地主机,公共 在此目录中,进入froshim0。 507 00:22:57,020 --> 00:23:02,060 所以,事实证明,几乎 所有本页面仅仅是HTML。 508 00:23:02,060 --> 00:23:05,410 这可能是你不熟悉的, 但它很快会更因此与PSET 6 509 00:23:05,410 --> 00:23:07,370 和PSET 7和PSET 8。 510 00:23:07,370 --> 00:23:09,160 但是这仅仅是一个HTML页面。 511 00:23:09,160 --> 00:23:12,400 >> 而有趣的东西 似乎是在这里。 512 00:23:12,400 --> 00:23:16,290 它的action属性的表单标签 有寄存器0的一个值。 513 00:23:16,290 --> 00:23:18,890 这就是为什么当我提交 此,它进入到该文件。 514 00:23:18,890 --> 00:23:20,620 但方法不同today--职位。 515 00:23:20,620 --> 00:23:23,120 因此,原来还有的至少 在网络上使用两种方法 516 00:23:23,120 --> 00:23:24,911 发送信息 从浏览器到服务器。 517 00:23:24,911 --> 00:23:25,980 获取所说的URL。 518 00:23:25,980 --> 00:23:27,950 发表在其他地方所说的那样。 519 00:23:27,950 --> 00:23:30,570 而什么时候,为什么你可能 其实想一个网站 520 00:23:30,570 --> 00:23:34,110 使用后则改为 弄,只是凭直觉? 521 00:23:34,110 --> 00:23:37,080 任何网站。 522 00:23:37,080 --> 00:23:42,010 什么样的数据应该只是通过 由通过邮寄,现在的推断,而不是 523 00:23:42,010 --> 00:23:45,184 得到的,如果我们已经看到了 两者区别在哪里? 524 00:23:45,184 --> 00:23:46,350 学生:[听不清]保障。 525 00:23:46,350 --> 00:23:47,790 DAVID J.马兰:如果你想 什么是安全的。 526 00:23:47,790 --> 00:23:50,360 所以,你可以键入密码 到网站,信用卡 527 00:23:50,360 --> 00:23:53,030 到网站会 这些种类的次优 528 00:23:53,030 --> 00:23:56,220 如果浏览器把那 值的URL的内部。 529 00:23:56,220 --> 00:23:57,680 为什么呢? 530 00:23:57,680 --> 00:24:00,059 你看它,它不 似乎是这样的一个大问题, 531 00:24:00,059 --> 00:24:03,350 但可能你很频繁地走路 远离电脑或使用电脑 532 00:24:03,350 --> 00:24:05,310 实验室等人 别人甚至是室友 533 00:24:05,310 --> 00:24:08,220 可以很容易地行走,看看 私人信息。 534 00:24:08,220 --> 00:24:10,220 当您发送一封电子邮件, 通过网络,你可能 535 00:24:10,220 --> 00:24:12,350 不希望出现这种结局的数据 在该URL为好。 536 00:24:12,350 --> 00:24:15,266 所以有任何数目的原因 我们为什么要放在这里。 537 00:24:15,266 --> 00:24:18,610 即使和photos--吧,我不是很 想象一下,你会如何利用图形, 538 00:24:18,610 --> 00:24:21,480 如JPEG,并把它变成一个URL。 539 00:24:21,480 --> 00:24:22,330 你可以做到这一点。 540 00:24:22,330 --> 00:24:25,840 还有它的编码方式,但它的 只是不能直接这样。 541 00:24:25,840 --> 00:24:29,030 >> 所以寄存器0实际上是 很给人留下深刻印象。 542 00:24:29,030 --> 00:24:31,610 所有它说,从字面上是这样。 543 00:24:31,610 --> 00:24:35,910 它打印出的一些内幕 HTML标签下面。 544 00:24:35,910 --> 00:24:38,640 我有一个PHP标签在这里 嵌套的预标记的内部。 545 00:24:38,640 --> 00:24:42,300 “预”的意思只是预格式化的文本, 单倍行距,就像一台打字机。 546 00:24:42,300 --> 00:24:44,836 >> Printr是打印递归函数。 547 00:24:44,836 --> 00:24:46,710 再有就是这个 这里有趣的事情。 548 00:24:46,710 --> 00:24:48,835 我们会回到这个 因为这里的人, 549 00:24:48,835 --> 00:24:51,140 但美元符号下划线 交的似乎是 550 00:24:51,140 --> 00:24:56,110 在PHP中的变量在任何 送你从浏览器到服务器 551 00:24:56,110 --> 00:24:58,040 被存储为您服务。 552 00:24:58,040 --> 00:25:00,930 我们将看到如何得到的 不久该信息。 553 00:25:00,930 --> 00:25:04,000 >> 但首先,让我们回去 一个稍微不同的实施例。 554 00:25:04,000 --> 00:25:09,050 进入register--或 相反,froshims1.php, 555 00:25:09,050 --> 00:25:10,470 这看起来有点不同。 556 00:25:10,470 --> 00:25:12,670 我花了一点 努力与格式, 557 00:25:12,670 --> 00:25:14,370 即使它仍然是相当难看。 558 00:25:14,370 --> 00:25:16,990 但我要继续前进 而输入“万人迷”了。 559 00:25:16,990 --> 00:25:17,850 男性。 560 00:25:17,850 --> 00:25:19,360 我们将检查“队长”这个时候。 561 00:25:19,360 --> 00:25:20,660 我们会做马修斯。 562 00:25:20,660 --> 00:25:22,430 并注册。 563 00:25:22,430 --> 00:25:24,110 >> 而这个时候它说,嗯,不是真的。 564 00:25:24,110 --> 00:25:26,180 好吧,那么什么是寄存器1? 565 00:25:26,180 --> 00:25:30,509 让我进入开放注册1还有 - HM。 566 00:25:30,509 --> 00:25:32,300 好了,所以这是 有趣的,这 567 00:25:32,300 --> 00:25:34,880 是一个敲门砖,现在走向 更有趣的节目。 568 00:25:34,880 --> 00:25:38,970 >> 请注意上面的这个文件有一个 PHP标签以及一些意见。 569 00:25:38,970 --> 00:25:42,590 而这些,就目前而言,分心 让我们刚刚摆脱这些意见 570 00:25:42,590 --> 00:25:47,070 就像他们在C和我要求 与此块的代码注释 571 00:25:47,070 --> 00:25:49,280 这个代码 确认提交。 572 00:25:49,280 --> 00:25:51,690 >> 嗯,事实证明, 像美元符号变量 573 00:25:51,690 --> 00:25:53,739 下划线是后 所谓的超全局变量。 574 00:25:53,739 --> 00:25:55,530 他们是这样的 特殊的全局变量 575 00:25:55,530 --> 00:25:58,840 这只是全现 可在程序中。 576 00:25:58,840 --> 00:26:03,870 您可以使用方括号 索引到他们不要使用数字 577 00:26:03,870 --> 00:26:07,460 像0,1,2,3,但实际的话。 578 00:26:07,460 --> 00:26:12,100 >> 所以,你能想到的美元符号 强调担任排序哈希表 579 00:26:12,100 --> 00:26:15,920 你可以通过一键进入,查找 单词在中间的方括号中, 580 00:26:15,920 --> 00:26:19,370 并且它会退给你 该用户实际提供的值。 581 00:26:19,370 --> 00:26:21,210 PHP有一个功能 所谓空,仅仅 582 00:26:21,210 --> 00:26:23,720 说是或否,这 变量为空或不是。 583 00:26:23,720 --> 00:26:27,250 我们有这些双线, 这只是意味着,或者像C. 584 00:26:27,250 --> 00:26:31,740 >> 这样在实际上,这4行仅 他说,如果用户没有给一个名字 585 00:26:31,740 --> 00:26:36,540 或者没有给出一个性别或没 给一个宿舍,继续和他重定向 586 00:26:36,540 --> 00:26:38,184 或者通过该行这里她。 587 00:26:38,184 --> 00:26:40,600 所以这是一个有点神秘, 但是这只是字面上的意思 588 00:26:40,600 --> 00:26:43,330 回到这个位置, 所以平底船用户 589 00:26:43,330 --> 00:26:45,420 回到无论他或她是从哪里来的。 590 00:26:45,420 --> 00:26:47,880 但它是一个有点不雅 在我硬编码了。 591 00:26:47,880 --> 00:26:52,150 >> 但是,如果这种情况的话 不计算为真? 592 00:26:52,150 --> 00:26:55,790 如果用户没有给我他 或她的名字和宿舍,性别? 593 00:26:55,790 --> 00:26:58,540 如果条件不 要评估为true, 594 00:26:58,540 --> 00:27:00,650 所以我不打第7行中退出。 595 00:27:00,650 --> 00:27:01,680 所以会发生什么? 596 00:27:01,680 --> 00:27:03,880 这是什么 有趣的关于PHP。 597 00:27:03,880 --> 00:27:07,470 >> 你可以将流入和流出 PHP模式,可以这么说。 598 00:27:07,470 --> 00:27:10,985 如果你想一些代码来执行, 您可以打开和关闭PHP标签 599 00:27:10,985 --> 00:27:13,010 并把代码中有像我在这里所做的。 600 00:27:13,010 --> 00:27:16,810 一旦你关闭 PHP的标签,服务器 601 00:27:16,810 --> 00:27:19,407 只是要吐 无论你放在那里。 602 00:27:19,407 --> 00:27:21,740 事实上,这是一部分 PHP的原创设计, 603 00:27:21,740 --> 00:27:25,280 为更好地恶化,这是 代码和标记搀和 604 00:27:25,280 --> 00:27:25,920 语言。 605 00:27:25,920 --> 00:27:28,670 我们将看到,这很 赶紧转予成一团糟。 606 00:27:28,670 --> 00:27:31,280 所以我们会做的更好比 这最终只是 607 00:27:31,280 --> 00:27:35,620 注意难易程度,我 居然能够执行一些逻辑。 608 00:27:35,620 --> 00:27:37,440 >> 但还是有点给人留下深刻印象。 609 00:27:37,440 --> 00:27:41,210 让我们打开了版本 2即时的新生,哪 610 00:27:41,210 --> 00:27:44,270 显然提交给register2.php。 611 00:27:44,270 --> 00:27:47,600 因此,这个文件实际上会 看起来几乎是一样的。 612 00:27:47,600 --> 00:27:50,780 我会去的新生即时消息2。 613 00:27:50,780 --> 00:27:53,050 但是,在即时的新生2, 让我们看看会发生什么。 614 00:27:53,050 --> 00:27:58,110 >> 大卫,点击单选按钮, 这就是所谓的;马修斯,没有队长。 615 00:27:58,110 --> 00:27:59,230 注册。 616 00:27:59,230 --> 00:28:00,130 您已注册。 617 00:28:00,130 --> 00:28:00,700 并不是的。 618 00:28:00,700 --> 00:28:02,574 哦,等一下,我们只是做 这个例子,不是吗? 619 00:28:02,574 --> 00:28:04,520 好吧,袖手旁观。 620 00:28:04,520 --> 00:28:06,602 我们会做三个。 621 00:28:06,602 --> 00:28:08,560 显然,一些是关于 发生与Gmail。 622 00:28:08,560 --> 00:28:09,600 我们会到达那里。 623 00:28:09,600 --> 00:28:11,900 >> 因此,即时的新生3看起来是这样的。 624 00:28:11,900 --> 00:28:13,050 没有什么不同。 625 00:28:13,050 --> 00:28:19,850 但是当我做大卫,男,马修斯和 注册,这第三个也是最后版本 626 00:28:19,850 --> 00:28:22,230 索赔,很简单,你 注册真的。 627 00:28:22,230 --> 00:28:23,560 这就是那种无关紧要的。 628 00:28:23,560 --> 00:28:25,600 但我要求这个 第三个也是最后版本 629 00:28:25,600 --> 00:28:30,610 现在我已经重新正是我 室友和我建立了即时的新生 630 00:28:30,610 --> 00:28:31,731 程序年前。 631 00:28:31,731 --> 00:28:32,480 它很简单。 632 00:28:32,480 --> 00:28:34,330 没有数据库, 没有Excel电子表格。 633 00:28:34,330 --> 00:28:36,450 但更重要的是, 没有更多的纸 634 00:28:36,450 --> 00:28:42,520 因为我们这个项目做了 是真正的电子邮件监考官,谁 635 00:28:42,520 --> 00:28:44,530 此前接受 这些东西通过表格。 636 00:28:44,530 --> 00:28:48,890 >> 显然我们在编写此 这样一种方式,当某人寄存器, 637 00:28:48,890 --> 00:28:52,470 约翰·哈佛的帐户的电子邮件 在这种情况下proctor--还是他自己, 638 00:28:52,470 --> 00:28:55,960 约翰Harvard--具有以下 text--“此人刚注册的。” 639 00:28:55,960 --> 00:29:00,560 名字是大卫,队长是空白的; 性别,男;和宿舍,马修斯。 640 00:29:00,560 --> 00:29:01,560 >> 到底发生了什么呢? 641 00:29:01,560 --> 00:29:05,360 好了,在这里的问题文件 显然register3.php。 642 00:29:05,360 --> 00:29:09,080 如果我开这一点,你会看到 像这样的代码,两者的力量 643 00:29:09,080 --> 00:29:12,380 而且,坦率地说,不安全 像电​​子邮件系统。 644 00:29:12,380 --> 00:29:16,290 我刚才有效地假装 约翰·哈佛以下面的方式。 645 00:29:16,290 --> 00:29:20,920 >> 我开的PHP标签往上顶,这 只是说这里来了一些PHP代码。 646 00:29:20,920 --> 00:29:23,155 到这里,原来有 在PHP库。 647 00:29:23,155 --> 00:29:26,410 你只是不需要 包含头文件一样多。 648 00:29:26,410 --> 00:29:28,900 你得到更多的 厨房水槽,可以这么说。 649 00:29:28,900 --> 00:29:31,820 >> 但是这一次在第4行,我做的 想所谓的特殊库 650 00:29:31,820 --> 00:29:36,087 PHP的邮件,这是你的东西 可以免费在许多系统上安装。 651 00:29:36,087 --> 00:29:37,920 到这里,我验证 在刚刚提交 652 00:29:37,920 --> 00:29:40,540 通过检查没有用户给 我的名字,性别,和宿舍。 653 00:29:40,540 --> 00:29:44,130 如果是的话,请继续 实例化一个邮件。 654 00:29:44,130 --> 00:29:47,020 >> 你可以把这个作为一个 线是刚刚分配的代码。 655 00:29:47,020 --> 00:29:48,950 这就像malloc的,但 这是一个有点性感 656 00:29:48,950 --> 00:29:51,790 在你提到不只是 malloc和一些通用的编号。 657 00:29:51,790 --> 00:29:55,030 你说给我其中的一个, 给我这一个新的。 658 00:29:55,030 --> 00:29:57,950 >> 如果您在已设定 Java或C ++或其他语言, 659 00:29:57,950 --> 00:29:59,130 你可能已经看到了这一点。 660 00:29:59,130 --> 00:30:01,840 但是它的短,如果 陌生,这条线 661 00:30:01,840 --> 00:30:05,410 投入到美元符号的邮件 特殊的结构称为 662 00:30:05,410 --> 00:30:08,731 已内置对象 电子邮件功能。 663 00:30:08,731 --> 00:30:10,355 而事实上,通知和类似的语法。 664 00:30:10,355 --> 00:30:11,900 >> 这不是一个指针,本身。 665 00:30:11,900 --> 00:30:13,990 PHP只是使用相同的语法。 666 00:30:13,990 --> 00:30:17,660 该行称使用 SMTP--简单邮件传输 667 00:30:17,660 --> 00:30:20,900 协议,它仅仅是 协议,用于发送邮件。 668 00:30:20,900 --> 00:30:24,240 这是指定用途 哈佛大学的SMTP服务器, 669 00:30:24,240 --> 00:30:25,830 是在这里的某处校园。 670 00:30:25,830 --> 00:30:28,480 >> 这是说什么TCP 端口号,聊得来, 671 00:30:28,480 --> 00:30:31,650 我只是想通了这一点通过 谷歌搜索或询问服务台。 672 00:30:31,650 --> 00:30:34,640 然后,因为哈佛的使用了一些 在邮件server--系统安全 673 00:30:34,640 --> 00:30:37,060 至少要加密 你和它之间的流量, 674 00:30:37,060 --> 00:30:41,380 虽然任何人都可以发送给它 - 我要打开TLS协议 675 00:30:41,380 --> 00:30:42,710 为保持这种安全的。 676 00:30:42,710 --> 00:30:44,730 >> 但是,这是哪里的东西 变得有点吓人。 677 00:30:44,730 --> 00:30:47,970 我可以随意 说我jharvard, 678 00:30:47,970 --> 00:30:51,930 而且我可以随意 在这里我发电子邮件。 679 00:30:51,930 --> 00:30:55,650 然后,我可以指定一个 受这条线在这里。 680 00:30:55,650 --> 00:30:58,460 >> 而这只是长相丑陋,但它的 只是一堆级联。 681 00:30:58,460 --> 00:31:04,480 原来,PHP有一个超好用的象征, 像一些语言,点操作符, 682 00:31:04,480 --> 00:31:07,340 这只是字面上符连接 字符串的字符串后的字符串后, 683 00:31:07,340 --> 00:31:09,810 你不必对malloc或图 出字符串的总长度。 684 00:31:09,810 --> 00:31:10,820 你就去做。 685 00:31:10,820 --> 00:31:15,220 事实上,因为我串联 在所有这些事情与这些点, 686 00:31:15,220 --> 00:31:18,330 这就是为什么我的电子邮件 发送看了,因为它没有。 687 00:31:18,330 --> 00:31:20,610 >> 然后最后在这里,我要送的邮件。 688 00:31:20,610 --> 00:31:22,580 因此,如果这是假的, 我只是会死, 689 00:31:22,580 --> 00:31:25,680 这是一个函数,只是打印 到屏幕上的一些错误信息。 690 00:31:25,680 --> 00:31:29,170 但是,实际上, 调用send功能。 691 00:31:29,170 --> 00:31:31,780 否则,如果所有的失败, 它重定向我回到这里。 692 00:31:31,780 --> 00:31:34,050 >> 还有,为什么我看到 我注册的是吗? 693 00:31:34,050 --> 00:31:36,110 嗯,这事就在这里。 694 00:31:36,110 --> 00:31:38,170 所以我提出来的 有两个原因。 695 00:31:38,170 --> 00:31:41,542 >> 一,这是究竟如何,如果你建 一些网站的最终项目 696 00:31:41,542 --> 00:31:44,000 或用于现实世界中,这是 你如何发送电子邮件提醒 697 00:31:44,000 --> 00:31:45,924 给你的客户或你的用户。 698 00:31:45,924 --> 00:31:47,590 这是你如何发送密码的提醒。 699 00:31:47,590 --> 00:31:50,760 这是你如何发送人的邮件 他们有一个新的Facebook 700 00:31:50,760 --> 00:31:52,990 消息尚未了结或类似的东西。 701 00:31:52,990 --> 00:31:55,010 >> 但它也说话 的事实,这可能 702 00:31:55,010 --> 00:31:58,160 一直非常好,从 达文或其他任何人。 703 00:31:58,160 --> 00:32:00,567 我说这样的 面带微笑,因为我 704 00:32:00,567 --> 00:32:03,400 搞不清是怎么回事,通过 几个你的心在这一点上。 705 00:32:03,400 --> 00:32:11,910 但是,这是其中的一个做的,因为我 说,还不如我做那种事情, 706 00:32:11,910 --> 00:32:14,480 因为它是微不足道的 建立这样的电子邮件。 707 00:32:14,480 --> 00:32:16,480 但正如你可能已经看到 或阅读深红, 708 00:32:16,480 --> 00:32:18,271 最近它也是相当 平凡的人 709 00:32:18,271 --> 00:32:20,050 跟踪他们回到一些原点。 710 00:32:20,050 --> 00:32:23,790 并问我一些时间,也许 在CS50的午餐,我第一次 711 00:32:23,790 --> 00:32:27,080 相识非常密切 几乎到了编辑委员会多年 712 00:32:27,080 --> 00:32:30,890 以前,当我发现 互联网如何工作。 713 00:32:30,890 --> 00:32:36,940 因此,在任何case--略 之后,编辑终于上了。 714 00:32:36,940 --> 00:32:42,300 >> 所以,在任何情况下,存在一个 一大堆超级全局变量, 715 00:32:42,300 --> 00:32:45,960 因为它们在这里被称为,其中一个 我们saw--美元符号下划线后。 716 00:32:45,960 --> 00:32:49,530 有一个名为get对应, 这是哪里的东西从一个URL 717 00:32:49,530 --> 00:32:50,690 结束了下去。 718 00:32:50,690 --> 00:32:54,051 而且还有一大堆其他的, too--会话和服务器的cookie。 719 00:32:54,051 --> 00:32:55,800 我们会回来 cookie的一些其它时间 720 00:32:55,800 --> 00:33:01,340 但会是一种很酷的 因为右now--直到now-- 721 00:33:01,340 --> 00:33:06,350 一切,我们已经与Web浏览器进行 是那种无状态的,可以这么说。 722 00:33:06,350 --> 00:33:10,060 我可以按一下周围,接入 在服务器上,文件的东西 723 00:33:10,060 --> 00:33:13,500 发生在屏幕上,但 那么连接关闭。 724 00:33:13,500 --> 00:33:17,450 在Internet Explorer或 Firefox的图标停止旋转 725 00:33:17,450 --> 00:33:20,340 你刚才看到了什么 该网页包含的内容。 726 00:33:20,340 --> 00:33:23,530 >> 因此,HTTP是无状态的那 一旦建立连接, 727 00:33:23,530 --> 00:33:25,050 得到了一些数据,仅此而已。 728 00:33:25,050 --> 00:33:29,940 没有更多的连接,不像Skype公司, 不同的Facetime,谷歌聊天软件不同,它 729 00:33:29,940 --> 00:33:32,180 保持恒定的 连接到服务器。 730 00:33:32,180 --> 00:33:34,650 网页是从根本上 断开,虽然我们 731 00:33:34,650 --> 00:33:36,630 不久怎么看 我们可以模拟的东西 732 00:33:36,630 --> 00:33:39,300 像Facebook聊天和谷歌聊天软件, 它保持illusion-- 733 00:33:39,300 --> 00:33:41,680 或实际上做维护 使用持续连接 734 00:33:41,680 --> 00:33:43,270 更多的现代技术。 735 00:33:43,270 --> 00:33:49,000 >> 但是,如果我去,说,counter.php, 这是另一种简单的例子, 736 00:33:49,000 --> 00:33:52,700 正如我们所看到的,目前认为 我参观了现场零时。 737 00:33:52,700 --> 00:33:56,790 但如果我只是重新载入页面, 它在某种程度上知道我在这里之前。 738 00:33:56,790 --> 00:33:58,840 如果我再次重装,它 知道我在这里之前。 739 00:33:58,840 --> 00:34:01,100 一次又一次,再而三。 740 00:34:01,100 --> 00:34:03,610 >> 因此,有一些加plussing 怎么回事,但通知 741 00:34:03,610 --> 00:34:07,090 这个小东西不断旋转,使 简要地往上顶,然后断开连接, 742 00:34:07,090 --> 00:34:11,179 所以它不是像我有一个恒定的 连接到我的设备。 743 00:34:11,179 --> 00:34:16,929 好吧,如果我进入counter.php, 注意到它是多么的简单。 744 00:34:16,929 --> 00:34:19,080 我第一次把这种特殊的 函数,我们很快就会 745 00:34:19,080 --> 00:34:21,513 开始服用理所当然 所谓的会话开始。 746 00:34:21,513 --> 00:34:22,179 启动一个会话。 747 00:34:22,179 --> 00:34:25,095 >> 和会话今后就是 将是一个水桶,像一个购物 748 00:34:25,095 --> 00:34:28,120 购物车中,你可以把值 和那种信任,作为一个程序员 749 00:34:28,120 --> 00:34:31,590 他们打算到这里来的时候 该用户自带back--第二 750 00:34:31,590 --> 00:34:35,670 后来,一个小时后,甚至一年后, 只要他或她不明朗 751 00:34:35,670 --> 00:34:37,602 他们的饼干,因为我们最终会看到的。 752 00:34:37,602 --> 00:34:39,310 现在我只是有 如果一个条件在这里。 753 00:34:39,310 --> 00:34:44,679 因此,如果下面的项, 所谓的专柜,设置里面 754 00:34:44,679 --> 00:34:49,210 这个超级global--这个哈希 表,如果你will--所谓会话, 755 00:34:49,210 --> 00:34:53,350 然后继续前进,抓住 从session--思考价值 756 00:34:53,350 --> 00:34:55,250 此作为购物 车 - 并将其存储 757 00:34:55,250 --> 00:34:57,680 在所谓的柜台临时变量。 758 00:34:57,680 --> 00:35:02,240 >> 否则,如果该值是计数器 没有设置所谓的购物车, 759 00:35:02,240 --> 00:35:04,430 只需将它初始化为0。 760 00:35:04,430 --> 00:35:09,830 最后,到这里,去放回 放入购物车或会话 761 00:35:09,830 --> 00:35:13,000 计数器1的值。 762 00:35:13,000 --> 00:35:16,730 所以,事实证明,这 特种集装箱这里 - 763 00:35:16,730 --> 00:35:20,355 这又是这些相关联的一个 数组,数组,你可以索引 764 00:35:20,355 --> 00:35:25,010 进言,而不是numbers-- 后仍存在用户消失。 765 00:35:25,010 --> 00:35:26,510 再次,我会回去的页面了。 766 00:35:26,510 --> 00:35:28,400 它是一分钟左右。 767 00:35:28,400 --> 00:35:31,300 但记得,我已经 来过19次。 768 00:35:31,300 --> 00:35:32,740 这是我20日访华。 769 00:35:32,740 --> 00:35:36,560 >> 所以这将是关键 实施该记住任何网站 770 00:35:36,560 --> 00:35:40,640 你已经登录,你把 您的购物车字面的东西 771 00:35:40,640 --> 00:35:43,902 买,或者你有一些 消息数待定。 772 00:35:43,902 --> 00:35:45,610 任何时候你想要 记住的信息, 773 00:35:45,610 --> 00:35:48,130 我们会看到,PHP,像 其他几种语言, 774 00:35:48,130 --> 00:35:53,640 为我们提供了这种幻觉状态 尽管,您将在PSET 6看, 775 00:35:53,640 --> 00:35:57,642 当你正在做的HTTP请求 从客户端到服务器,仅此而已。 776 00:35:57,642 --> 00:35:59,850 一旦你回来了 对此,没有什么更多 777 00:35:59,850 --> 00:36:01,790 默认情况下,来从服务器返回。 778 00:36:01,790 --> 00:36:03,820 但是,我们将看到如何解决的。 779 00:36:03,820 --> 00:36:07,430 >> 现在好了,让我们尝试 打扫一下一点点。 780 00:36:07,430 --> 00:36:09,470 我们已经看到了一些 不同的例子在那里。 781 00:36:09,470 --> 00:36:12,250 哦,顺便说一句,对于 那些熟悉或不熟悉的, 782 00:36:12,250 --> 00:36:14,230 的原因,该 即时的新生例如去 783 00:36:14,230 --> 00:36:18,060 从寻找真 丑slightly--好, 784 00:36:18,060 --> 00:36:23,160 还是ugly--小幅 不太难看,虽然仍然难看 785 00:36:23,160 --> 00:36:25,230 因为如果我们看 在这里的源代码, 786 00:36:25,230 --> 00:36:28,240 事实证明,我有这样的 在该文件的顶部。 787 00:36:28,240 --> 00:36:32,570 >> 事实证明,自举是其中之一 免费的图书馆那里 788 00:36:32,570 --> 00:36:37,140 存在不是编程语言 永远,但对于CSS或JavaScript的 789 00:36:37,140 --> 00:36:39,190 或HTML或者任何数量的语言。 790 00:36:39,190 --> 00:36:42,160 >> 而这些人这里 - 本来就出来了 791 00:36:42,160 --> 00:36:44,730 Twitter--的只是有 一大堆的风格。 792 00:36:44,730 --> 00:36:47,360 这是一个巨大的文件 在这里,有人写道: 793 00:36:47,360 --> 00:36:51,020 或某人的写道,随着时间的推移 指定颜色和格式 794 00:36:51,020 --> 00:36:53,740 和诸如此类的东西,这样我可以 那种借自己的语法 795 00:36:53,740 --> 00:36:56,157 而不是要搞清楚 如何布置自己的状态。 796 00:36:56,157 --> 00:36:57,990 这也被缩小的 使得计算机能够 797 00:36:57,990 --> 00:37:00,560 理解但不 不一定是人。 798 00:37:00,560 --> 00:37:03,050 所以,这就是为什么在 风格化有改变。 799 00:37:03,050 --> 00:37:05,450 >> 但是,让我们现在做的更好 在设计方面, 800 00:37:05,450 --> 00:37:07,490 因为如果我们停留下来 这条路太长, 801 00:37:07,490 --> 00:37:11,290 我们的代码的要 会导致混乱和混乱。 802 00:37:11,290 --> 00:37:13,040 因此,让我们专注于这些例子在这里。 803 00:37:13,040 --> 00:37:15,090 最后今天。 804 00:37:15,090 --> 00:37:18,720 >> 因此,这里是一个超级简单 对CS50的网站1.0版本。 805 00:37:18,720 --> 00:37:21,250 它只有链接 讲座和课程大纲, 806 00:37:21,250 --> 00:37:25,490 和它的使用无序列表 tag--我们上一次使用的UL标记。 807 00:37:25,490 --> 00:37:28,800 如果事实上,如果我 打开查看页面源代码, 808 00:37:28,800 --> 00:37:31,710 你会看到,这是 真的,真的很简单的HTML。 809 00:37:31,710 --> 00:37:35,460 而事实上,尽管这是 引擎盖下的一个PHP文件, 810 00:37:35,460 --> 00:37:38,620 它仍然只是随地吐痰 只出HTML现在。 811 00:37:38,620 --> 00:37:41,312 >> 所以,如果我点击讲座, 我们看到这样的情况。 812 00:37:41,312 --> 00:37:43,020 如果我点击周 零,我们看到这一点。 813 00:37:43,020 --> 00:37:44,920 如果我点击 周三,我们看到这一点。 814 00:37:44,920 --> 00:37:47,900 这显然​​是PDF 从当天的幻灯片。 815 00:37:47,900 --> 00:37:52,020 所有我做的是一个带有链接 锚点标​​记这个网址在这里。 816 00:37:52,020 --> 00:37:55,400 >> 所以,这只是说这是一个相当 简单的版本CS50的网站。 817 00:37:55,400 --> 00:37:56,790 让我们来看看它是如何实现的。 818 00:37:56,790 --> 00:38:01,240 如果我进入mvc0目录, 我们会看到几个文件。 819 00:38:01,240 --> 00:38:03,250 一个是自述的,所以如果 一些这是太快了, 820 00:38:03,250 --> 00:38:05,166 你可以闲逛 更悠闲以后。 821 00:38:05,166 --> 00:38:07,930 并注意在这里是一个index.php文件。 822 00:38:07,930 --> 00:38:09,960 事实证明,如果 你自己,人, 823 00:38:09,960 --> 00:38:14,460 没有在指定的最后名称 一个URL,通常是Web服务器 824 00:38:14,460 --> 00:38:17,010 推断一些默认名称为您服务。 825 00:38:17,010 --> 00:38:20,060 一个指数点事 一般是默认的。 826 00:38:20,060 --> 00:38:23,010 >> 所以这就是为什么刚才 当我在这里访问此网址, 827 00:38:23,010 --> 00:38:26,750 没有文件名,没有文件 延长,无期的URL。 828 00:38:26,750 --> 00:38:29,710 它只是知道某种神奇 寻找index.php文件。 829 00:38:29,710 --> 00:38:30,870 这只是一个约定。 830 00:38:30,870 --> 00:38:32,360 可以被称为什么。 831 00:38:32,360 --> 00:38:35,110 >> 所以,如果我现在进入 index.php文件,你会看到 832 00:38:35,110 --> 00:38:37,100 即,indeed--我们 摆脱的评论 833 00:38:37,100 --> 00:38:39,500 因为这里真的 没有什么有趣的它 - 834 00:38:39,500 --> 00:38:41,579 这仅仅是硬编码的HTML。 835 00:38:41,579 --> 00:38:43,370 所以这是一致的, 不过,我的要求 836 00:38:43,370 --> 00:38:45,230 你可以汇成HTML和PHP。 837 00:38:45,230 --> 00:38:48,060 有没有实际的 在这里编程逻辑。 838 00:38:48,060 --> 00:38:51,030 >> 和其他文件相当 多一样无趣。 839 00:38:51,030 --> 00:38:56,240 这只是硬编码一个星期 这里每周一米,每周一W, 840 00:38:56,240 --> 00:38:57,510 周一和周三。 841 00:38:57,510 --> 00:39:01,890 然后如果我打开了零一周, 发现这几乎是相同的。 842 00:39:01,890 --> 00:39:03,320 >> 那是怎样的一个关键外卖的。 843 00:39:03,320 --> 00:39:06,180 请注意,是多么多余,这是。 844 00:39:06,180 --> 00:39:10,710 这些文件几乎没有改变,但我 拉着这些复制/粘贴的工作之一 845 00:39:10,710 --> 00:39:13,420 在那里我花了一file--推测 在本周zero--复制它 846 00:39:13,420 --> 00:39:16,320 在每周一到来的时候, 并调整了几个值。 847 00:39:16,320 --> 00:39:18,590 我们也许应该能够 做的比这更好的。 848 00:39:18,590 --> 00:39:21,800 >> 所以,让我们恢复到MVC 并进入一个版本。 849 00:39:21,800 --> 00:39:24,810 并请注意我有一个 几个文件,原因是什么 850 00:39:24,810 --> 00:39:29,870 是共同所有这些文件只是一个 此刻ago--如果我回去版本0, 851 00:39:29,870 --> 00:39:32,600 让我们回到指数, 而刚刚postulate-- 852 00:39:32,600 --> 00:39:36,090 一旦我摆脱comments--的 这是什么页面的一部分 853 00:39:36,090 --> 00:39:40,072 大概是在每一个我的文件? 854 00:39:40,072 --> 00:39:40,780 只需要调用它。 855 00:39:40,780 --> 00:39:44,620 这行是重复的 可能在所有这些页面? 856 00:39:44,620 --> 00:39:45,120 是吗? 857 00:39:45,120 --> 00:39:46,110 >> 学生:[听不清]。 858 00:39:46,110 --> 00:39:47,660 >> DAVID J.马兰:1〜9。 859 00:39:47,660 --> 00:39:48,720 是的,绝对。 860 00:39:48,720 --> 00:39:52,080 1到9,可能除了8 的变化,因为CS50一点点 861 00:39:52,080 --> 00:39:54,650 成为讲学或 零一周的东西。 862 00:39:54,650 --> 00:39:55,970 但是,几乎是相​​同的。 863 00:39:55,970 --> 00:39:58,657 因此,所有这些东西仅仅是 种复制和粘贴。 864 00:39:58,657 --> 00:40:00,490 还有一对夫妇 其他行,我能想到 865 00:40:00,490 --> 00:40:05,000 那可能是相同的 在所有的文件。 866 00:40:05,000 --> 00:40:06,315 >> 学生:12和13。 867 00:40:06,315 --> 00:40:07,190 DAVID J.马兰:是啊。 868 00:40:07,190 --> 00:40:11,220 当然,12,13,14和可能, 只是因为有趣的东西 869 00:40:11,220 --> 00:40:15,460 是发生在11行 和10,所以它似乎。 870 00:40:15,460 --> 00:40:18,350 因此,让我们来看看第1版, 它试图改善这一点。 871 00:40:18,350 --> 00:40:24,020 在这种MVC example-- 1版本中,我们将 解释什么是MVC方式的moment-- 872 00:40:24,020 --> 00:40:27,420 如果我进入指数种,它 现在看起来有点混乱。 873 00:40:27,420 --> 00:40:28,880 这不是那么简单之前。 874 00:40:28,880 --> 00:40:30,906 >> 但是,一旦你开始 仔细阅读,这是 875 00:40:30,906 --> 00:40:32,530 相当简单的它在做什么。 876 00:40:32,530 --> 00:40:34,397 显然,1号线和 8号线已经取代 877 00:40:34,397 --> 00:40:37,230 大家只是identified--的东西 虽然刚刚好措施, 878 00:40:37,230 --> 00:40:41,900 我只是在某些情况下离开的UL有 天没有的事情列出来。 879 00:40:41,900 --> 00:40:47,860 所以需要有点像英镑 包括C.它复制并粘贴 880 00:40:47,860 --> 00:40:50,470 内容有效 这里到这个文件。 881 00:40:50,470 --> 00:40:53,650 >> 所以在header.php中,你 可以推断,从它的名字, 882 00:40:53,650 --> 00:40:55,330 将是该页面的标题。 883 00:40:55,330 --> 00:40:57,110 它种在这里的孤儿。 884 00:40:57,110 --> 00:41:01,820 它仅具有顶部,但 有下面没有更多的内容。 885 00:41:01,820 --> 00:41:05,070 >> 如果我看一下页脚同时, 这是另一个文件mentioned-- 886 00:41:05,070 --> 00:41:08,830 这其中甚至不感兴趣, 但同样,这是常见的一切。 887 00:41:08,830 --> 00:41:10,250 因此,这是页脚。 888 00:41:10,250 --> 00:41:11,300 这是首部。 889 00:41:11,300 --> 00:41:13,950 这是这是文件 不断变化的,所以为什么不 890 00:41:13,950 --> 00:41:18,140 试图分解出的共性 在这里这两条线? 891 00:41:18,140 --> 00:41:20,090 >> 但是,我们可以清除此 一个远一点。 892 00:41:20,090 --> 00:41:23,260 我要继续前进, 开了两个版本的地方 893 00:41:23,260 --> 00:41:27,106 我们会看到有 一个新的文件,helpers.php。 894 00:41:27,106 --> 00:41:28,610 我们会看到,就是在某一时刻的内容。 895 00:41:28,610 --> 00:41:30,930 让我们去索引,为 入口点和以前一样。 896 00:41:30,930 --> 00:41:35,230 >> 现在发现我需要 helpers.php,不是页眉或页脚。 897 00:41:35,230 --> 00:41:41,720 但助手有点像 helpers.c和helpers.h从PSET 2 898 00:41:41,720 --> 00:41:46,150 或PSET 3不久前,当你真正 没有搜索并找到该PSET, 899 00:41:46,150 --> 00:41:50,950 你把所有的代码进行排序 和搜索在一个单独的文件中。 900 00:41:50,950 --> 00:41:52,510 这就是这里发生了。 901 00:41:52,510 --> 00:41:54,390 >> 现在3号线看起来有点不同。 902 00:41:54,390 --> 00:41:55,920 而这只是一条线。 903 00:41:55,920 --> 00:41:57,950 为了使这更 清楚,我可能只是 904 00:41:57,950 --> 00:42:01,820 确实这是风格上保持一致 与一切,我们已经做到了。 905 00:42:01,820 --> 00:42:04,130 但是,这不是真的 改变的功能。 906 00:42:04,130 --> 00:42:05,880 这只是一条线的实际代码。 907 00:42:05,880 --> 00:42:09,010 >> 很显然,有一个功能 地方叫做渲染头, 908 00:42:09,010 --> 00:42:11,420 这是哪里的东西 变得相当强大。 909 00:42:11,420 --> 00:42:17,040 请注意它的括号里面 就是另一片语法? 910 00:42:17,040 --> 00:42:19,780 911 00:42:19,780 --> 00:42:23,350 它可能是一个有点难以启齿,但 注意there's--我会放一些白 912 00:42:23,350 --> 00:42:24,300 空间。 913 00:42:24,300 --> 00:42:25,530 还有方括号。 914 00:42:25,530 --> 00:42:29,700 >> 和方括号中,我们看到了一点前 在关联数组的情况下, 915 00:42:29,700 --> 00:42:31,580 这是,再次,像散列表。 916 00:42:31,580 --> 00:42:36,230 如果你觉得现在到C时, 为了参数成函数 917 00:42:36,230 --> 00:42:37,570 必须始终是相同的。 918 00:42:37,570 --> 00:42:41,146 你要记住什么 订购is-- X,Y,Z或Z,Y,x-- 919 00:42:41,146 --> 00:42:44,020 你必须总是为他们提供 在同一顺序或找一找 920 00:42:44,020 --> 00:42:45,100 如果您忘记了。 921 00:42:45,100 --> 00:42:51,140 >> 但是,这似乎是一种聪明的办法 路过的一个任意的键值 922 00:42:51,140 --> 00:42:55,840 对由此标题名称 在这种情况下的说法 923 00:42:55,840 --> 00:42:58,334 和CS50是其值。 924 00:42:58,334 --> 00:43:00,250 而事实上,我有 这些方括号 925 00:43:00,250 --> 00:43:02,560 这里的意思是,我可以 还传递东西 926 00:43:02,560 --> 00:43:07,550 象是每周1或0或2或3。 927 00:43:07,550 --> 00:43:10,550 因此,我们已经参数 以这样的方式该功能 928 00:43:10,550 --> 00:43:15,180 这可以利用多个输入, 但现在它只是一个。 929 00:43:15,180 --> 00:43:20,060 >> 如果我现在进入helpers.php, 注意它在做什么。 930 00:43:20,060 --> 00:43:22,030 这是一点点 的新功能, 931 00:43:22,030 --> 00:43:24,190 但现在只拿 信仰,这是 932 00:43:24,190 --> 00:43:26,570 语法与您 定义在PHP中的函数。 933 00:43:26,570 --> 00:43:27,840 你从字面上说的功能。 934 00:43:27,840 --> 00:43:30,090 你没有指定返回 型,这是一致的 935 00:43:30,090 --> 00:43:33,880 与可变细节较早 在这里你真的不强类型。 936 00:43:33,880 --> 00:43:35,650 >> 这只是规定 在默认情况下,此 937 00:43:35,650 --> 00:43:37,460 接受联合 数组作为参数。 938 00:43:37,460 --> 00:43:38,210 你知道吗? 939 00:43:38,210 --> 00:43:41,450 如果用户没有通过1 中,假设一个默认值。 940 00:43:41,450 --> 00:43:44,680 >> 这是一个功能,C没有 对我们来说,这是很好的,因为现在 941 00:43:44,680 --> 00:43:46,430 数据,即使你 不给它任何东西, 942 00:43:46,430 --> 00:43:49,300 将是一个 数组,但空单。 943 00:43:49,300 --> 00:43:51,860 而作为旁白,提取物 只是做一些时髦 944 00:43:51,860 --> 00:43:56,380 其中,它需要所有的键从该 关联数组,所有的东西 945 00:43:56,380 --> 00:43:59,950 你可以把方括号中, 并创建变量了出来 946 00:43:59,950 --> 00:44:06,270 这样我们就可以最终获得 他们在footet.php和header.php文件。 947 00:44:06,270 --> 00:44:08,950 这是一个有点抽象, 所以让我指出这一点。 948 00:44:08,950 --> 00:44:12,990 >> 在index.php文件,请注意我 传递一个键值对称号 949 00:44:12,990 --> 00:44:14,850 与CS50的值。 950 00:44:14,850 --> 00:44:18,660 如果我现在看helpers.php, 注意RenderHeader 951 00:44:18,660 --> 00:44:23,870 被抽取了我传递的数据 中,然后,需要的header.php。 952 00:44:23,870 --> 00:44:27,970 我所做的就是那种穷人的的 现在执行下面的。 953 00:44:27,970 --> 00:44:31,720 >> 如果我打开header.php文件, 注意,我不再难 954 00:44:31,720 --> 00:44:34,890 编码这个头文件中的文字CS50。 955 00:44:34,890 --> 00:44:39,310 我已经把这个无可否认的残暴 命名功能,HTML特殊字符, 956 00:44:39,310 --> 00:44:40,170 在那里。 957 00:44:40,170 --> 00:44:41,640 但是请注意,我做了什么。 958 00:44:41,640 --> 00:44:44,240 我有打开HTML。 959 00:44:44,240 --> 00:44:47,420 然后我开的头和公开赛冠军。 960 00:44:47,420 --> 00:44:52,380 >> 然后里面的标题的开放, 关闭标签,我有一点PHP代码。 961 00:44:52,380 --> 00:44:56,670 这是一个很好的语法,但是, 这只是意味着赞同出来。 962 00:44:56,670 --> 00:44:59,840 它的字面意思是this-- 呼应following-- 963 00:44:59,840 --> 00:45:01,910 但这是性感写。 964 00:45:01,910 --> 00:45:05,000 呼应了标题 一个已经来传递。 965 00:45:05,000 --> 00:45:07,560 >> 但是,你有什么感想HTML 特殊字符是怎么一回事, 966 00:45:07,560 --> 00:45:10,590 特别是如果你有 之前的一些HTML的经验? 967 00:45:10,590 --> 00:45:14,050 可能是什么字 危险中要传递给页 968 00:45:14,050 --> 00:45:17,980 在那里你动态地生成 网页使用这样的代码? 969 00:45:17,980 --> 00:45:21,370 970 00:45:21,370 --> 00:45:24,650 让我去这个文件,版本 2,看我能不能诱导这一点。 971 00:45:24,650 --> 00:45:26,210 >> 第二版是这样的。 972 00:45:26,210 --> 00:45:28,510 并注意一切 精美,做工精良。 973 00:45:28,510 --> 00:45:35,280 但是,假如我去到index.php和 我指定我的网页的标题 974 00:45:35,280 --> 00:45:36,630 不CS50。 975 00:45:36,630 --> 00:45:44,930 它是开放的支架脚本警报 你好世界,接近单引号, 976 00:45:44,930 --> 00:45:49,740 右括号,分号, 开放式托架,斜线脚本。 977 00:45:49,740 --> 00:45:51,897 >> 脚本,如我们 最终看到的,是一个标签 978 00:45:51,897 --> 00:45:54,480 你可以用它来使用的另一种 编程语言叫做 979 00:45:54,480 --> 00:45:56,330 JavaScript的Web页面的内部。 980 00:45:56,330 --> 00:45:57,960 现在这里看到的逻辑。 981 00:45:57,960 --> 00:45:59,840 这里有一个名为标题的关键。 982 00:45:59,840 --> 00:46:02,690 下面是它的疯狂long值了。 983 00:46:02,690 --> 00:46:07,840 >> 但是,如果我去了助手页面级 或者更确切地说,标题页, 984 00:46:07,840 --> 00:46:11,310 我调用这个函数 在该标题的第一。 985 00:46:11,310 --> 00:46:15,250 所以,如果我现在刷新页面,我 看到这,看起来可笑, 986 00:46:15,250 --> 00:46:16,110 但它是安全的。 987 00:46:16,110 --> 00:46:17,310 它只是看起来愚蠢。 988 00:46:17,310 --> 00:46:20,320 >> 但是,假设代替 我已经忘了这一点。 989 00:46:20,320 --> 00:46:24,660 和记住我的话,一个非零数字 你会忘记这样做 990 00:46:24,660 --> 00:46:27,790 你会得到一些勤劳 学生或朋友来了 991 00:46:27,790 --> 00:46:31,540 你在CS50公平或匿名 晚上闲逛在您的网站 992 00:46:31,540 --> 00:46:35,300 而实际上注入的代码 瞒着你进入你的网站 993 00:46:35,300 --> 00:46:35,800 不知何故。 994 00:46:35,800 --> 00:46:39,000 >> 因为如果我只是吐 在这里标题和标题 995 00:46:39,000 --> 00:46:44,330 那里 - 好吧,如果从字面上称号 貌似这个和PHP 996 00:46:44,330 --> 00:46:47,660 作为可吐的语言 从其他语言的文字, 997 00:46:47,660 --> 00:46:50,650 这是从字面上去 来替换这个​​标签, 998 00:46:50,650 --> 00:46:53,010 当然,我把其他地方。 999 00:46:53,010 --> 00:46:57,640 >> 所以,如果我现在去这里后重装 撤销这些安全机制, 1000 00:46:57,640 --> 00:46:59,982 现在我的hello world这里。 1001 00:46:59,982 --> 00:47:02,690 现在还不是所有的大的 处理,但你可以做一些事情 1002 00:47:02,690 --> 00:47:05,119 多一点恶意 在这里,像有 1003 00:47:05,119 --> 00:47:08,410 其他tags--,我们会看到,一旦我们度过 更多的时间在JavaScript--如位置 1004 00:47:08,410 --> 00:47:14,910 点HREF得到,报价,引文结束,HTTP business.com,但其相反的 1005 00:47:14,910 --> 00:47:15,950 从那天。 1006 00:47:15,950 --> 00:47:20,120 现在你可以诱导网络 页面居然马上去 1007 00:47:20,120 --> 00:47:21,190 在这里这个网页。 1008 00:47:21,190 --> 00:47:23,000 >> 而实际上,我不想 甚至去business.com 1009 00:47:23,000 --> 00:47:24,749 因为我不想 知道是什么。 1010 00:47:24,749 --> 00:47:28,710 但是,这也将触发代码 被注入到当前页。 1011 00:47:28,710 --> 00:47:32,680 因此,这是唯一地说,即使 我们要介绍一些超早 1012 00:47:32,680 --> 00:47:36,800 这些更复杂的结构中, 这一切都朝着确保的一端 1013 00:47:36,800 --> 00:47:39,320 你的代码是不可利用。 1014 00:47:39,320 --> 00:47:40,960 >> 所以,现在这里的第三个版本。 1015 00:47:40,960 --> 00:47:42,470 它变得有点票友。 1016 00:47:42,470 --> 00:47:44,875 我真的不like-- 我的肛门侧 1017 00:47:44,875 --> 00:47:47,750 渐渐的有点恼火 事实上,我已经叫功能 1018 00:47:47,750 --> 00:47:51,940 RenderHeader和RenderFooter 这几乎是相同的。 1019 00:47:51,940 --> 00:47:55,400 于是我想到,为什么不 我这些参数的函数 1020 00:47:55,400 --> 00:47:59,180 逼到一个叫打底, 有它需要第二个参数 1021 00:47:59,180 --> 00:48:04,420 象模板的名称,最终 以render--要么页眉或页脚? 1022 00:48:04,420 --> 00:48:07,160 然后可选,如果我想 通过在一些键值对 1023 00:48:07,160 --> 00:48:10,580 像我这样做,为的标题 头但不是页脚, 1024 00:48:10,580 --> 00:48:11,800 我能做到这一点。 1025 00:48:11,800 --> 00:48:16,510 >> 所以现在如果我进入helpers.php, 这是一个稍微复杂一些。 1026 00:48:16,510 --> 00:48:19,670 我会挥动我的手在 细节,但它只是一个功能。 1027 00:48:19,670 --> 00:48:21,890 所以这是朝着更好的设计的一个步骤。 1028 00:48:21,890 --> 00:48:23,360 >> 我们可以借此一步。 1029 00:48:23,360 --> 00:48:28,890 如果我去了我的第四个 这个版本的,现在通知 1030 00:48:28,890 --> 00:48:31,320 我正在做的事情 更有种神秘。 1031 00:48:31,320 --> 00:48:33,230 我知道这是一个 大量吸收一次, 1032 00:48:33,230 --> 00:48:35,080 但我们只是种 清洗东西。 1033 00:48:35,080 --> 00:48:38,550 现在,我把我的助手 文件到一个文件夹,名为 1034 00:48:38,550 --> 00:48:41,190 includes--只是一个任意 名字在这里我想提出的东西 1035 00:48:41,190 --> 00:48:44,300 我想包括 - 再 这剩下的是一样的。 1036 00:48:44,300 --> 00:48:47,140 >> 但是,如果我现在看gedit中, 我已经摆脱了通知 1037 00:48:47,140 --> 00:48:51,940 所有其他文件和我所 移动它们,例如,到此处。 1038 00:48:51,940 --> 00:48:55,110 然后在模板中, 我有这个在这里了。 1039 00:48:55,110 --> 00:48:59,292 所以这是现在都朝着一个步骤 使用的一个更好的设计图案。 1040 00:48:59,292 --> 00:49:01,000 我们非常迅速地 要搬走 1041 00:49:01,000 --> 00:49:03,870 从PHP的默认功能, 我们开始在这里与, 1042 00:49:03,870 --> 00:49:07,655 在这里你只汇成PHP, 和你的HTML和CSS的, 1043 00:49:07,655 --> 00:49:09,780 你刚才吐出来 你走你的路。 1044 00:49:09,780 --> 00:49:11,404 它不会是非常维护。 1045 00:49:11,404 --> 00:49:14,481 就像在C中,我们开始使用 多个文件和多种功能 1046 00:49:14,481 --> 00:49:15,730 和保理的事情说出来。 1047 00:49:15,730 --> 00:49:16,688 我们会在这里做同样的。 1048 00:49:16,688 --> 00:49:19,970 而事实上,在第五和最后 版本在这里,我做了一件事。 1049 00:49:19,970 --> 00:49:23,710 您甚至可以使用点点,对此, 再次,就是父目录。 1050 00:49:23,710 --> 00:49:28,260 为了更加安全意识, 因为如果我看听 1051 00:49:28,260 --> 00:49:32,450 这里的第五个,也是最后的版本,预告 我有一个目录名为这里 1052 00:49:32,450 --> 00:49:35,180 公众,然后在 同一级别,可以这么说, 1053 00:49:35,180 --> 00:49:38,490 我已经得到了包括和模板 然后将该文本文件的自述。 1054 00:49:38,490 --> 00:49:41,130 >> 其原因我已经结构 它喜欢this--等众多网络 1055 00:49:41,130 --> 00:49:44,330 主机,特别是那些5元 那些一个月美元10个月的人, 1056 00:49:44,330 --> 00:49:47,170 如果你曾经有过的其中之一 services--是什么让很多人做 1057 00:49:47,170 --> 00:49:50,690 是他们只是希望你能转储所有 你的文件放到一个目录中, 1058 00:49:50,690 --> 00:49:53,640 就像我们已经做了有 这第一个例子。 1059 00:49:53,640 --> 00:49:56,740 >> 但只要你开始建造更多 只是存储复杂场所 1060 00:49:56,740 --> 00:50:00,480 数据你关心和文件你 关心,其实组织的事情 1061 00:50:00,480 --> 00:50:05,060 正确和更安全 意识的头脑可以 1062 00:50:05,060 --> 00:50:07,927 我们开始防守 对所有的朋友 1063 00:50:07,927 --> 00:50:10,135 你有两种或 这个类以外的谁, 1064 00:50:10,135 --> 00:50:12,510 只要你开始做 在网络上自己的节目, 1065 00:50:12,510 --> 00:50:15,140 要开始采摘 你和他们。 1066 00:50:15,140 --> 00:50:17,420 >> 所以我们将看看 最终,在这个设计。 1067 00:50:17,420 --> 00:50:20,010 这仅仅是一个图片 描绘如下。 1068 00:50:20,010 --> 00:50:22,897 我们打​​算把我们所有的 在一个或多个文件的编程逻辑, 1069 00:50:22,897 --> 00:50:25,230 我们要去刚刚开始 调用这些控制器。 1070 00:50:25,230 --> 00:50:28,022 它是其中的​​大脑 我们的网站竟然都是​​。 1071 00:50:28,022 --> 00:50:29,730 然后,我们要 有意见和看法 1072 00:50:29,730 --> 00:50:32,480 是简单,只是单独的 files--所谓的模板,通常。 1073 00:50:32,480 --> 00:50:34,410 他们只是有 我的网页的美观, 1074 00:50:34,410 --> 00:50:37,020 我想要的页面看看 like--的颜色和布局 1075 00:50:37,020 --> 00:50:38,870 的位置和 所有的变量。 1076 00:50:38,870 --> 00:50:41,120 >> 然后更有趣 我们最终会到达 1077 00:50:41,120 --> 00:50:45,420 是模型,这将是刚 我们拍其他技术的话 1078 00:50:45,420 --> 00:50:47,771 我们领进 图片,就像实际的数据库, 1079 00:50:47,771 --> 00:50:49,520 所以,当你想 保存的信息, 1080 00:50:49,520 --> 00:50:52,140 你不只是发邮件 您的监考官或自己, 1081 00:50:52,140 --> 00:50:57,350 你居然把它存储在数据库中 使用称为SQL另一种语言。 1082 00:50:57,350 --> 00:51:00,450 所以我们今天离开这里 拿起这个星期三 1083 00:51:00,450 --> 00:51:02,990 并引入数据库即可。 1084 00:51:02,990 --> 00:51:06,940 >> [音乐播放] 1085 00:51:06,940 --> 00:54:24,555