1 00:00:00,000 --> 00:00:01,940 >> [音乐播放] 2 00:00:01,940 --> 00:00:11,130 3 00:00:11,130 --> 00:00:14,620 >> DAVID马兰:这是CS 50,并且 这是9周的开始。 4 00:00:14,620 --> 00:00:18,240 而我们认为我们今天会做不 只有关闭在上周的一章 5 00:00:18,240 --> 00:00:22,670 材料,我们专注于服务器 端Web编程的PHP和SQL, 6 00:00:22,670 --> 00:00:23,549 一些数据库的东西。 7 00:00:23,549 --> 00:00:25,590 我们将谈论了一下 今天的安全性,然后 8 00:00:25,590 --> 00:00:29,590 过渡到客户端编程 语言称为JavaScript的。 9 00:00:29,590 --> 00:00:31,330 但首先,一些赎回。 10 00:00:31,330 --> 00:00:35,030 >> 你可能还记得,上 周三,我设置了 11 00:00:35,030 --> 00:00:37,550 写一个网站, 把用户的输入 12 00:00:37,550 --> 00:00:41,120 通过HTML表单是将存储 该用户输入的姓名,电话 13 00:00:41,120 --> 00:00:43,124 号,以及手机 载流子在数据库中。 14 00:00:43,124 --> 00:00:45,540 然后我有一个小命令 行的脚本编写PHP 15 00:00:45,540 --> 00:00:47,956 这本来是要遍历 在数据库中的行 16 00:00:47,956 --> 00:00:49,400 并发送短信。 17 00:00:49,400 --> 00:00:53,870 尽管几次,多次尝试,我们 没有得到该工作的结束。 18 00:00:53,870 --> 00:00:57,820 >> 所以,我这整个星期花在工作 对这些代码让我们过去点 19 00:00:57,820 --> 00:01:01,220 在我们离开的,即所有的 我得到了周三的结束 20 00:01:01,220 --> 00:01:05,500 是这样的短信 从马戈我挣扎着, 21 00:01:05,500 --> 00:01:09,940 接着从另一个文本消息 同学,你有这个大卫。 22 00:01:09,940 --> 00:01:14,030 其次是这一个, 奇妙的鼓励。 23 00:01:14,030 --> 00:01:15,840 保持下去,非常振奋人心。 24 00:01:15,840 --> 00:01:20,960 我几乎得到了它,直到then--和 这就是我们最终在周三的说明。 25 00:01:20,960 --> 00:01:25,850 然后其实也许是我的最爱, 片刻之后,该走了进来。 26 00:01:25,850 --> 00:01:27,000 该死的实时流。 27 00:01:27,000 --> 00:01:31,080 >> 所以今天,我们解决这个问题有一个快速 看看,因为我做了什么。 28 00:01:31,080 --> 00:01:35,440 因此,所有这些代码可用 在网上从上周的八周, 29 00:01:35,440 --> 00:01:36,300 源代码。 30 00:01:36,300 --> 00:01:39,425 你会看到,我经历了, 实际上我清理东西有点。 31 00:01:39,425 --> 00:01:42,080 我介绍了几个其他 SQL数据库的功能。 32 00:01:42,080 --> 00:01:45,300 例如,而不是 只是让VAR炭载体 33 00:01:45,300 --> 00:01:47,310 因为我觉得上周我做的飞行。 34 00:01:47,310 --> 00:01:49,820 我不是把它定义为 什么所谓的枚举。 35 00:01:49,820 --> 00:01:53,310 >> 和一些你可能已经看到了这一点 当我们探讨C.枚举实际上是 36 00:01:53,310 --> 00:01:56,820 了C一个功能,您可以 列举了一大堆常量 37 00:01:56,820 --> 00:01:59,640 并为它们分配的自动值, 像的一个,两个,三个,四个 38 00:01:59,640 --> 00:02:01,330 而无需硬码号。 39 00:02:01,330 --> 00:02:04,780 因此SQL支持相同的,由此,如果 你有一个数据库字段,你只 40 00:02:04,780 --> 00:02:09,389 要采取有限1 值,你可以从字面上指定它 41 00:02:09,389 --> 00:02:13,120 因为我已经四年没有做过 热门美手机运营商。 42 00:02:13,120 --> 00:02:13,819 >> 所以我这样做。 43 00:02:13,819 --> 00:02:16,610 我做了一些改动,作为 好了,其中最重要的 44 00:02:16,610 --> 00:02:20,090 是让电子邮件,因为召回工作, 这个程序依赖于它 45 00:02:20,090 --> 00:02:23,470 一般称为电子邮件至 短信网关,这就是 46 00:02:23,470 --> 00:02:27,670 中说,Verizon公司看中路, AT&T和其他人支持的服务器, 47 00:02:27,670 --> 00:02:30,740 如果它接收到,由此 电子邮件,它转换为短信 48 00:02:30,740 --> 00:02:33,290 并发送一个文本 消息到别人的手机上。 49 00:02:33,290 --> 00:02:37,010 所以,如果我没有这样做, 这里是一个新的和改进的形式 50 00:02:37,010 --> 00:02:39,259 这是要谈 新的和改进的代码,这 51 00:02:39,259 --> 00:02:40,300 你可以在线播放。 52 00:02:40,300 --> 00:02:44,140 它有望使我 手机提示音在短短的一瞬间。 53 00:02:44,140 --> 00:02:47,240 >> 因此,首先,我要在我的名字输入。 54 00:02:47,240 --> 00:02:51,400 第二,我不会 要做到这一点这个时间。 55 00:02:51,400 --> 00:02:53,920 我会做检查元素。 56 00:02:53,920 --> 00:02:56,710 而这仅仅是一个 小东西,所以我不 57 00:02:56,710 --> 00:02:59,250 创建后期制作的时间 因为我做了最后一次努力。 58 00:02:59,250 --> 00:03:02,300 现在有我的电话号码。 59 00:03:02,300 --> 00:03:03,560 >> 我会选择Verizon公司。 60 00:03:03,560 --> 00:03:10,260 在这里,让我们打开这个麦克风 在这里,这个目标在我的手机在这里。 61 00:03:10,260 --> 00:03:13,130 我要去点击注册, 这应该有希望 62 00:03:13,130 --> 00:03:14,530 把它放到数据库中。 63 00:03:14,530 --> 00:03:16,780 现在,我会去的 命令行程序,这 64 00:03:16,780 --> 00:03:20,825 回忆被称为点斜线 文本,用你的手指。 65 00:03:20,825 --> 00:03:24,092 66 00:03:24,092 --> 00:03:26,527 开始了。 67 00:03:26,527 --> 00:03:27,501 >> [手机钟声] 68 00:03:27,501 --> 00:03:28,962 >> [掌声] 69 00:03:28,962 --> 00:03:31,815 70 00:03:31,815 --> 00:03:34,940 DAVID马兰:所以比this--更多的乐趣 它的乐趣,当然,如果我进去了。 71 00:03:34,940 --> 00:03:38,004 但它更有趣,我想,如果我们 在这些电影的时刻之一 72 00:03:38,004 --> 00:03:40,420 其中相似的东西真的 糟糕的事情在世界上, 73 00:03:40,420 --> 00:03:42,860 像所有的美国国家安全局的人的 手机开始发出蜂鸣声 74 00:03:42,860 --> 00:03:44,860 与短信 提醒他们注意这个事实。 75 00:03:44,860 --> 00:03:47,026 所以我想我们会尝试 在此重建相同, 76 00:03:47,026 --> 00:03:49,610 由此不使用数据库, 我代替预先 77 00:03:49,610 --> 00:03:51,490 写了一个程序,看起来像这样。 78 00:03:51,490 --> 00:03:53,660 >> 这是一index.php-- 我把这段代码在线 79 00:03:53,660 --> 00:03:56,710 作为well--,显然 只是呈现form.php的, 80 00:03:56,710 --> 00:04:00,990 使用MVC风格的范例,我们 谈更详细的问题集 81 00:04:00,990 --> 00:04:01,650 七。 82 00:04:01,650 --> 00:04:02,910 这种形式是非常简单的。 83 00:04:02,910 --> 00:04:06,634 这将提交给 文件通过邮寄称为here.php。 84 00:04:06,634 --> 00:04:09,300 而且它显然是要问 一个名字和一个电话号码, 85 00:04:09,300 --> 00:04:11,400 然后,通过所谓的 选择菜单,这是 86 00:04:11,400 --> 00:04:14,250 要给你至少四 热门美手机运营商, 87 00:04:14,250 --> 00:04:17,470 然后让你有效 点击这里好好听讲。 88 00:04:17,470 --> 00:04:20,471 >> 而在这里,与此同时,将要 借用一些代码的最后一次。 89 00:04:20,471 --> 00:04:22,553 如果你只是浏览一下, 你会看到有 90 00:04:22,553 --> 00:04:23,900 一大堆错误检查。 91 00:04:23,900 --> 00:04:26,640 但在美女到底是 我们今天没有写入数据库。 92 00:04:26,640 --> 00:04:29,130 我们保持它简单, 刚发出希望 93 00:04:29,130 --> 00:04:32,190 通过功能我一个短信 写了这几天电话 94 00:04:32,190 --> 00:04:36,270 文,这是在功能。 PHP的, 这又是在网上提供。 95 00:04:36,270 --> 00:04:38,210 >> 所以,如果你想在这分享。 96 00:04:38,210 --> 00:04:40,190 我们不会被存储任何东西。 97 00:04:40,190 --> 00:04:43,809 去这个网址这里是实时的。 98 00:04:43,809 --> 00:04:46,850 不要提交,只是还没有,但我们 看看我们是否能拥有这些电影之一 99 00:04:46,850 --> 00:04:49,830 瞬间,每个人的手机 会发出哔音,希望只是 100 00:04:49,830 --> 00:04:53,580 在2011年与今年一次 这哪里去了可怕出错。 101 00:04:53,580 --> 00:04:58,910 一旦你去这个地址, 你应该看到一个超级简单的形式 102 00:04:58,910 --> 00:05:03,884 如果你有一个名字,一个手机 号,和一个蜂窝电话载波 103 00:05:03,884 --> 00:05:06,175 列表中有匹配,则转到 进取,填写表格。 104 00:05:06,175 --> 00:05:07,880 但是,不要点击提交,只是还没有。 105 00:05:07,880 --> 00:05:10,850 >> 窗体的打算是这样的。 106 00:05:10,850 --> 00:05:13,660 来吧,键入 您的姓名,电话号码。 107 00:05:13,660 --> 00:05:17,670 空中接力,一个人是怎么回事遥遥领先。 108 00:05:17,670 --> 00:05:18,170 没关系。 109 00:05:18,170 --> 00:05:19,340 OK,每个人都填写了表格。 110 00:05:19,340 --> 00:05:21,400 这应该工作在 手机也一样,如果你想要的。 111 00:05:21,400 --> 00:05:23,695 好吧,在你的痕迹,被置,走了。 112 00:05:23,695 --> 00:05:24,195 打到这里。 113 00:05:24,195 --> 00:05:27,275 114 00:05:27,275 --> 00:05:27,775 什么? 115 00:05:27,775 --> 00:05:31,140 116 00:05:31,140 --> 00:05:31,640 号 117 00:05:31,640 --> 00:05:34,410 118 00:05:34,410 --> 00:05:40,250 我向上帝发誓,我测试 这种多次至今。 119 00:05:40,250 --> 00:05:41,720 你懂吗? 120 00:05:41,720 --> 00:05:43,145 >> [插VOICES] 121 00:05:43,145 --> 00:05:46,470 122 00:05:46,470 --> 00:05:49,560 >> DAVID马兰:OK,用户错误可能。 123 00:05:49,560 --> 00:05:50,550 这是两人。 124 00:05:50,550 --> 00:05:53,300 它的工作有两个出了 几百年,三,四。 125 00:05:53,300 --> 00:05:55,940 OK,这是很好的。 126 00:05:55,940 --> 00:05:58,520 五分之四的 正确性如何。 127 00:05:58,520 --> 00:05:59,810 >> 那么到底发生了什么? 128 00:05:59,810 --> 00:06:02,727 因此推测,没有看到你 屏幕上,为什么它可能有误? 129 00:06:02,727 --> 00:06:05,518 这可能是我们刚 试图让过多的连接 130 00:06:05,518 --> 00:06:08,110 哈佛的邮件服务器全部 一旦从相同的IP地址。 131 00:06:08,110 --> 00:06:10,740 我只是猜测,因为我没有 有测试的奢华 132 00:06:10,740 --> 00:06:13,220 这段代码的一些 300人提前 133 00:06:13,220 --> 00:06:16,040 但现在认识到, 在于,至少应 134 00:06:16,040 --> 00:06:18,250 已经得到完成这次任务。 135 00:06:18,250 --> 00:06:22,880 >> 好吧,那么为什么是这一切的 更有密切关系这是怎么回事? 136 00:06:22,880 --> 00:06:24,900 那么首先,快速 夫妇公告。 137 00:06:24,900 --> 00:06:29,350 所以一个,如果你想加入长安,和 尼克,和其他人在午餐这个星期五, 138 00:06:29,350 --> 00:06:32,400 做的RSVP在通常的URL存在。 139 00:06:32,400 --> 00:06:35,650 如果你正在考虑集中的 或做在CS辅助, 140 00:06:35,650 --> 00:06:38,941 无论你是一个大二的学生,还是大一新生, 甚至大三或大四这一点 141 00:06:38,941 --> 00:06:42,490 而且还可以挤在课程, 认识到工程学校 142 00:06:42,490 --> 00:06:45,620 正在收集免费Ben和 杰里的冰淇淋和建议 143 00:06:45,620 --> 00:06:48,910 本周三后不久级 下午4:00,在CS建设 144 00:06:48,910 --> 00:06:49,771 在麦克斯韦德沃金。 145 00:06:49,771 --> 00:06:51,520 如果这是过速 在屏幕上,只是去 146 00:06:51,520 --> 00:06:55,260 以cs50.harvard.edu了 链接至Facebook活动 147 00:06:55,260 --> 00:06:57,140 在这里你可以看到更多的细节。 148 00:06:57,140 --> 00:07:01,390 >> 同时,我想我会改正 另一件事我疯玩周三。 149 00:07:01,390 --> 00:07:04,400 原来,马克的ID 在Facebook上是不是三个。 150 00:07:04,400 --> 00:07:05,230 这是4。 151 00:07:05,230 --> 00:07:08,330 原来,他有更多的测试 帐户比我记得。 152 00:07:08,330 --> 00:07:12,400 但是,这是什么感觉像一个机会 做的是拉这样的URL。 153 00:07:12,400 --> 00:07:16,680 >> 所以,事实证明,Facebook有一个 API,应用程序编程接口, 154 00:07:16,680 --> 00:07:20,070 这是一个机制,使你 可以通过编程方式请求数据 155 00:07:20,070 --> 00:07:24,480 在Facebook和取回机 可读的信息,而不是网页 156 00:07:24,480 --> 00:07:28,690 但只是原始的文字,一些 被称为JavaScript对象表示法。 157 00:07:28,690 --> 00:07:32,150 而事实上,如果我访问这个 URL,并放大,在默认情况下, 158 00:07:32,150 --> 00:07:34,960 这是马克的公开 获得的信息。 159 00:07:34,960 --> 00:07:37,430 >> 而有趣的细节 这里只是他的ID 160 00:07:37,430 --> 00:07:40,670 的确,排名第四,这是我 当我这样做实现。 161 00:07:40,670 --> 00:07:44,260 你可以自己做,如果你知道 您的Facebook用户名,如果你有一个。 162 00:07:44,260 --> 00:07:45,440 只需键入它顶在那里。 163 00:07:45,440 --> 00:07:46,640 而这一切都不是私有的。 164 00:07:46,640 --> 00:07:48,670 我只是在做这甚至 在隐身模式。 165 00:07:48,670 --> 00:07:49,900 所以我连登录。 166 00:07:49,900 --> 00:07:54,440 和你看到的是我 显然是用户数6454 167 00:07:54,440 --> 00:07:56,480 在Facebook上,这是不 太糟糕了,这些天。 168 00:07:56,480 --> 00:07:59,900 所以,无论如何,你还会看到 其他信息在那里。 169 00:07:59,900 --> 00:08:02,150 >> 和有用的方面 那是你 170 00:08:02,150 --> 00:08:06,890 可以编写自己的软件, 在某种程度上整合了这样的数据 171 00:08:06,890 --> 00:08:08,170 到自己的应用程序。 172 00:08:08,170 --> 00:08:10,650 您可以授权用户 登录到您的网站, 173 00:08:10,650 --> 00:08:14,190 不使用自己的自定义的用户名和 密码,但也许他们的Facebook登录 174 00:08:14,190 --> 00:08:16,170 和获取信息甚至 他们的朋友, 175 00:08:16,170 --> 00:08:18,740 如果他们同意这样的或类似的。 176 00:08:18,740 --> 00:08:21,430 因此请注意,CS50,也 有一些自身的API, 177 00:08:21,430 --> 00:08:24,620 一个是课程目录数据, 对于一些在餐厅的菜单拥抱 178 00:08:24,620 --> 00:08:26,730 室,所有的 建筑和地点 179 00:08:26,730 --> 00:08:30,930 在校园里,我们有一个API,以及 您可以查询类似,并得到 180 00:08:30,930 --> 00:08:35,520 回文本数据,你可以整合 到一个PHP或JavaScript,甚至, 181 00:08:35,520 --> 00:08:38,320 虽然不常用,一 基于C的最终项目。 182 00:08:38,320 --> 00:08:41,190 >> 事实上,未来的最终 项目是几个里程碑。 183 00:08:41,190 --> 00:08:42,980 您从我们这里得到一个电子邮件的一天。 184 00:08:42,980 --> 00:08:45,761 认识到提案 是下星期一到期。 185 00:08:45,761 --> 00:08:49,010 它并不一定约束力,但你 确实需要得到你的教学研究员 186 00:08:49,010 --> 00:08:51,260 制作前批准 其后任何更改。 187 00:08:51,260 --> 00:08:54,280 然后前面有一个 其他里程碑的数字。 188 00:08:54,280 --> 00:08:56,542 >> 因此,为了逗你,也 有一些可能性, 189 00:08:56,542 --> 00:08:58,250 我们有一堆 这些色调灯泡。 190 00:08:58,250 --> 00:09:01,190 而一些你们现在有一些 这些在你的宿舍里也是如此。 191 00:09:01,190 --> 00:09:02,920 而且他们也有一个API。 192 00:09:02,920 --> 00:09:07,300 于是想起那些二进制灯泡周 以前,丹·布拉德利和安塞尔 193 00:09:07,300 --> 00:09:08,780 达夫为我们创造。 194 00:09:08,780 --> 00:09:12,560 他们使用的软件界面 这个灯泡,这在目前 195 00:09:12,560 --> 00:09:15,232 插入电 然后经由无线 196 00:09:15,232 --> 00:09:17,690 连接到一个小东西 所谓的桥到这里, 197 00:09:17,690 --> 00:09:21,280 像一个小的路由器专有 这个特定的设备。 198 00:09:21,280 --> 00:09:26,540 >> 但事实证明,如果我知道如何 发送HTTP消息,因为我们现在都做, 199 00:09:26,540 --> 00:09:31,670 我可以发送类似这样的消息来 这种灯泡将其打开或关闭 200 00:09:31,670 --> 00:09:34,000 或做任何数量的 在其上的其他操作。 201 00:09:34,000 --> 00:09:36,110 请注意,它没有得到,这不是发布。 202 00:09:36,110 --> 00:09:37,760 还有另外一个叫放。 203 00:09:37,760 --> 00:09:39,630 实际上,有一些其他类似的动词。 204 00:09:39,630 --> 00:09:42,920 但是请注意有一个路径存在, API斜线,斜线新的开发者, 205 00:09:42,920 --> 00:09:44,990 光斜线,斜线1,斜线状态。 206 00:09:44,990 --> 00:09:49,060 >> 这显然​​只是 路径该公司,飞利浦, 207 00:09:49,060 --> 00:09:51,640 决定你必须打 与HTTP请求 208 00:09:51,640 --> 00:09:55,010 如果你想改变状态 的使用HTTP1.1的灯泡。 209 00:09:55,010 --> 00:09:56,380 然后注意空行。 210 00:09:56,380 --> 00:10:00,170 然后最后是什么样子 样的一些种类的阵列, 211 00:10:00,170 --> 00:10:04,730 这再次将被称为 JavaScript对象表示法,或杰森。 212 00:10:04,730 --> 00:10:08,000 你在这里看到的是, 有三个键值对。 213 00:10:08,000 --> 00:10:09,115 >> 一个关键的要求。 214 00:10:09,115 --> 00:10:10,990 和它的价值显然 将是真实的。 215 00:10:10,990 --> 00:10:13,612 亮度是128,其 是某种为int。 216 00:10:13,612 --> 00:10:15,820 然后过渡时间 零,这显然是 217 00:10:15,820 --> 00:10:17,970 多久它会 需要把这个东西上。 218 00:10:17,970 --> 00:10:19,890 >> 所以现在这种灯泡不亮。 219 00:10:19,890 --> 00:10:22,880 但是,如果我做的正是让this-- 我去一点小抄 220 00:10:22,880 --> 00:10:25,200 丹成立 advance--我要去 221 00:10:25,200 --> 00:10:27,920 继续前进,复制 下面的命令。 222 00:10:27,920 --> 00:10:30,200 卷曲,因为你们中的一些 可能收集到的CS​​50 223 00:10:30,200 --> 00:10:35,080 讨论的是如Telnet这样的实用工具 你可以模拟HTTP请求, 224 00:10:35,080 --> 00:10:36,360 特别提出。 225 00:10:36,360 --> 00:10:39,710 我可以将此数据发送, 具体是什么,我们只是 226 00:10:39,710 --> 00:10:43,430 看了刚才专门 这个网址在这里。 227 00:10:43,430 --> 00:10:46,310 然后卷曲将要处理 所有必要的报头 228 00:10:46,310 --> 00:10:47,600 并分析存在的。 229 00:10:47,600 --> 00:10:54,700 >> 因此,所有我需要做的就是这个复制到 一个终端窗口,然后按Enter键。 230 00:10:54,700 --> 00:10:56,000 和灯泡点亮。 231 00:10:56,000 --> 00:10:59,060 这是所有经历 我的电脑无线 232 00:10:59,060 --> 00:11:01,960 以某种方式下至桥,这 然后,谈话这个灯泡。 233 00:11:01,960 --> 00:11:02,960 我可以做别的事情。 234 00:11:02,960 --> 00:11:07,050 我可以做这件事 去红的实例。 235 00:11:07,050 --> 00:11:11,040 我可以举例进行 这个东西走向绿色。 236 00:11:11,040 --> 00:11:12,220 我可以让他走了蓝色。 237 00:11:12,220 --> 00:11:14,760 >> 并注意在每个这些 情况下,所有的,我自己在改变 238 00:11:14,760 --> 00:11:18,540 是所谓的色调值,以 居然给它点颜色。 239 00:11:18,540 --> 00:11:20,320 因此,让我贴,以及这一个。 240 00:11:20,320 --> 00:11:21,000 现在是蓝色的。 241 00:11:21,000 --> 00:11:24,672 >> 你可以做的更炫 事情where--让我们去绿色。 242 00:11:24,672 --> 00:11:26,630 我能做到这一点的 当然有我自己的代码。 243 00:11:26,630 --> 00:11:30,670 但即使是API本身 支持时髦的操作 244 00:11:30,670 --> 00:11:35,510 像这样,现在会打扰 我们在接下来的30秒。 245 00:11:35,510 --> 00:11:39,170 >> 所以这是一种什么味道,你可能会 做一个API,这其中涉及到 246 00:11:39,170 --> 00:11:40,010 灯泡。 247 00:11:40,010 --> 00:11:42,510 注意,CS50有几个 对谷歌的玻璃,如果你想 248 00:11:42,510 --> 00:11:45,380 喜欢沿着对付的东西 这些线路,Arduino的UNOS,这 249 00:11:45,380 --> 00:11:48,670 在小小的电脑, 实际上,在一个小电路板 250 00:11:48,670 --> 00:11:50,470 您可以连接 电线和其他东西 251 00:11:50,470 --> 00:11:52,732 和实际控制 您的真实世界的环境。 252 00:11:52,732 --> 00:11:54,940 然后有一对夫妇 新的玩具,我们有。 253 00:11:54,940 --> 00:11:59,294 这个从字面上来乍到的 日前通过邮寄,一缪袖标。 254 00:11:59,294 --> 00:12:01,710 而且我认为这是一种方法, 让你兴奋的项目 255 00:12:01,710 --> 00:12:03,720 你可能会与使用 该硬件会 256 00:12:03,720 --> 00:12:08,900 要玩这个短片 他们用它来捉弄人 257 00:12:08,900 --> 00:12:10,500 我们现在生活在未来。 258 00:12:10,500 --> 00:12:13,494 259 00:12:13,494 --> 00:12:15,490 >> [音乐播放] 260 00:12:15,490 --> 00:13:33,410 261 00:13:33,410 --> 00:13:37,109 >> DAVID马兰:所以在短短的几个星期,你 也可以在CS50公平的凉爽。 262 00:13:37,109 --> 00:13:39,150 另一种设备,我们 有一大堆的,我们是 263 00:13:39,150 --> 00:13:42,090 乐意借出的项目 被称为运动控制器。 264 00:13:42,090 --> 00:13:45,030 这是一个小的USB设备 在连接到计算机 265 00:13:45,030 --> 00:13:47,520 让您与互动 你的笔记本电脑,Mac或PC, 266 00:13:47,520 --> 00:13:51,570 就好像你有喜欢的Xbox Kinect的 而实际上使身体动作多 267 00:13:51,570 --> 00:13:54,509 就像我们在此看到 对未来的看法。 268 00:13:54,509 --> 00:13:56,505 >> [音乐播放] 269 00:13:56,505 --> 00:15:03,380 270 00:15:03,380 --> 00:15:06,260 >> DAVID马兰:所以,即使你有 不知道如何这样的事情 271 00:15:06,260 --> 00:15:10,050 也可能会被发明或作品 在硬件一级,不管。 272 00:15:10,050 --> 00:15:13,520 即使是CS50的短短几个月后, 和编程的理解 273 00:15:13,520 --> 00:15:19,460 更一般地,和web编程更 近日,然后又API和HTTP, 274 00:15:19,460 --> 00:15:21,830 你将通过访问 如果你的软件的API 275 00:15:21,830 --> 00:15:24,680 也想借其中的一个 设备实际谈谈它 276 00:15:24,680 --> 00:15:27,180 而不必担心 底层的实现 277 00:15:27,180 --> 00:15:30,220 细节,这是完全 有层次感这一概念是一致 278 00:15:30,220 --> 00:15:33,610 我们已经抽象 看到整个学期。 279 00:15:33,610 --> 00:15:37,990 >> 所以也上周末, 看到一对夫妇则新闻。 280 00:15:37,990 --> 00:15:40,640 先走,去讲座,如果你 想学习的东西 281 00:15:40,640 --> 00:15:42,160 更在任意数量的主题。 282 00:15:42,160 --> 00:15:43,340 请参阅网址那里。 283 00:15:43,340 --> 00:15:45,890 而这一次被送到 我通过张,你知道是谁, 284 00:15:45,890 --> 00:15:47,850 谁是我们的打印头大象的军队。 285 00:15:47,850 --> 00:15:49,910 并且它是一个标题如下。 286 00:15:49,910 --> 00:15:51,280 我害怕我的新电视。 287 00:15:51,280 --> 00:15:54,301 为什么我害怕把这个 关于你的东西会太。 288 00:15:54,301 --> 00:15:56,050 所以我们现在是在 指向学期, 289 00:15:56,050 --> 00:15:58,860 过,在这里,即使你有 一丝丝的理解 290 00:15:58,860 --> 00:16:02,620 如何在网上工作,和HTTP, 和安全性,这样的事情 291 00:16:02,620 --> 00:16:03,980 应该开始吸引您的眼球。 292 00:16:03,980 --> 00:16:07,450 但同时,你就会明白 这些东西是否是或不是 293 00:16:07,450 --> 00:16:08,430 实际的威胁。 294 00:16:08,430 --> 00:16:10,940 >> 所以我拍了几张摘录 从这篇文章在这里。 295 00:16:10,940 --> 00:16:12,540 而这个故事如下。 296 00:16:12,540 --> 00:16:14,300 我现在的老板 新的智能电视,这 297 00:16:14,300 --> 00:16:18,470 承诺提供流媒体 多媒体内容,游戏,应用程序, 298 00:16:18,470 --> 00:16:21,450 社交媒体和互联网 浏览了哦电视了。 299 00:16:21,450 --> 00:16:24,410 唯一的问题是,我现在 害怕使用它,作者说。 300 00:16:24,410 --> 00:16:29,592 你会也一样,如果你读通过 在46页的隐私政策为您的电视。 301 00:16:29,592 --> 00:16:31,800 数据这一量 收集的东西是惊人的。 302 00:16:31,800 --> 00:16:35,710 它记录在哪里,何时,如何,以及 您使用的电视机有多长。 303 00:16:35,710 --> 00:16:38,190 它集跟踪cookie, 正如我们已经讨论过, 304 00:16:38,190 --> 00:16:40,560 和信标设计 当你发现 305 00:16:40,560 --> 00:16:43,185 查看特定的内容或 一个特定的电子邮件消息 306 00:16:43,185 --> 00:16:45,230 如果你想在电视上查看电子邮件。 307 00:16:45,230 --> 00:16:48,430 它记录了你的应用程序 使用,您访问的网站, 308 00:16:48,430 --> 00:16:52,280 以及如何与内容互动, 通过您的智能电视做了这一切。 309 00:16:52,280 --> 00:16:55,470 同时,creepier yet-- 这是我的addition-- 310 00:16:55,470 --> 00:16:58,140 有一个内置的摄像头 面部识别。 311 00:16:58,140 --> 00:17:01,010 >> 的目的是提供一种 手势控制电视 312 00:17:01,010 --> 00:17:05,490 并让您登录 个人账户使用你的脸。 313 00:17:05,490 --> 00:17:08,940 从正面看,该图像 保存在电视上,而不是上传 314 00:17:08,940 --> 00:17:09,940 到企业服务器。 315 00:17:09,940 --> 00:17:12,520 在缺点方面,互联网 连接使得整个电视 316 00:17:12,520 --> 00:17:14,811 容易受到黑客谁 已经证明的能力 317 00:17:14,811 --> 00:17:16,700 取机器的完全控制。 318 00:17:16,700 --> 00:17:20,880 >> 更令人不安的是,仿佛那不是 足够聪明,是麦克风。 319 00:17:20,880 --> 00:17:23,599 电视拥有语音 识别功能 320 00:17:23,599 --> 00:17:26,859 这让观众控制 屏幕使用语音命令。 321 00:17:26,859 --> 00:17:30,290 但服务自带 一个相当不祥的警告。 322 00:17:30,290 --> 00:17:33,030 请注意,如果 你说的话,包括 323 00:17:33,030 --> 00:17:36,210 个人信息或其他敏感 信息,该信息 324 00:17:36,210 --> 00:17:40,310 将捕获的数据中 并传输到第三方。 325 00:17:40,310 --> 00:17:40,870 明白了吗? 326 00:17:40,870 --> 00:17:45,860 不要说个人或敏感 东西在你的电视机前。 327 00:17:45,860 --> 00:17:47,280 >> 因此,这实际上是真实的。 328 00:17:47,280 --> 00:17:50,530 它很难不,如果你看到 去百思买等,用于电视 329 00:17:50,530 --> 00:17:51,030 这些日子。 330 00:17:51,030 --> 00:17:52,540 他们都是聪明的以某种方式。 331 00:17:52,540 --> 00:17:54,740 而他们得到的 更智能,creepier。 332 00:17:54,740 --> 00:17:57,490 他们只是简单地收集数据 在我们谈论如何 333 00:17:57,490 --> 00:18:01,840 然后通过HTTP或上传它 其他一些协议的一些服务器。 334 00:18:01,840 --> 00:18:05,720 >> 因此,这是一个有趣的物品 在这个在线网站 335 00:18:05,720 --> 00:18:08,940 在这里,里面讲到一个 尤其错误或错误的代码 336 00:18:08,940 --> 00:18:11,340 我们实际上可以配合 到上周的讨论。 337 00:18:11,340 --> 00:18:15,730 所以这个标题是因为 下面,故事到这里, 338 00:18:15,730 --> 00:18:18,720 乔希Breckman工作了 公司得到了一个合同 339 00:18:18,720 --> 00:18:22,390 开发一个内容管理 系统或CMS,因为他们是所谓的, 340 00:18:22,390 --> 00:18:24,380 在相当大的政府网站。 341 00:18:24,380 --> 00:18:27,300 多参与该项目的 开发一个内容管理系统 342 00:18:27,300 --> 00:18:29,840 使员工会 能够建立和维护 343 00:18:29,840 --> 00:18:31,877 不断变化的 他们的网站内容。 344 00:18:31,877 --> 00:18:34,210 事情进展得很不错 上线后数天。 345 00:18:34,210 --> 00:18:37,020 但在6天里,一切都很不那么好。 346 00:18:37,020 --> 00:18:39,500 所有的内容 网站已经完全消失了。 347 00:18:39,500 --> 00:18:42,950 和所有网页导致了默认, 请输入内容的网页。 348 00:18:42,950 --> 00:18:43,810 哎呦。 349 00:18:43,810 --> 00:18:46,080 乔希被称为中 调查发现 350 00:18:46,080 --> 00:18:49,390 一个特别麻烦 外部IP地址了 351 00:18:49,390 --> 00:18:53,380 走在并删除所有的 系统上的内容。 352 00:18:53,380 --> 00:18:56,290 >> IP地址不属于 一些国外黑客弯曲 353 00:18:56,290 --> 00:18:58,340 对破坏有益 政府信息。 354 00:18:58,340 --> 00:19:05,190 它决心googlebot.com, 谷歌公司自己的网页抓取蜘蛛。 355 00:19:05,190 --> 00:19:06,010 哎呦。 356 00:19:06,010 --> 00:19:09,150 经过一番研究和扰 四处打听一个noncorrupt备份, 357 00:19:09,150 --> 00:19:10,180 乔希发现问题。 358 00:19:10,180 --> 00:19:12,700 >> 用户已复制 粘贴从一个有些内容 359 00:19:12,700 --> 00:19:15,670 页面转到另一个页面,其中包括 在编辑超链接 360 00:19:15,670 --> 00:19:17,577 编辑网页上的内容。 361 00:19:17,577 --> 00:19:20,160 通常这不是一个 由于外部用户问题会 362 00:19:20,160 --> 00:19:24,320 需要输入用户名和密码, 但在CMS认证系统中, 363 00:19:24,320 --> 00:19:27,520 登录系统, 没有考虑到 364 00:19:27,520 --> 00:19:30,980 成熟的黑客 谷歌蜘蛛的技巧。 365 00:19:30,980 --> 00:19:31,700 哎呦。 366 00:19:31,700 --> 00:19:33,610 >> 事实证明,谷歌 蜘蛛不使用 367 00:19:33,610 --> 00:19:36,950 饼干,这意味着它可以 轻松地绕过了检查 368 00:19:36,950 --> 00:19:39,840 登录cookie的设置是错误的。 369 00:19:39,840 --> 00:19:42,620 它也不会留意 JavaScript中,这通常 370 00:19:42,620 --> 00:19:45,170 提示和重定向用户 未登录谁英寸 371 00:19:45,170 --> 00:19:48,610 但它确实遵循每 每一个超链接找到网页上, 372 00:19:48,610 --> 00:19:51,700 包括那些具有 删除页面的标题。 373 00:19:51,700 --> 00:19:52,650 哎呦。 374 00:19:52,650 --> 00:19:56,070 >> 那么,这是否意味着更多的 技术问题,而是相当接近条款? 375 00:19:56,070 --> 00:19:58,340 它只是意味着, 在他们的网站上, 376 00:19:58,340 --> 00:20:02,287 他们的网址并不像这一个 您可能会看到在问题设置7。 377 00:20:02,287 --> 00:20:04,620 召回问题集7 或者知道问题集7 378 00:20:04,620 --> 00:20:06,411 你所遇到的挑战, 除其他事项外, 379 00:20:06,411 --> 00:20:08,570 以代表用户的抛售股票。 380 00:20:08,570 --> 00:20:14,010 但是,实施该功能通过方式 通过在用户获得超级链接 381 00:20:14,010 --> 00:20:16,880 接口,可能 不是最聪明的想法 382 00:20:16,880 --> 00:20:20,300 因为如果你的网站是莫名其妙 访问或者通过人工 383 00:20:20,300 --> 00:20:23,577 谁的点击左右或购买 机器人像谷歌的或蜘蛛 384 00:20:23,577 --> 00:20:26,160 因为他们是所谓的,这只是 爬行网页试图指数 385 00:20:26,160 --> 00:20:29,060 网络作为一个搜索引擎, 他们可以很容易 386 00:20:29,060 --> 00:20:31,340 通过打得到这种URL的。 387 00:20:31,340 --> 00:20:33,770 这就是功能 相当于,在这种情况下, 388 00:20:33,770 --> 00:20:37,000 谷歌销售的所有股份。 389 00:20:37,000 --> 00:20:40,030 >> 现在,坦率地说,它是完全 愚蠢的CMS 390 00:20:40,030 --> 00:20:43,240 使用JavaScript和cookie 实施其登录系统 391 00:20:43,240 --> 00:20:47,100 不这样做服务器端,如 你们在PSET做,会7-- 392 00:20:47,100 --> 00:20:49,940 有一个的login.php file--永远,永远, 393 00:20:49,940 --> 00:20:52,789 安全始终应该是 在服务器侧进行, 394 00:20:52,789 --> 00:20:56,080 未在客户机侧,因为正如本 文章建议,你可能自己 395 00:20:56,080 --> 00:20:59,600 看到在某些时候,它是 平凡的用户,是好是坏, 396 00:20:59,600 --> 00:21:02,860 刚刚关闭JavaScript 更何况饼干。 397 00:21:02,860 --> 00:21:06,020 所以这是你的日常跆拳道。 398 00:21:06,020 --> 00:21:07,970 >> 还有一个,这 是那种太可怕了, 399 00:21:07,970 --> 00:21:11,360 所以我会提到它,如果 仅作为一个生命的教训。 400 00:21:11,360 --> 00:21:14,850 当你使用一个应用程序 所谓像Snapchat等 401 00:21:14,850 --> 00:21:19,380 这表示,这些照片只持续 五秒十秒钟,或诸如此类的东西。 402 00:21:19,380 --> 00:21:21,680 他们是短暂即 绝对不是这样的。 403 00:21:21,680 --> 00:21:25,670 像有没有办法,数字化, 实现某种形式的视频, 404 00:21:25,670 --> 00:21:30,150 或图像或文字等分享 上的另一端的接收方 405 00:21:30,150 --> 00:21:31,660 不能以某种方式保存数据。 406 00:21:31,660 --> 00:21:34,300 >> 在最原始的方法,有人 可以采取他们的电话。 407 00:21:34,300 --> 00:21:36,850 他们有10秒的窗口 而在寻找一些卡 408 00:21:36,850 --> 00:21:39,410 只需要一些其他的手机 和它拍照,效果显着。 409 00:21:39,410 --> 00:21:41,660 所以,你可以保留 一些数字的方式。 410 00:21:41,660 --> 00:21:44,620 你们当中有些人知道如何利用 截图您的手机上。 411 00:21:44,620 --> 00:21:49,290 事实上,如果你不知道这一点, 认识到,至少Snapchat, 412 00:21:49,290 --> 00:21:51,040 而且我认为其他 应用这些天, 413 00:21:51,040 --> 00:21:53,720 至少告诉你,如果 收件人实际 414 00:21:53,720 --> 00:21:55,310 拍摄图像的截图。 415 00:21:55,310 --> 00:22:00,870 >> 但更糟糕的是,这是snappening, 有人最近创造它, 416 00:22:00,870 --> 00:22:04,680 其中,大约10万 捕捉已被释放 417 00:22:04,680 --> 00:22:09,310 什么叫做torrent文件 在各网站最终。 418 00:22:09,310 --> 00:22:12,000 而这些包含了一大堆 私人邮件和公告。 419 00:22:12,000 --> 00:22:15,210 原来,他们大多是良性的, 所以不是你所期望的是什么。 420 00:22:15,210 --> 00:22:17,580 但由于人们有 使用第三方网站, 421 00:22:17,580 --> 00:22:20,270 他们Snapchat登录 用户名和密码,然后 422 00:22:20,270 --> 00:22:23,470 保存所有的卡扣 这个第三方网站。 423 00:22:23,470 --> 00:22:26,130 它是第三方 网站被黑, 424 00:22:26,130 --> 00:22:30,710 它只是意味着有人想出如何 让所有的10万再加上那些图片 425 00:22:30,710 --> 00:22:33,822 到自己的硬盘驱动器 随后的共享。 426 00:22:33,822 --> 00:22:36,030 坦率地说,在这里也一样,它的排序 对愚蠢的Snapchat 427 00:22:36,030 --> 00:22:39,360 以这样的方式来实现该 第三方可以排序拦截 428 00:22:39,360 --> 00:22:43,310 的数据,并且它不依赖于你的 自己的应用程序在手机上运行。 429 00:22:43,310 --> 00:22:46,947 但在这里,也认识到这些 事情不应该抓住你措手不及, 430 00:22:46,947 --> 00:22:49,030 或者至少应该有 是生命的教训在这里。 431 00:22:49,030 --> 00:22:52,220 如果您想技术 详细信息,请访问该网址有 432 00:22:52,220 --> 00:22:53,570 这是在今天的幻灯片。 433 00:22:53,570 --> 00:23:00,960 好了,就什么问题 CS在今天的生活中的经验教训? 434 00:23:00,960 --> 00:23:02,710 把这一关。 435 00:23:02,710 --> 00:23:04,970 什么事呢? 436 00:23:04,970 --> 00:23:06,301 什么事呢? 437 00:23:06,301 --> 00:23:09,050 我已经得到了很多人的检查 他们Snapchat什么的了。 438 00:23:09,050 --> 00:23:11,690 >> 好吧,那么SQL, 结构化查询语言。 439 00:23:11,690 --> 00:23:12,509 让我们把这个包。 440 00:23:12,509 --> 00:23:14,300 而且,即使 我们只是刮伤 441 00:23:14,300 --> 00:23:16,310 这种表面 语言,我们会给你 442 00:23:16,310 --> 00:23:18,930 足够的语言 在PSET 7的形式 443 00:23:18,930 --> 00:23:22,140 这样就可以解决一些 相当普遍的功能。 444 00:23:22,140 --> 00:23:24,912 但同时也发现有一对夫妇 事情我们不要求你, 445 00:23:24,912 --> 00:23:27,120 但他们将是 重要的来了最后的项目 446 00:23:27,120 --> 00:23:30,760 当然来使实际 实际用户的网站 447 00:23:30,760 --> 00:23:32,040 是这样的设计决策。 448 00:23:32,040 --> 00:23:34,460 >> 事实证明,在 MySQL数据库,你 449 00:23:34,460 --> 00:23:37,460 有像一束束的选择 为你的列中的数据类型 450 00:23:37,460 --> 00:23:41,670 和其他的东西,但你也有 所谓存储的选择 451 00:23:41,670 --> 00:23:44,570 引擎为您的所有数据, 排序文件系统, 452 00:23:44,570 --> 00:23:46,700 如果您熟悉, 您的所有数据。 453 00:23:46,700 --> 00:23:48,830 是它最终存储在什么格式? 454 00:23:48,830 --> 00:23:53,300 与最常见的,或许,一直 MyISAM和InnoDB,技术术语 455 00:23:53,300 --> 00:23:56,060 我们将只关心 的范围内,一个人 456 00:23:56,060 --> 00:23:58,500 和一个不具有 以下特征。 457 00:23:58,500 --> 00:24:00,390 >> 假设你有 一个小宿舍冰箱。 458 00:24:00,390 --> 00:24:03,030 并假设你和你的 室友,谁分享这个冰箱, 459 00:24:03,030 --> 00:24:04,682 真的是喜欢说牛奶。 460 00:24:04,682 --> 00:24:07,140 这是,事实上,如何 故事告诉我回来的路上 461 00:24:07,140 --> 00:24:10,890 在这一天,当我把一门课程 所谓CS 161的操作系统,这 462 00:24:10,890 --> 00:24:12,580 同样探讨了这个话题。 463 00:24:12,580 --> 00:24:13,760 所以,你有这个冰箱。 464 00:24:13,760 --> 00:24:14,630 你出的牛奶。 465 00:24:14,630 --> 00:24:17,000 你回家的时候,你的室友的 还在上课也好, 466 00:24:17,000 --> 00:24:19,208 而你决定我要去 出去找一些牛奶。 467 00:24:19,208 --> 00:24:22,630 所以你关闭了冰箱,死机 宿舍里,走在街对面 468 00:24:22,630 --> 00:24:25,330 到CVS或其它地方,并获得 在网上买了一些牛奶。 469 00:24:25,330 --> 00:24:28,960 >> 同时,你的室友到家 从类,进入宿舍里, 470 00:24:28,960 --> 00:24:31,802 打开冰箱,还实现 ooph,我们出的牛奶。 471 00:24:31,802 --> 00:24:33,760 于是,他或她关闭 冰箱再发生 472 00:24:33,760 --> 00:24:35,610 去其他的CVS, 这恰好是 473 00:24:35,610 --> 00:24:38,470 从另一个CVS一个街区之遥 在广场上,并​​在得到线 474 00:24:38,470 --> 00:24:40,230 那里得到一些牛奶。 475 00:24:40,230 --> 00:24:42,524 现在,当然,在几分钟 后来,你们俩回去, 476 00:24:42,524 --> 00:24:44,690 和最坏的所有可能的 结果已经发生。 477 00:24:44,690 --> 00:24:45,792 你们两个有奶。 478 00:24:45,792 --> 00:24:47,500 而你真的不 像牛奶那么多。 479 00:24:47,500 --> 00:24:49,625 所以其中之一是刚 去酸味在一些点。 480 00:24:49,625 --> 00:24:55,941 所以,现在你有过量 牛奶在冰箱里全是因为什么原因呢? 481 00:24:55,941 --> 00:24:57,072 >> [听不清] 482 00:24:57,072 --> 00:24:59,780 DAVID马兰:是的,你没有 彼此以某种方式进行通信 483 00:24:59,780 --> 00:25:00,904 你都拿到牛奶。 484 00:25:00,904 --> 00:25:04,320 因此,在最简单的 如何在人类的世界里, 485 00:25:04,320 --> 00:25:08,390 如何才能避免这种无聊 场景发生这样的 486 00:25:08,390 --> 00:25:09,750 您只落得之一。 487 00:25:09,750 --> 00:25:10,840 这些文字,是不错的。 488 00:25:10,840 --> 00:25:12,877 但是,怎么回事? 489 00:25:12,877 --> 00:25:13,460 贴字条。 490 00:25:13,460 --> 00:25:14,626 DAVID马兰:一个便利贴。 491 00:25:14,626 --> 00:25:17,150 任何形式的沟通 告诉你的室友 492 00:25:17,150 --> 00:25:18,670 走不进冰箱里的牛奶。 493 00:25:18,670 --> 00:25:20,440 我打算去进货我自己。 494 00:25:20,440 --> 00:25:22,770 所以,你需要以某种方式 锁定该资源。 495 00:25:22,770 --> 00:25:27,180 因此,我们可以让this--我们可以种 毁灭的故事,变成一个CS的故事 496 00:25:27,180 --> 00:25:30,360 由此认为这是就像一个 的变量,它存储一些数值。 497 00:25:30,360 --> 00:25:32,570 而现在,在 牛奶的值为零, 498 00:25:32,570 --> 00:25:35,410 你不想让你的 室友检查变量 499 00:25:35,410 --> 00:25:38,730 然后再做出决定他或她自己 根据该变量的状态 500 00:25:38,730 --> 00:25:42,430 如果你在过程中 改变该变量的状态。 501 00:25:42,430 --> 00:25:46,140 >> 所以SQL的线路之一,我们 给你PSET 7规格 502 00:25:46,140 --> 00:25:47,310 这是一个在这里。 503 00:25:47,310 --> 00:25:49,740 我们不花大 的时间谈论它。 504 00:25:49,740 --> 00:25:55,100 但事实证明,如果你想 买一些股票CS50融资 505 00:25:55,100 --> 00:25:58,000 你已经有 ,你的一些股票 506 00:25:58,000 --> 00:26:01,750 希望能够做一些 事情瞬间在一起。 507 00:26:01,750 --> 00:26:04,360 你想成为能够 有效地,在一个高的水平, 508 00:26:04,360 --> 00:26:06,700 检查没事,如果我想 买免费的更多的股份, 509 00:26:06,700 --> 00:26:08,780 仙股我们 在规范中讲, 510 00:26:08,780 --> 00:26:10,660 我想先检查 我有多少股份有。 511 00:26:10,660 --> 00:26:11,810 并假设这是5。 512 00:26:11,810 --> 00:26:14,600 并假设我想 买10多了,我最终 513 00:26:14,600 --> 00:26:17,069 想拥有15万股股票。 514 00:26:17,069 --> 00:26:18,360 所以我要问两个问题。 515 00:26:18,360 --> 00:26:20,230 什么是变量的状态? 516 00:26:20,230 --> 00:26:21,470 什么是该行的状态呢? 517 00:26:21,470 --> 00:26:22,970 有多少股票我现在有吗? 518 00:26:22,970 --> 00:26:24,636 然后,你要继续前进,更新。 519 00:26:24,636 --> 00:26:27,720 所以这是模拟的 牛奶在您检查的行, 520 00:26:27,720 --> 00:26:30,730 然后你想更新 因为如果你想购买10股, 521 00:26:30,730 --> 00:26:32,521 你不想改变 行至10,则 522 00:26:32,521 --> 00:26:35,300 想要将其更改为5 加10或,当然,15。 523 00:26:35,300 --> 00:26:40,030 >> 这行代码将确保 这两个概念的想法 524 00:26:40,030 --> 00:26:42,810 一起发生或根本没有。 525 00:26:42,810 --> 00:26:46,920 没有人,包括一些其它的用户 谁是登录到同一网站, 526 00:26:46,920 --> 00:26:49,900 可不知何故中断 行的检查 527 00:26:49,900 --> 00:26:52,960 与该行的更新,该 选择,如果你愿意的更新。 528 00:26:52,960 --> 00:26:57,360 而语法是不是超明显, 但是这一条线,长的是很, 529 00:26:57,360 --> 00:27:01,150 确保这两个操作 检查变量或检查行 530 00:27:01,150 --> 00:27:04,660 并更新该行发生的原子。 531 00:27:04,660 --> 00:27:06,849 >> 哦,又来了。 532 00:27:06,849 --> 00:27:07,890 在我的手机短信。 533 00:27:07,890 --> 00:27:09,954 因此,让我们使这个 一点更具体。 534 00:27:09,954 --> 00:27:12,120 假设你不 实现一台冰箱, 535 00:27:12,120 --> 00:27:16,400 而你不执行 PSET 7,但实际的银行, 536 00:27:16,400 --> 00:27:20,000 或自动取款机,自动取款 机,不知何故,让你 537 00:27:20,000 --> 00:27:22,960 希望能够授权 用户汇款 538 00:27:22,960 --> 00:27:24,500 从一个帐户向另一个。 539 00:27:24,500 --> 00:27:25,100 OK,挂。 540 00:27:25,100 --> 00:27:26,683 我现在要静音,谢谢。 541 00:27:26,683 --> 00:27:30,450 因此,我们要转移资金 从一个帐户号 542 00:27:30,450 --> 00:27:33,600 到一个不同的帐户 数,特别是100元。 543 00:27:33,600 --> 00:27:37,690 因此,这是一种任意的 例如,让你的自动取款机, 544 00:27:37,690 --> 00:27:41,060 可能要执行两个SQL 查询,从一个帐户中减去, 545 00:27:41,060 --> 00:27:42,430 并添加到其他帐户。 546 00:27:42,430 --> 00:27:46,766 但是你要确保这些 两行无论发生或根本没有。 547 00:27:46,766 --> 00:27:48,640 你不想要的东西 越来越中断。 548 00:27:48,640 --> 00:27:51,440 你不这样做一些聪明的坏蛋 不知何故站在美国银行 549 00:27:51,440 --> 00:27:53,270 在前面的两个自动取款机 他并以某种方式 550 00:27:53,270 --> 00:27:55,270 排序打字的 同时命令, 551 00:27:55,270 --> 00:28:01,230 希望试图以小博大200美元,而不是 100元,只用100美元记。 552 00:28:01,230 --> 00:28:04,450 总之,你要这 做出你期望的那样。 553 00:28:04,450 --> 00:28:06,540 >> 和你的方式 这在SQL数据库 554 00:28:06,540 --> 00:28:09,350 你在什么把它包 称为事务。 555 00:28:09,350 --> 00:28:14,290 从字面上看在SQL中,你可以调用CS50的 与报价引文结束开始查询功能 556 00:28:14,290 --> 00:28:15,370 交易。 557 00:28:15,370 --> 00:28:18,640 然后,您可以执行任何数量 随后的SQL查询, 558 00:28:18,640 --> 00:28:20,870 但他们都不拿 在数据库上实现 559 00:28:20,870 --> 00:28:25,880 直到调用查询报价引文结束 提交时,如果再使用PHP。 560 00:28:25,880 --> 00:28:29,810 并以这种方式,可以确保 即使你有1000个用户所有 561 00:28:29,810 --> 00:28:32,080 打你的数据库 同时,SQL 562 00:28:32,080 --> 00:28:34,540 会答应这些 两个查询将 563 00:28:34,540 --> 00:28:36,740 后,其他执行一个正确的。 564 00:28:36,740 --> 00:28:40,330 这样你就不会结束与过量 牛奶或错误的数量,最终, 565 00:28:40,330 --> 00:28:40,830 钱。 566 00:28:40,830 --> 00:28:43,110 >> 所以记住这一点, 没有那么多的PSET 7 567 00:28:43,110 --> 00:28:45,250 但对于最终的项目 如果你是真正 568 00:28:45,250 --> 00:28:49,690 试图四处移动数据 跨表,你可能会在这里。 569 00:28:49,690 --> 00:28:53,980 但也许更简单,更 显然,了解一个例子 570 00:28:53,980 --> 00:28:54,860 这是一个在这里。 571 00:28:54,860 --> 00:28:57,760 有人通过电子邮件发送关于我们 这只是一天 572 00:28:57,760 --> 00:28:59,600 当他看到类似的东西在网上。 573 00:28:59,600 --> 00:29:03,480 >> 所以,据我所知,销系统 是不是容易受到这种攻击。 574 00:29:03,480 --> 00:29:06,637 我不知道,如果它甚至使用 机罩下方的SQL数据库。 575 00:29:06,637 --> 00:29:08,470 但是,让我们用它来 就事论事。 576 00:29:08,470 --> 00:29:10,178 这里的屏幕 哈佛人往往 577 00:29:10,178 --> 00:29:13,620 查看与登录时的 哈佛的ID号及其引脚。 578 00:29:13,620 --> 00:29:19,020 并假设销系统是 在PHP和MySQL的执行 579 00:29:19,020 --> 00:29:22,000 数据库,代码,有人 可能已经编写年前 580 00:29:22,000 --> 00:29:23,270 可能是这样的。 581 00:29:23,270 --> 00:29:25,230 首先,声明一个 变量调用的用户名。 582 00:29:25,230 --> 00:29:27,560 和刚刚获得来自 在POST超全局。 583 00:29:27,560 --> 00:29:30,140 然后得到另一个变量 所谓的密码,也这样做。 584 00:29:30,140 --> 00:29:33,080 然后只需要执行 在这里长时间的查询, 585 00:29:33,080 --> 00:29:36,690 从用户那里选择明星 用户名等于如此这般 586 00:29:36,690 --> 00:29:38,510 和口令等于如此这般。 587 00:29:38,510 --> 00:29:40,660 >> 请注意,该卷曲 支撑我在这里使用 588 00:29:40,660 --> 00:29:42,880 刚才的意思是PHP,走 未来,并以 589 00:29:42,880 --> 00:29:45,400 这两个值 变数就在那里。 590 00:29:45,400 --> 00:29:50,090 他们不是绝对必要的,但 他们倾向于避免细微的语法错误。 591 00:29:50,090 --> 00:29:53,650 因此,这看起来完全 正确的第一眼。 592 00:29:53,650 --> 00:29:54,240 它是。 593 00:29:54,240 --> 00:29:56,680 你可以实现的 销系统是这样的。 594 00:29:56,680 --> 00:30:00,460 >> 但是,假设一个超级 聪明和恶意学生 595 00:30:00,460 --> 00:30:03,020 该输入他或她的脚。 596 00:30:03,020 --> 00:30:05,550 所以,我取出子弹 这里的招牌,在模拟时, 597 00:30:05,550 --> 00:30:08,760 我实际上已经揭示 他或她可能会打字。 598 00:30:08,760 --> 00:30:10,350 这是一个有点怪。 599 00:30:10,350 --> 00:30:13,850 但是,跳出你的可能 令人担忧的关于用户的输入, 600 00:30:13,850 --> 00:30:16,450 即使你不知道 SQL注入攻击手段。 601 00:30:16,450 --> 00:30:20,300 为什么这个看起来有点腥? 602 00:30:20,300 --> 00:30:21,050 那是什么? 603 00:30:21,050 --> 00:30:21,550 [听不清] 604 00:30:21,550 --> 00:30:24,260 DAVID马兰:本或者是 有点怀疑。 605 00:30:24,260 --> 00:30:26,310 事实上,这是从SQL关键字。 606 00:30:26,310 --> 00:30:28,105 所以这不是一个好兆头。 607 00:30:28,105 --> 00:30:29,980 一个事实,即有 所有这些单引号 608 00:30:29,980 --> 00:30:32,646 那里 - 其实,一个最简单的 如何打破某些数据库 609 00:30:32,646 --> 00:30:35,880 是通过键入像O'Reilly的名字 一个其中有一个撇号 610 00:30:35,880 --> 00:30:38,600 因为如果人类是谁写的 幕后的代码 611 00:30:38,600 --> 00:30:41,570 没有考虑到有 可能是单引号在用户的 612 00:30:41,570 --> 00:30:45,060 输入,和他或她正在使用 单引号中的代码, 613 00:30:45,060 --> 00:30:46,040 不好的事情都可能发生。 614 00:30:46,040 --> 00:30:47,870 >> 事实上,更糟糕的是,考虑这一点。 615 00:30:47,870 --> 00:30:50,600 如果这是一次代码 有人在哈佛岁月 616 00:30:50,600 --> 00:30:53,100 以前写的脚 系统,注意什么 617 00:30:53,100 --> 00:30:56,220 即将获得取代 用户名和密码 618 00:30:56,220 --> 00:30:59,780 如果用户在再次 skroob为他们的用户名 619 00:30:59,780 --> 00:31:03,960 然后一,二,三,四,五, 报价或报价引文结束一等 620 00:31:03,960 --> 00:31:04,660 举一个。 621 00:31:04,660 --> 00:31:07,220 并注意什么键 这里是用户还没有 622 00:31:07,220 --> 00:31:09,900 开始了他们的密码或 其引脚与报价。 623 00:31:09,900 --> 00:31:12,610 而且他们还没有结束它 用引号,因为他或她 624 00:31:12,610 --> 00:31:16,315 是假设如果 程序员就没有那么尖锐, 625 00:31:16,315 --> 00:31:18,690 他们将有那些 单引号中的代码。 626 00:31:18,690 --> 00:31:19,860 >> 因此,这里的代码。 627 00:31:19,860 --> 00:31:23,820 和置换该 现在可能发生的事情是这样的。 628 00:31:23,820 --> 00:31:26,350 我已经强调了什么 用户已键入英寸 629 00:31:26,350 --> 00:31:28,480 所以前,后。 630 00:31:28,480 --> 00:31:33,330 并注意什么婉转现在令人担忧 关于这个SQL代码的右半边? 631 00:31:33,330 --> 00:31:36,300 这是一个稍微复杂一些,诚然, 比疑问,我们已经看到了。 632 00:31:36,300 --> 00:31:38,550 但是这不可能 是一个很好的事情,如果你是 633 00:31:38,550 --> 00:31:42,240 话说择思达,这是选择 一切从用户的表 634 00:31:42,240 --> 00:31:46,630 其中username等于skroob和 密码等于一,二,三,四, 635 00:31:46,630 --> 00:31:49,610 5或一等于1。 636 00:31:49,610 --> 00:31:53,860 什么是逻辑蕴涵 那最后一句大概是? 637 00:31:53,860 --> 00:31:55,650 这只是总是如此。 638 00:31:55,650 --> 00:31:59,930 >> 那种因为我们已经猜到了 还是想通了,通过试错 639 00:31:59,930 --> 00:32:02,760 程序员谁 写这段代码没 640 00:32:02,760 --> 00:32:07,250 预测一个人或坏人 键入单引号为好, 641 00:32:07,250 --> 00:32:10,350 我们可以语法 完成SQL查询 642 00:32:10,350 --> 00:32:12,260 带着几分无厘头 但事 643 00:32:12,260 --> 00:32:15,930 在语法上是不正确 总是计算为true。 644 00:32:15,930 --> 00:32:19,130 因此,如果该代码被用来回答 这个问题真的还是假的应 645 00:32:19,130 --> 00:32:22,930 该用户被允许通过,则 答案永远是显然会 646 00:32:22,930 --> 00:32:26,930 是真实的,因为它始终会 以从数据库中选择的东西 647 00:32:26,930 --> 00:32:29,280 因为过程中的一个总是等于1。 648 00:32:29,280 --> 00:32:30,360 >> 那么,有什么解决办法吗? 649 00:32:30,360 --> 00:32:33,290 井PSET 7,我们实际上 避免这种情况都在一起。 650 00:32:33,290 --> 00:32:37,360 我们给你一个查询功能,而且我们 鼓励您使用问号 651 00:32:37,360 --> 00:32:40,430 作为占位符,类似 在精神的printf的%S, 652 00:32:40,430 --> 00:32:43,710 但什么是关键关于问号 在这里,如果你真正阅读过 653 00:32:43,710 --> 00:32:46,950 的functions.php,在那里我们 查询功能的实现, 654 00:32:46,950 --> 00:32:52,780 这些问号都逃了出来, 因此任何潜在的危险 655 00:32:52,780 --> 00:32:58,210 像单引号开启 成转义单引号。 656 00:32:58,210 --> 00:33:00,590 >> 因此,这是什么 真正发生的事情,如果你 657 00:33:00,590 --> 00:33:04,850 使用CS50的查询功能,或任何数量的 第三方免费库 658 00:33:04,850 --> 00:33:06,000 这样做。 659 00:33:06,000 --> 00:33:09,850 不会在这种情况下重要,在绿色, 如果用户在一个单一的报价已输入 660 00:33:09,850 --> 00:33:12,070 因为查询 功能,我们写的是 661 00:33:12,070 --> 00:33:15,120 会前添加反斜杠 任何此类危险的报价。 662 00:33:15,120 --> 00:33:17,360 因此,这是不是在 事实上,将是合法的。 663 00:33:17,360 --> 00:33:20,910 这就好比键入一个疯狂的寻找 密码这是当然的,不会 664 00:33:20,910 --> 00:33:23,490 要skroob的实际密码。 665 00:33:23,490 --> 00:33:28,260 >> 因此,外卖的CS50是其中之一, 绝对是经常使用的东西 666 00:33:28,260 --> 00:33:30,860 像CS50的查询功能 或底层库, 667 00:33:30,860 --> 00:33:32,560 这恰好被称为PDO。 668 00:33:32,560 --> 00:33:35,880 但从来没有,从来没有, 永远不会做这样的代码 669 00:33:35,880 --> 00:33:39,472 不逃避或擦洗 正如他们所说的投入。 670 00:33:39,472 --> 00:33:42,430 你会在某个时候可能 遇到这样的一些网站。 671 00:33:42,430 --> 00:33:46,060 事实上,它似乎是这种情况 像在机场和酒店的地方 672 00:33:46,060 --> 00:33:48,880 他们有免费的Wi-Fi 访问,你必须登录到, 673 00:33:48,880 --> 00:33:51,010 这些网站总是 可怕的实现。 674 00:33:51,010 --> 00:33:55,680 所以在家里练习一种乐趣, 不是为了恶意目的或以上 675 00:33:55,680 --> 00:33:59,170 道路上的一个有趣的 运动,是只需要输入 676 00:33:59,170 --> 00:34:02,850 一个撇号,单引号, 到一些网站上的表单 677 00:34:02,850 --> 00:34:03,810 看看会发生什么。 678 00:34:03,810 --> 00:34:06,660 如果服务器崩溃或使 你某种错误信息, 679 00:34:06,660 --> 00:34:09,690 它很可能是 有人没有预料到这一点。 680 00:34:09,690 --> 00:34:15,239 然后你应该提醒正确 当局并没有进一步进行。 681 00:34:15,239 --> 00:34:20,843 >> 所以,现在你们应该有希望 点击这里了解更多的怪胎幽默。 682 00:34:20,843 --> 00:34:24,120 >> [笑] 683 00:34:24,120 --> 00:34:27,571 684 00:34:27,571 --> 00:34:29,070 DAVID马兰:你知道你是个怪胎。 685 00:34:29,070 --> 00:34:30,944 在接下来的几个 年,你会记得 686 00:34:30,944 --> 00:34:33,520 谁的小鲍比表是 由于这部动画片在这里。 687 00:34:33,520 --> 00:34:36,760 所以记住这一点,因为我们 上下文切换是最后一次 688 00:34:36,760 --> 00:34:38,770 今天为JavaScript。 689 00:34:38,770 --> 00:34:41,600 我们花了比较少 时间对PHP的语法 690 00:34:41,600 --> 00:34:43,440 因为它实际上是 超级相似C. 691 00:34:43,440 --> 00:34:47,300 并很好地就够了,太多的JavaScript 超类似C的语法 692 00:34:47,300 --> 00:34:49,639 还有我们会看到 只是一瞬间,当我们将 693 00:34:49,639 --> 00:34:51,205 看看本周晚些时候尤其如此。 694 00:34:51,205 --> 00:34:54,080 你可以用这种语言做了什么, 虽然,所有的功能更强大, 695 00:34:54,080 --> 00:34:55,790 特别是原料药。 696 00:34:55,790 --> 00:34:56,960 >> 但首先快速浏览。 697 00:34:56,960 --> 00:35:00,450 因此,人们在JavaScript中,有 没有主函数,这是很好的。 698 00:35:00,450 --> 00:35:02,650 至于用PHP,你可以只写代码。 699 00:35:02,650 --> 00:35:04,310 情况是这样的。 700 00:35:04,310 --> 00:35:07,100 和布尔表达式可能 这个样子还是这样。 701 00:35:07,100 --> 00:35:09,530 开关的存在,并且它们 可能是这样的。 702 00:35:09,530 --> 00:35:10,970 四回路这个样子。 703 00:35:10,970 --> 00:35:12,390 while循环是这样的。 704 00:35:12,390 --> 00:35:14,160 做消遣这个样子。 705 00:35:14,160 --> 00:35:16,850 然后阵列的样子 这非常类似于PHP。 706 00:35:16,850 --> 00:35:20,740 但是请注意,在你的JavaScript 声明一个变量不与美元 707 00:35:20,740 --> 00:35:25,190 签署,不与数据类型,但是从字面上 说VAR变量之前。 708 00:35:25,190 --> 00:35:27,900 它也是弱类型 在于它具有的类型, 709 00:35:27,900 --> 00:35:29,729 但你不显式地声明它们。 710 00:35:29,729 --> 00:35:31,520 而对于随后的字符串, 例如,可能看起来 711 00:35:31,520 --> 00:35:34,350 这样,该字符串 在这种情况下,被称为第 712 00:35:34,350 --> 00:35:35,410 再一个目的。 713 00:35:35,410 --> 00:35:37,010 而这些,我们会看到更多以前长。 714 00:35:37,010 --> 00:35:41,470 和对象也许是一个 最常见的数据结构 715 00:35:41,470 --> 00:35:44,050 在一个基于JavaScript的 方案,因为它允许 716 00:35:44,050 --> 00:35:46,680 您可以任意关联 键值对刚 717 00:35:46,680 --> 00:35:51,240 像PHP的关联数组 而就像你自己的哈希表 718 00:35:51,240 --> 00:35:54,042 或尝试为我们实施 在几个星期前。 719 00:35:54,042 --> 00:35:56,250 因此,让我们真正看到了什么 我们可以用JavaScript做。 720 00:35:56,250 --> 00:35:59,410 特别是,这是 功能一箩筐 721 00:35:59,410 --> 00:36:02,300 该浏览器有 让我们上钩的JavaScript 722 00:36:02,300 --> 00:36:05,470 成以下述方式一个网站。 723 00:36:05,470 --> 00:36:09,340 JavaScript是经常被用来作为 客户端脚本语言。 724 00:36:09,340 --> 00:36:10,130 它不会被编译。 725 00:36:10,130 --> 00:36:11,370 它也被解释。 726 00:36:11,370 --> 00:36:15,740 但是,与PHP,其中已经运行 在服务器上,在Web服务器中, 727 00:36:15,740 --> 00:36:18,220 或者是内心深处 客户端的JavaScript 728 00:36:18,220 --> 00:36:22,190 是在于它不同 通常运行在浏览器中。 729 00:36:22,190 --> 00:36:26,060 >> 所以任何JavaScript代码,你开始写作 为PSET 8,或者你的最终项目, 730 00:36:26,060 --> 00:36:29,890 或者在现实世界中,通常会 保存在服务器上,绝对 731 00:36:29,890 --> 00:36:33,110 在一个点的HTML或点 JS的JavaScript文件。 732 00:36:33,110 --> 00:36:35,770 但浏览器会 下载的JavaScript 733 00:36:35,770 --> 00:36:39,530 码到您自己的Chrome浏览器的情况下, 或IE或Firefox,或什么的。 734 00:36:39,530 --> 00:36:43,870 和代码实际上是要得到 你自己的浏览器内执行。 735 00:36:43,870 --> 00:36:46,560 只是为了让这个更真实, 让我们来看看这个的具体形式。 736 00:36:46,560 --> 00:36:50,120 >> 我们不知道这个代码 没有通过它真的读。 737 00:36:50,120 --> 00:36:52,670 但是,让我去Facebook.com 无需登录。 738 00:36:52,670 --> 00:37:00,440 让我去检查元素和去, 比方说,网络并重新加载页面。 739 00:37:00,440 --> 00:37:04,150 我们将see--让我转变的刷新 页面获得所有的请求到新的。 740 00:37:04,150 --> 00:37:08,850 和的第一 文件我看到的是CSS,CSS。 741 00:37:08,850 --> 00:37:10,880 这里的第一个 JavaScript文件,我有 742 00:37:10,880 --> 00:37:14,600 不知道这是什么一样,但在这里 是一些JavaScript代码 743 00:37:14,600 --> 00:37:16,180 驱动Facebook的。 744 00:37:16,180 --> 00:37:18,400 它甚至不是真的 揭示进行放大。 745 00:37:18,400 --> 00:37:20,260 它仍然是一样荒谬。 746 00:37:20,260 --> 00:37:24,341 >> 但是你会看到,即使向下跌破,有 更是这些JavaScript文件。 747 00:37:24,341 --> 00:37:24,840 哎呦。 748 00:37:24,840 --> 00:37:25,440 这是一个平。 749 00:37:25,440 --> 00:37:28,550 让我们往下走一点点 另外,进一步,还。 750 00:37:28,550 --> 00:37:29,894 还有一个。 751 00:37:29,894 --> 00:37:31,238 还有一个。 752 00:37:31,238 --> 00:37:31,880 还有一个。 753 00:37:31,880 --> 00:37:35,820 >> 因此,即使Facebook的,后面的 场景,被写入在PHP部 754 00:37:35,820 --> 00:37:39,100 与Facebook的自己的版本物, 有大量的JavaScript的。 755 00:37:39,100 --> 00:37:41,330 事实上,任何一种 聊天你在Facebook上, 756 00:37:41,330 --> 00:37:45,520 任何内联时间表更新 这是实时发生的,所有这一切 757 00:37:45,520 --> 00:37:47,944 是由JavaScript驱动。 758 00:37:47,944 --> 00:37:48,444 是吗? 759 00:37:48,444 --> 00:37:50,235 >> 听众:我不知道 如果是这样的Facebook, 760 00:37:50,235 --> 00:37:53,624 但我认为,Facebook开发 他们自己内部的代码语言? 761 00:37:53,624 --> 00:37:54,540 DAVID马兰:他们做到了。 762 00:37:54,540 --> 00:37:58,110 所以这就是为什么我说的方差 PHP的所谓嘻哈,他们实际上是 763 00:37:58,110 --> 00:38:03,440 添加的功能,以使得当 马克首次实施的Facebook, 764 00:38:03,440 --> 00:38:04,710 它是用PHP编写的。 765 00:38:04,710 --> 00:38:07,370 排序的,并一直保持 的前端语言的排序 766 00:38:07,370 --> 00:38:09,030 它们用于多 其编码,但它的 767 00:38:09,030 --> 00:38:11,870 一直没有语言的 扩展特别十亿 768 00:38:11,870 --> 00:38:12,630 人。 769 00:38:12,630 --> 00:38:15,300 因此,他们都增加了自己 改进幕后。 770 00:38:15,300 --> 00:38:17,049 和它们使用任意数量 其他语言 771 00:38:17,049 --> 00:38:19,170 为各条 他们的基础设施。 772 00:38:19,170 --> 00:38:24,080 所以,是的,这是一个变化 我们现在所知道的PHP。 773 00:38:24,080 --> 00:38:26,610 >> 因此,让我们一起来看看 在一些例子 774 00:38:26,610 --> 00:38:28,890 对我们如何使用JavaScript在这里。 775 00:38:28,890 --> 00:38:32,530 在今天的源代码,我们有 一堆文件,其中第一个, 776 00:38:32,530 --> 00:38:34,090 让我们叫DOM为零。 777 00:38:34,090 --> 00:38:36,770 所以DOM零如下所示。 778 00:38:36,770 --> 00:38:40,730 让我进入这个目录 开放domzero.html, 779 00:38:40,730 --> 00:38:44,970 其中的顶部具有一个文档类型 声明说:这里来的HTML 5。 780 00:38:44,970 --> 00:38:46,440 现在这里是一个HTML标签。 781 00:38:46,440 --> 00:38:47,540 这里的head标签。 782 00:38:47,540 --> 00:38:49,210 下面是今天有什么新鲜事。 783 00:38:49,210 --> 00:38:52,620 >> 我们现在有一个脚本标签 内的页面的头部。 784 00:38:52,620 --> 00:38:55,290 而这显然是不 很少,但是公告 785 00:38:55,290 --> 00:38:58,410 我已经定义了一个 脚本的脚本。 786 00:38:58,410 --> 00:39:01,050 和作为一边,因为这 是一种常见的误解, 787 00:39:01,050 --> 00:39:05,220 JavaScript有绝对没有 做Java的语言 788 00:39:05,220 --> 00:39:08,010 有些人可能 已经学会了在APCS。 789 00:39:08,010 --> 00:39:10,480 它更多的是营销 比什么都重要的事情, 790 00:39:10,480 --> 00:39:12,980 以前骑的Java多年的燕尾服。 791 00:39:12,980 --> 00:39:17,300 但JavaScript的,无关 Java的,只是类似,并且同样造成困扰, 792 00:39:17,300 --> 00:39:18,480 容易混淆的名字命名的。 793 00:39:18,480 --> 00:39:21,890 >> 因此,这里是你如何声明一个函数 在JavaScript中,从字面上说的功能, 794 00:39:21,890 --> 00:39:24,556 然后该函数的名称, 那么任何参数可能需要, 795 00:39:24,556 --> 00:39:25,530 就像在PHP。 796 00:39:25,530 --> 00:39:28,990 原来,在JavaScript中,最为1 存在烦人的功能是预警。 797 00:39:28,990 --> 00:39:31,392 这是一个小窗口, 会弹出并提醒您 798 00:39:31,392 --> 00:39:32,600 到一些信息。 799 00:39:32,600 --> 00:39:33,766 在它的一般皱起了眉头。 800 00:39:33,766 --> 00:39:35,980 但是,我们将用它作为我们 这里第一个练习。 801 00:39:35,980 --> 00:39:37,900 >> 注意:JavaScript的一些功能。 802 00:39:37,900 --> 00:39:41,524 单引号和双引号 实际上并不重要了。 803 00:39:41,524 --> 00:39:43,690 单引号和双 报价可以互换, 804 00:39:43,690 --> 00:39:46,220 而在C中,你必须使用 双引号的字符串, 805 00:39:46,220 --> 00:39:48,150 你有两个单 引用的字符。 806 00:39:48,150 --> 00:39:51,150 在JavaScript的世界里, 很多人,大多数人 807 00:39:51,150 --> 00:39:54,970 周围使用字符串单引号 只是因为它是一个风格的东西。 808 00:39:54,970 --> 00:39:58,330 但是,什么是加号运算符在这里, 这是我们以前从未见过的? 809 00:39:58,330 --> 00:39:59,836 >> 听众:串联。 810 00:39:59,836 --> 00:40:00,960 DAVID马兰:级联。 811 00:40:00,960 --> 00:40:02,450 所以C甚至没有了。 812 00:40:02,450 --> 00:40:04,820 PHP具有点运算符, 它执行此操作。 813 00:40:04,820 --> 00:40:09,710 JavaScript有加号运算符, 而令人困惑的是Java一样。 814 00:40:09,710 --> 00:40:11,440 现在,这是怎么回事吗? 815 00:40:11,440 --> 00:40:14,260 >> 所以,这里的地方基本 那张照片的理解 816 00:40:14,260 --> 00:40:17,010 我们扔了一对夫妇 日前进场。 817 00:40:17,010 --> 00:40:19,620 还记得我们有一个简单的 版本的HTML page-- 818 00:40:19,620 --> 00:40:20,830 它只是说,你好世界。 819 00:40:20,830 --> 00:40:22,770 然后我们画了一棵树 到右侧,这 820 00:40:22,770 --> 00:40:27,320 有一堆矩形和线条 连接它们就像一个家庭树。 821 00:40:27,320 --> 00:40:30,820 这就是所谓的DOM 或文档对象模型。 822 00:40:30,820 --> 00:40:36,759 而事实证明,你可以访问 在语法树的矩形 823 00:40:36,759 --> 00:40:37,550 像下面这样。 824 00:40:37,550 --> 00:40:41,370 你从字面上说的文件,这是一个 在JavaScript特殊的全局变量 825 00:40:41,370 --> 00:40:45,890 程序,它具有这样的功能 与之相关联,可以访问 826 00:40:45,890 --> 00:40:50,280 类似结构,但你根本 说点,然后函数名, 827 00:40:50,280 --> 00:40:52,390 通过ID获得的元素。 828 00:40:52,390 --> 00:40:55,460 >> 我想要得到的元素是 显然报价所享有的名字。 829 00:40:55,460 --> 00:40:57,150 然后,我想它的价值。 830 00:40:57,150 --> 00:40:58,330 现在,我们正在超越自我。 831 00:40:58,330 --> 00:41:00,038 我甚至不知道什么 这一切是什么。 832 00:41:00,038 --> 00:41:03,000 让我们快进到HTML上 的页面,这是超级简单。 833 00:41:03,000 --> 00:41:05,370 >> 我已经定义的通知 形成一个倒在这里。 834 00:41:05,370 --> 00:41:07,940 请注意,我已经给它一个独特的 ID,即使我们不使用 835 00:41:07,940 --> 00:41:08,870 此属性之前。 836 00:41:08,870 --> 00:41:11,300 但是,这存在于HTML。 837 00:41:11,300 --> 00:41:15,570 你可以唯一地标识了一些大块 的HTML像这样的标识符。 838 00:41:15,570 --> 00:41:19,880 >> 请注意,现在this--原来的HTML 支持,每说箩筐 839 00:41:19,880 --> 00:41:22,490 刚才,一个整体 一堆的事件处理程序。 840 00:41:22,490 --> 00:41:25,060 而这个事件处理程序上说,提交。 841 00:41:25,060 --> 00:41:28,730 在用户提交本 窗体,调用以下代码。 842 00:41:28,730 --> 00:41:31,360 而代码是怎么回事 被称为或执行 843 00:41:31,360 --> 00:41:35,260 正是这一点,希腊 随后返回false功能。 844 00:41:35,260 --> 00:41:37,360 一切应 是相当熟悉的。 845 00:41:37,360 --> 00:41:42,050 >> 这里是文本类型的输入,其 的ID,在这种情况下,将是名称。 846 00:41:42,050 --> 00:41:45,430 我们没有一个实际的name属性 这个时间 - 和一个提交按钮。 847 00:41:45,430 --> 00:41:48,330 因此,所产生的页面看起来是这样的。 848 00:41:48,330 --> 00:41:52,890 所得的行为, 你会看到,看起来是这样的。 849 00:41:52,890 --> 00:41:56,940 该页面是本地主机说,你好 大卫,几乎没有一个美观 850 00:41:56,940 --> 00:41:58,340 的方式来迎接用户。 851 00:41:58,340 --> 00:41:59,950 但是,什么是真正回事? 852 00:41:59,950 --> 00:42:01,360 >> 那么,考虑这是什么。 853 00:42:01,360 --> 00:42:02,310 这是一个文本字段。 854 00:42:02,310 --> 00:42:04,635 并根据 HTML在这里,我已经给它 855 00:42:04,635 --> 00:42:07,350 一个唯一的标识符 所谓的报价所享有的名字。 856 00:42:07,350 --> 00:42:09,770 同时,我已经说过了,当 用户提交此表单 857 00:42:09,770 --> 00:42:13,820 通过按Enter键或单击Submit 按钮,拨打叫迎功能 858 00:42:13,820 --> 00:42:15,410 然后返回False。 859 00:42:15,410 --> 00:42:16,870 让我们考虑那些相反。 860 00:42:16,870 --> 00:42:20,590 请注意,当我点击提交时, 当前页的URL不改变。 861 00:42:20,590 --> 00:42:22,420 浏览器的图标 未开始旋转。 862 00:42:22,420 --> 00:42:27,050 我没有去任何地方,这是 从字面上因为我说返回False。 863 00:42:27,050 --> 00:42:31,534 返回False短路或停止 窗体的默认行为。 864 00:42:31,534 --> 00:42:33,700 让那么留给我们 这最后一个问题。 865 00:42:33,700 --> 00:42:34,764 什么是问候呢? 866 00:42:34,764 --> 00:42:36,680 好了,迎接显然 调用一个调用的函数 867 00:42:36,680 --> 00:42:39,250 警报,通过在一个 长的说法是 868 00:42:39,250 --> 00:42:43,950 串联起来的结果 一堆的子字符串,你好逗号分隔, 869 00:42:43,950 --> 00:42:45,810 那么无论这个返回。 870 00:42:45,810 --> 00:42:51,490 因此,文件就像是一个全球性的 变量是树的根, 871 00:42:51,490 --> 00:42:55,560 调用一个特殊的功能, 否则现在被称为方法。 872 00:42:55,560 --> 00:42:57,650 一个函数,它是 内的一个变量是 873 00:42:57,650 --> 00:42:59,640 叫的方法,而不是一个函数。 874 00:42:59,640 --> 00:43:01,570 >> 因此,获得了元素的ID。 875 00:43:01,570 --> 00:43:03,940 哪些因素你 希望通过它的ID来获得? 876 00:43:03,940 --> 00:43:06,970 引用所享有的姓名和 那么具体数值。 877 00:43:06,970 --> 00:43:12,000 所以,换句话说,代码简单 找到ID为名称的文本字段 878 00:43:12,000 --> 00:43:13,380 然后获取其值。 879 00:43:13,380 --> 00:43:16,460 所以,如果我要改变这 并说达文,而不是大卫, 880 00:43:16,460 --> 00:43:20,670 并点击提交,现在我们 有一个问候的达文。 881 00:43:20,670 --> 00:43:22,890 >> 好吧,让一切优秀和良好。 882 00:43:22,890 --> 00:43:25,480 但是让我们看看我们能不能​​做 这一点,因为刚刚清洗剂 883 00:43:25,480 --> 00:43:28,190 编写这样的代码是 一般会在被皱起了眉头。 884 00:43:28,190 --> 00:43:30,060 这是要去看看可怕。 885 00:43:30,060 --> 00:43:32,330 但是,什么是第一 你注意这里的区别 886 00:43:32,330 --> 00:43:35,970 在这个版本中除了 名称更改为DOM呢? 887 00:43:35,970 --> 00:43:41,110 什么结构上看起来不一样 这个相对于其他的? 888 00:43:41,110 --> 00:43:41,932 是吗? 889 00:43:41,932 --> 00:43:43,890 听众:是的形式 现在的剧本之上? 890 00:43:43,890 --> 00:43:46,570 DAVID马兰:是啊,形式之上 的脚本,一些奇怪的原因。 891 00:43:46,570 --> 00:43:48,736 所以这是第一件事情 即跳出我了。 892 00:43:48,736 --> 00:43:50,990 谢天谢地,至少, 这部分是相同的。 893 00:43:50,990 --> 00:43:53,470 这样看来唯一 有所不同的就是这个。 894 00:43:53,470 --> 00:43:55,296 >> 因此,这里是什么整洁 关于JavaScript 2。 895 00:43:55,296 --> 00:43:57,420 它使得它很难 了解乍看之下, 896 00:43:57,420 --> 00:44:00,670 尤其是对于最后的项目,如果 你看的代码示例在线, 897 00:44:00,670 --> 00:44:04,200 但它归结为一些 基本的句法特征。 898 00:44:04,200 --> 00:44:06,230 这里又是 全局变量的文件。 899 00:44:06,230 --> 00:44:09,540 这里再次的是,方法或函数 上面写着得到了ID的元素。 900 00:44:09,540 --> 00:44:11,570 这一次,我想 拿到所谓演示的ID。 901 00:44:11,570 --> 00:44:12,490 哪里是? 902 00:44:12,490 --> 00:44:15,400 这显然​​是正确的 在这里,形式本身。 903 00:44:15,400 --> 00:44:20,010 >> 现在发现,显然,如果我 取回从树节点 904 00:44:20,010 --> 00:44:22,940 表示形式 本身,而不是一个文本字段, 905 00:44:22,940 --> 00:44:26,970 事实证明,形式,即 从树节点或矩形, 906 00:44:26,970 --> 00:44:30,450 有什么,我们会打电话给一个属性, 非常,非常,非常相似 907 00:44:30,450 --> 00:44:35,390 在精神上要在C的结构这只是 这个矩形的内部数据成员。 908 00:44:35,390 --> 00:44:38,300 >> 所以,我有形式 在这里,我安装, 909 00:44:38,300 --> 00:44:44,650 或者我指定,其对提交 处理器或者更确切地说,在提交财产 910 00:44:44,650 --> 00:44:45,740 下面的函数。 911 00:44:45,740 --> 00:44:49,000 这是迄今为止,最疯狂 事情至此语法。 912 00:44:49,000 --> 00:44:53,610 原来,在JavaScript中和 PHP,并坦言在C此事, 913 00:44:53,610 --> 00:44:58,990 即使我们不这样做,你可以 添加无名,匿名,或者AKA拉姆达 914 00:44:58,990 --> 00:45:03,000 没有一个名字的函数 但还是能够调用。 915 00:45:03,000 --> 00:45:07,050 >> 那么,我在这里做的,我分配 这在提交属性,它 916 00:45:07,050 --> 00:45:14,330 是我的DOM树中的该节点的内部,一 函数,函数指针,如果你愿意。 917 00:45:14,330 --> 00:45:16,310 该函数没有 名字,但也不至于 918 00:45:16,310 --> 00:45:19,110 重要,因为我们将看到 在某一时刻如何调用它。 919 00:45:19,110 --> 00:45:21,780 当这个函数被调用, 这段代码被执行,然后 920 00:45:21,780 --> 00:45:24,210 假的是就像之前交回。 921 00:45:24,210 --> 00:45:25,800 >> 但是请注意,我做了什么。 922 00:45:25,800 --> 00:45:27,830 在这一点上,在 故事,我有一个表格。 923 00:45:27,830 --> 00:45:30,190 它有所谓演示一个唯一的ID。 924 00:45:30,190 --> 00:45:33,740 到这里,我有一个脚本标签 其执行以下代码。 925 00:45:33,740 --> 00:45:37,720 它连接到该节点 树它是在提交 926 00:45:37,720 --> 00:45:40,260 物业该功能在这里。 927 00:45:40,260 --> 00:45:44,310 而刚刚通过的浏览器是如何工作的性质, 当我现在单击提交或按Enter键, 928 00:45:44,310 --> 00:45:45,889 该功能将会被调用。 929 00:45:45,889 --> 00:45:48,680 它并不需要,因为谁名字 到底在乎它叫什么。 930 00:45:48,680 --> 00:45:52,540 它永远会得到的唯一一次 所谓的是,当我提交表单。 931 00:45:52,540 --> 00:45:55,130 有没有必要对我来说, 人类的开发, 932 00:45:55,130 --> 00:45:57,330 真正把它叫做任何其他地方。 933 00:45:57,330 --> 00:46:00,720 >> 现在,就像一个玩笑话,好像这就是 不介意弯曲不够, 934 00:46:00,720 --> 00:46:03,330 我们甚至可以这样 看起来更神秘使用 935 00:46:03,330 --> 00:46:05,850 一个超级流行的库称为jQuery的。 936 00:46:05,850 --> 00:46:08,760 事实上jQuery和JavaScript的 经常混为一谈。 937 00:46:08,760 --> 00:46:12,790 而我们要做的周三开始 使用这种语言,这些库 938 00:46:12,790 --> 00:46:16,030 建设日益异步 和动态应用 939 00:46:16,030 --> 00:46:18,950 像图让 应用程序,应用程序 940 00:46:18,950 --> 00:46:22,360 即实时更新的网页 时间,就像Facebook或谷歌聊天软件 941 00:46:22,360 --> 00:46:27,130 这样做,并且不再把自己局限在 通过一个GET或只是击中后提交 942 00:46:27,130 --> 00:46:27,630 孤单。 943 00:46:27,630 --> 00:46:29,055 所以,我会看到你在周三。 944 00:46:29,055 --> 00:46:31,805 945 00:46:31,805 --> 00:46:35,550 >> [音乐播放] 946 00:46:35,550 --> 00:48:09,728