1 00:00:00,000 --> 00:00:10,393 >> [音乐播放] 2 00:00:10,393 --> 00:00:11,037 3 00:00:11,037 --> 00:00:12,120 DAVID J.马兰:好吧。 4 00:00:12,120 --> 00:00:12,830 欢迎回来。 5 00:00:12,830 --> 00:00:13,890 这是CS50。 6 00:00:13,890 --> 00:00:15,570 这是8周结束。 7 00:00:15,570 --> 00:00:18,360 如你所知,我们有漂亮 在几个正常办公时间 8 00:00:18,360 --> 00:00:21,090 的食堂, 包括安嫩伯格。 9 00:00:21,090 --> 00:00:23,860 而一些球队的好心 拍了些照片最近。 10 00:00:23,860 --> 00:00:26,230 为了庆祝 万圣节,我们认为我们会 11 00:00:26,230 --> 00:00:30,160 分享一个而被抓住了我们 惊喜在这里安嫩伯格厅刚刚 12 00:00:30,160 --> 00:00:31,490 那天晚上。 13 00:00:31,490 --> 00:00:36,300 你的同学雅各布合影 这张照片,但更有趣 14 00:00:36,300 --> 00:00:39,760 是在Facebook上,随后 谈话发生之后。 15 00:00:39,760 --> 00:00:43,020 >> 响应他的第一篇文章 他的照片是这样的。 16 00:00:43,020 --> 00:00:46,740 几分钟后,他决定 来一补自己与此有关。 17 00:00:46,740 --> 00:00:53,800 它接着说,然后去这个, 然后,甚至更可笑 18 00:00:53,800 --> 00:00:55,320 是当他的妈妈在帮腔。 19 00:00:55,320 --> 00:00:59,240 20 00:00:59,240 --> 00:01:01,800 然后最终, 看来这只是 21 00:01:01,800 --> 00:01:04,860 一个美妙的诡计了 玩这回事。 22 00:01:04,860 --> 00:01:07,080 >> 所以,如果你想 看到雅各布和其他人, 23 00:01:07,080 --> 00:01:10,880 其中辛西娅·孟,谁的 背后CS50区工作人员的场景, 24 00:01:10,880 --> 00:01:13,970 前往这个网址,这戏在这里。 25 00:01:13,970 --> 00:01:18,810 因此,事不宜迟,今天我们 继续这个看网络编程, 26 00:01:18,810 --> 00:01:21,810 和节目的实际制作 没有你的命令行中运行, 27 00:01:21,810 --> 00:01:24,080 而是在浏览器内运行。 28 00:01:24,080 --> 00:01:26,320 >> 据推测,现在,还是挺 不久,你会 29 00:01:26,320 --> 00:01:30,200 要在落实之中 自己的Web服务器, 30 00:01:30,200 --> 00:01:31,700 从web编程不同。 31 00:01:31,700 --> 00:01:36,210 在pset6 Web服务器是所有关于 编写软件,它知道如何采取 32 00:01:36,210 --> 00:01:39,300 从浏览器的HTTP请求, 甚至从你,一个人, 33 00:01:39,300 --> 00:01:42,340 有一个程序叫Telnet和 再响应这些请求要么 34 00:01:42,340 --> 00:01:48,600 通过吐出一个HTML文件,或 JPEG或GIF,甚至是PHP文件。 35 00:01:48,600 --> 00:01:52,490 >> 但是,与Web服务器,它不是 应该只是打开一个PHP文件, 36 00:01:52,490 --> 00:01:55,260 东西.php结尾,并 然后吐出的内容。 37 00:01:55,260 --> 00:01:58,440 它应该做的 什么该文件第一? 38 00:01:58,440 --> 00:01:59,390 可以这么说。 39 00:01:59,390 --> 00:02:04,060 不编译它,我们周一表示, 但rather--因此,解释它。 40 00:02:04,060 --> 00:02:08,070 >> PHP是一种解释型语言,所以 在你的网络的关键特征之一 41 00:02:08,070 --> 00:02:11,550 服务器,尽管美国实施, 这种能力对于你的web服务器 42 00:02:11,550 --> 00:02:12,490 要注意哦。 43 00:02:12,490 --> 00:02:14,580 这是.php结尾的文件。 44 00:02:14,580 --> 00:02:17,970 我不只是将其发送到 用户喜欢它的静态内容, 45 00:02:17,970 --> 00:02:20,970 而是让我读它一行 线,从左到右,并解释它。 46 00:02:20,970 --> 00:02:23,030 >> 而要做到,你 球员将主要 47 00:02:23,030 --> 00:02:26,520 踢一个节目中的器具, 和对大量的计算机系统, 48 00:02:26,520 --> 00:02:27,500 只是所谓的PHP。 49 00:02:27,500 --> 00:02:30,579 这就是PHP的名 语言本身的解释。 50 00:02:30,579 --> 00:02:33,120 所以,这一块我们实施 你和什么留给你, 51 00:02:33,120 --> 00:02:35,240 最终,是一个数 件,其中 52 00:02:35,240 --> 00:02:37,960 正在实施的支持 对于静态内容。 53 00:02:37,960 --> 00:02:40,180 >> 但现在,与 问题设置7,你 54 00:02:40,180 --> 00:02:43,660 要开始过渡到 实际编写PHP代码 55 00:02:43,660 --> 00:02:45,970 这被解释 在谈及到后端 56 00:02:45,970 --> 00:02:47,960 数据库,其存储的信息。 57 00:02:47,960 --> 00:02:51,020 因此,让我们更好地了解第一 一对夫妇这些超全局变量 58 00:02:51,020 --> 00:02:53,720 而到底有多少权力,你 获得开箱即用免费 59 00:02:53,720 --> 00:02:55,250 与像PHP语言。 60 00:02:55,250 --> 00:02:57,350 你做的事情没有 自己实现。 61 00:02:57,350 --> 00:03:01,700 >> 所以,我们看到在周一$ _ GET, 这是一个超全局, 62 00:03:01,700 --> 00:03:05,496 这是刚刚PHP代言的全球 变量,你可以在任何地方访问。 63 00:03:05,496 --> 00:03:06,620 而且里面有什么的$ _GET? 64 00:03:06,620 --> 00:03:09,930 65 00:03:09,930 --> 00:03:12,110 什么是这里面 超全局,我们看到了什么? 66 00:03:12,110 --> 00:03:15,900 67 00:03:15,900 --> 00:03:19,020 当然,在统计上 至少有一个人知道。 68 00:03:19,020 --> 00:03:21,590 什么是里面的$ _GET? 69 00:03:21,590 --> 00:03:22,426 是吗? 70 00:03:22,426 --> 00:03:24,130 >> 听众:这是变数 你把在查询字符串。 71 00:03:24,130 --> 00:03:24,530 >> DAVID J.马兰:完美。 72 00:03:24,530 --> 00:03:26,488 这是你的变量 把在查询字符串。 73 00:03:26,488 --> 00:03:29,910 所以,在我们的年长的例子 谷歌重新实现的时候,我们有 74 00:03:29,910 --> 00:03:34,130 一个URL,然后问号, 其中划定HTTP的开始 75 00:03:34,130 --> 00:03:37,950 参数,那么我们有Q等于 东西,像Q等于猫, 76 00:03:37,950 --> 00:03:41,500 你会自动地往里走 那$ _GET超级全局适合你, 77 00:03:41,500 --> 00:03:47,430 因为PHP的,是Q的一个关键, 和其价值的猫。 78 00:03:47,430 --> 00:03:51,250 >> 换句话说,$ _GET和所有的 这些东西都是关联数组, 79 00:03:51,250 --> 00:03:54,530 排序哈希表,即 存储键和值。 80 00:03:54,530 --> 00:03:57,980 现在,早在pset5,哈希 表,你可能已经实现, 81 00:03:57,980 --> 00:04:00,220 或者试试你可能 已经实施了,真的 82 00:04:00,220 --> 00:04:04,010 是有效的关联 阵列,数据结构 83 00:04:04,010 --> 00:04:07,220 由此可以联想 键与值。 84 00:04:07,220 --> 00:04:09,690 >> 但在pset5,该值是微不足道的。 85 00:04:09,690 --> 00:04:12,430 价值本质上是真的还是假的。 86 00:04:12,430 --> 00:04:13,900 在字典中的字? 87 00:04:13,900 --> 00:04:18,279 所以,当你散列像苹果字 看是否苹果是在词典, 88 00:04:18,279 --> 00:04:21,820 你的检查功能想必 返回true或false。 89 00:04:21,820 --> 00:04:24,120 所以,这是有效的 值,我们得到了。 90 00:04:24,120 --> 00:04:26,456 >> 但是我们看到在周一 简单地说,你肯定能 91 00:04:26,456 --> 00:04:28,830 联想更有趣 价值不仅仅是true或false 92 00:04:28,830 --> 00:04:30,790 连键,就像苹果。 93 00:04:30,790 --> 00:04:33,909 其实你可以返回 任意的字符串,而事实上, 94 00:04:33,909 --> 00:04:36,200 这就是$ _ GET和这些 其他变量让你做。 95 00:04:36,200 --> 00:04:40,595 >> 因此,$ _ POST是神似, 但如果你通过邮寄提交表单, 96 00:04:40,595 --> 00:04:44,490 不同的HTTP方法是 用的东西像信用卡, 97 00:04:44,490 --> 00:04:48,410 信息和私人信息,甚至 二进制信息,如照片, 98 00:04:48,410 --> 00:04:51,840 这些事情最终的$ _ POST内。 99 00:04:51,840 --> 00:04:53,770 而实际上的文件 像JPEG文件和诸如此类的东西, 100 00:04:53,770 --> 00:04:58,290 甚至还有另一个不 在这里所谓的$ _FILES为好。 101 00:04:58,290 --> 00:05:01,280 >> 因此,我们的服务器将不纠缠于太多 不多,但它可以让你访问 102 00:05:01,280 --> 00:05:04,860 排序大约低级别的细节 您正在使用的服务器本身。 103 00:05:04,860 --> 00:05:07,430 Cookie和会话,不过, 我们将切实看到了。 104 00:05:07,430 --> 00:05:10,940 最后就是我们用来实现 一个购物车的概念。 105 00:05:10,940 --> 00:05:14,480 一个超级简单的,但召回 我们有这样的例子在这里, 106 00:05:14,480 --> 00:05:17,640 计算有多少次你 之前曾访问过这个页面。 107 00:05:17,640 --> 00:05:20,850 >> 但今天,而不是仅仅看 这样的效果,让我们打开了 108 00:05:20,850 --> 00:05:22,640 Chrome的检查, 这通常可以 109 00:05:22,640 --> 00:05:25,740 做通过右键单击或控制 点击网页上的任何地方, 110 00:05:25,740 --> 00:05:27,250 然后选择检查元素。 111 00:05:27,250 --> 00:05:31,600 或者,你可以通过菜单 我们描述pset6的规范。 112 00:05:31,600 --> 00:05:35,020 而我要去的网络标签 在这里,让我们观看了一会儿 113 00:05:35,020 --> 00:05:37,590 在HTTP流量的 来回。 114 00:05:37,590 --> 00:05:40,929 >> 首先,让我继续前进 和清晰的Chrome浏览器的缓存。 115 00:05:40,929 --> 00:05:43,470 所以,有些人可能很熟悉 这种技术已经, 116 00:05:43,470 --> 00:05:45,790 而我们要使用它 在这里调试。 117 00:05:45,790 --> 00:05:48,890 118 00:05:48,890 --> 00:05:50,890 现在我们电脑 科学家们将开始 119 00:05:50,890 --> 00:05:53,920 这样做调试 的目的,从而 120 00:05:53,920 --> 00:05:55,910 我们将清除缓存, 典型地,这样我们就 121 00:05:55,910 --> 00:05:57,670 可以去掉的东西叫做饼干。 122 00:05:57,670 --> 00:06:01,700 所以,你可能熟悉一般 用什么饼干,或至少 123 00:06:01,700 --> 00:06:04,370 它们的存在,但有什么 你了解他们, 124 00:06:04,370 --> 00:06:06,920 由于只是一个用户 计算机,什么是Cookie? 125 00:06:06,920 --> 00:06:09,490 126 00:06:09,490 --> 00:06:09,990 是啊。 127 00:06:09,990 --> 00:06:14,391 >> 听众:这是一个有点of--好,不 在计算机科学中的一个术语位。 128 00:06:14,391 --> 00:06:18,303 它是一个数据块,一个 网址发送给您,以便 129 00:06:18,303 --> 00:06:20,209 要能够对你记录统计。 130 00:06:20,209 --> 00:06:21,250 DAVID J.马兰:好,好。 131 00:06:21,250 --> 00:06:24,980 所以它是一个数据块,一个 服务器,使您的计算机上, 132 00:06:24,980 --> 00:06:28,840 让我们甚至概括它 更多的,它是一个关键的value--好, 133 00:06:28,840 --> 00:06:30,064 这是越来越精确。 134 00:06:30,064 --> 00:06:31,980 它是一块 信息,一个数据片, 135 00:06:31,980 --> 00:06:34,430 该服务器能够 把你的计算机上 136 00:06:34,430 --> 00:06:38,592 而很多时候,服务器做 这使要记住你是谁。 137 00:06:38,592 --> 00:06:40,300 因此,例如,比值 你很可能 138 00:06:40,300 --> 00:06:42,982 登录到网站,如Facebook, 或Gmail或其它前, 139 00:06:42,982 --> 00:06:44,940 你在你的登录 用户名和密码, 140 00:06:44,940 --> 00:06:49,000 再后,对某些数 几分钟或几小时甚至几天的, 141 00:06:49,000 --> 00:06:52,970 服务器记住 你是,事实上,已登录。 142 00:06:52,970 --> 00:06:54,600 现在,如何是实际发生的事情? 143 00:06:54,600 --> 00:06:58,630 因为你肯定不会重新输入 您的用户名和密码,每次 144 00:06:58,630 --> 00:07:00,760 您导航到 不同的页面在Facebook上。 145 00:07:00,760 --> 00:07:02,570 因此,原来的 饼干的答案。 146 00:07:02,570 --> 00:07:05,360 >> 一个cookie,你可以想到的是, 有点像,数字手 147 00:07:05,360 --> 00:07:09,200 邮票,你可能会在游 公园或俱乐部,基本上 148 00:07:09,200 --> 00:07:11,740 表示你一直在这里 之前,你已经过 149 00:07:11,740 --> 00:07:16,070 显示你的ID的保镖,对于 实例,该俱乐部或公园 150 00:07:16,070 --> 00:07:19,050 现在应该假设你 已通过身份验证。 151 00:07:19,050 --> 00:07:21,270 你已经确定了。 152 00:07:21,270 --> 00:07:24,740 >> 所以考虑到这一点, 让我们在这里开辟专柜。 153 00:07:24,740 --> 00:07:27,220 让我先走,我只是做了, 并清除所有的我的饼干。 154 00:07:27,220 --> 00:07:29,970 现在我什么都做的是 按住Shift,只为​​好措施, 155 00:07:29,970 --> 00:07:31,740 强行重新加载页面。 156 00:07:31,740 --> 00:07:34,170 按住Shift键,只要确保 没有什么被缓存。 157 00:07:34,170 --> 00:07:36,850 而这里的请求 这又来回。 158 00:07:36,850 --> 00:07:41,560 所以,在这里我们有一个请求,让 我放大到这里,和大量的本 159 00:07:41,560 --> 00:07:44,710 是有点无趣的细节 现在,浏览器会自动有 160 00:07:44,710 --> 00:07:47,800 发送,但让我们点击查看 来源看原始头。 161 00:07:47,800 --> 00:07:51,700 >> 如果你已经潜入pset6不已, 你一定会认识到的东西 162 00:07:51,700 --> 00:07:54,990 这样,也许有些 这里的这些线, 163 00:07:54,990 --> 00:07:59,040 但更有趣的今天 如果我向下滚动,而不是请求 164 00:07:59,040 --> 00:08:02,870 但所谓的反应, 这条线可能看起来很熟悉。 165 00:08:02,870 --> 00:08:04,977 这是一件好事 当你看到一个200 OK。 166 00:08:04,977 --> 00:08:07,060 显然,这是 日期和时间,在服务器上 167 00:08:07,060 --> 00:08:08,268 这里面的一堆东西。 168 00:08:08,268 --> 00:08:09,290 哦,这是有趣的。 169 00:08:09,290 --> 00:08:13,430 >> 原来,当你使用 PHP的,至少在这台服务器, 170 00:08:13,430 --> 00:08:16,360 服务器吐出什么 PHP版本你使用。 171 00:08:16,360 --> 00:08:18,962 其中,实际上,为了安全 目的,是不是一件好事。 172 00:08:18,962 --> 00:08:21,170 但是,我们会回来的 其他时间也许吧。 173 00:08:21,170 --> 00:08:25,740 但是,现在这是多汁行的今天, 我们简要地看到了其中的一些, 174 00:08:25,740 --> 00:08:29,240 我想我的时候,我们戳 各地督察在那个时候, 175 00:08:29,240 --> 00:08:33,380 设置cookie是什么种植 那个小资料片 176 00:08:33,380 --> 00:08:34,890 到您的计算机。 177 00:08:34,890 --> 00:08:37,490 >> 这是一个HTTP头 这是有效的 178 00:08:37,490 --> 00:08:39,970 告诉你的浏览器, Chrome浏览器,IE浏览器,不管, 179 00:08:39,970 --> 00:08:44,480 在用户的浏览器哎商店 硬盘驱动器,或在用户的RAM中, 180 00:08:44,480 --> 00:08:49,680 一个叫做PHPSESSID键,这是一个 速记符号的会话ID, 181 00:08:49,680 --> 00:08:53,670 并给它的值 0vlk8t,点,点,点。 182 00:08:53,670 --> 00:08:56,480 一个很长的假 随机的字母数字字符串。 183 00:08:56,480 --> 00:08:59,480 这只是一个非常大的数字,但 它的编码字母和数字 184 00:08:59,480 --> 00:09:03,550 使得它的尺寸可以 甚至比单纯的数字更大。 185 00:09:03,550 --> 00:09:06,947 然后,通过该方式,路径= /,即 只是表示这个cookie应 186 00:09:06,947 --> 00:09:08,780 与相关联的 该网站的全部, 187 00:09:08,780 --> 00:09:11,150 不只是一个特定 页面整个事情。 188 00:09:11,150 --> 00:09:12,930 因此,这是虚拟的邮戳。 189 00:09:12,930 --> 00:09:16,330 这是因为,虽然服务器,脸谱, 或者在我们的例子家电, 190 00:09:16,330 --> 00:09:21,140 有字面上写0vlk8t 等等,在你的手。 191 00:09:21,140 --> 00:09:24,360 注意一下服务器的, 不这样做是不是 192 00:09:24,360 --> 00:09:27,730 保存我的用户名,当然 不存储密码。 193 00:09:27,730 --> 00:09:31,710 >> 相反,它似乎是 存储伪随机信息 194 00:09:31,710 --> 00:09:35,010 所以没有人能猜到 什么我的手邮票。 195 00:09:35,010 --> 00:09:37,590 在服务器端, 同时,服务器 196 00:09:37,590 --> 00:09:40,370 是要记住,大概 在数据库什么的, 197 00:09:40,370 --> 00:09:46,490 该用户,谁在未来 呈现0vlk8t的邮戳,点, 198 00:09:46,490 --> 00:09:51,440 点,斑点,应与此相关的 特别是购物车,可以这么说。 199 00:09:51,440 --> 00:09:55,060 换句话说,如果我现在去 回到这里,然后刷新页面, 200 00:09:55,060 --> 00:09:58,020 如何在服务器知道 我参观了一次? 201 00:09:58,020 --> 00:10:01,730 >> 或者,如果我再这样做,如何做服务器 知道,我已经访问过它两次? 202 00:10:01,730 --> 00:10:04,680 好吧,如果我去到这个 最近的请求,这 203 00:10:04,680 --> 00:10:09,150 现在是第三次,我已经发 总体而言,现在看到我的要求。 204 00:10:09,150 --> 00:10:11,300 还有这个 请在这里,同 205 00:10:11,300 --> 00:10:15,040 和以前一样,还是有一大堆 的东西,我们忽略了和以前一样, 206 00:10:15,040 --> 00:10:19,350 但在最后头,这 一次,因为我以前来过这里, 207 00:10:19,350 --> 00:10:21,980 是演示文稿的 这个虚拟的邮戳。 208 00:10:21,980 --> 00:10:28,957 >> 因此这条线在这里,没有设置的cookie 但饼干结肠PHPSESSI = 0vlk8t, 209 00:10:28,957 --> 00:10:32,040 这只是我的浏览器的自动 演示这个邮戳,这样的 210 00:10:32,040 --> 00:10:37,910 现在的服务器,只要它实现, 哦,这是用户0vlk8t点,点,点, 211 00:10:37,910 --> 00:10:42,010 我现在还记得他或她是谁 和与该用户重新关联的任何 212 00:10:42,010 --> 00:10:46,450 信息我想,所有的 这些信息可以通过你存储, 213 00:10:46,450 --> 00:10:50,130 程序员在$ _SESSION。 214 00:10:50,130 --> 00:10:57,170 >> 所以要清楚,如果我打开了真正的快 在gedit中的实际文件,counter.php, 215 00:10:57,170 --> 00:11:02,340 在我的本地主机的公共目录 和以前一样,请注意,事实上, 216 00:11:02,340 --> 00:11:06,860 我最终存储在 $ _SESSION报价引文结束“反” 217 00:11:06,860 --> 00:11:10,110 在前面的计数器的值,该值 我从这些线爬起来在这里,我们 218 00:11:10,110 --> 00:11:13,010 看着最后一次加一。 219 00:11:13,010 --> 00:11:14,980 因此,引擎盖下方, 这是所有的饼干。 220 00:11:14,980 --> 00:11:17,563 这数字只是那种 用手戳来回, 221 00:11:17,563 --> 00:11:20,450 坦白地说,如果你打开​​Chrome的 督察在任何网站上 222 00:11:20,450 --> 00:11:22,580 你今天拜访,与 超高概率, 223 00:11:22,580 --> 00:11:25,450 你会看到也许有, 也许半打饼干 224 00:11:25,450 --> 00:11:26,650 被记住你。 225 00:11:26,650 --> 00:11:29,500 >> 而更糟糕的是,如果这些 网站你访问 226 00:11:29,500 --> 00:11:32,640 所有有广告,这 肯定是相当普遍的今天, 227 00:11:32,640 --> 00:11:36,100 如果这些广告的未来 一些中央党,有人 228 00:11:36,100 --> 00:11:39,000 像谷歌或AdWords,因为他们 称自己的产品之一 229 00:11:39,000 --> 00:11:42,880 或其它这样的供应商那 卖广告,什么是有趣的, 230 00:11:42,880 --> 00:11:46,510 坦率地说什么是一个小 令人担忧的,如何HTTP工作, 231 00:11:46,510 --> 00:11:50,855 是,如果你有一个内嵌广告 在Facebook.com和Google.com, 232 00:11:50,855 --> 00:11:54,240 和Harvard.edu,任何数量 的网站,所以它是这样 233 00:11:54,240 --> 00:11:58,130 ,有一个中间人谁是服务 了广告所有这三个网站, 234 00:11:58,130 --> 00:12:02,110 事实证明,在 Cookies是每个域。 235 00:12:02,110 --> 00:12:05,910 >> 所以,如果你有一个广告的未来 同一家公司在不同的网站, 236 00:12:05,910 --> 00:12:11,140 该公司能够有效地跟踪谁 你是在所有这些网站。 237 00:12:11,140 --> 00:12:13,140 哈佛可能不知道 您正在访问的Facebook。 238 00:12:13,140 --> 00:12:15,306 Facebook的可能不知道 您正在访问的哈佛。 239 00:12:15,306 --> 00:12:18,160 但无论广告服务 他们使用的是如果该域名 240 00:12:18,160 --> 00:12:21,710 存在于两个Harvard.edu幅 页面和Facebook.com网页, 241 00:12:21,710 --> 00:12:26,850 这个中间人一定会知道你是谁 因为被共享这些cookie 242 00:12:26,850 --> 00:12:30,910 对面,或者更确切地说于, 那个所谓的中间人。 243 00:12:30,910 --> 00:12:33,820 >> 因此,我们会回来这 安全隐患物, 244 00:12:33,820 --> 00:12:37,170 但有大量的信息 随时存储你你 245 00:12:37,170 --> 00:12:40,120 请访问几乎所有的网页 互联网,它真的 246 00:12:40,120 --> 00:12:42,877 降低到这个非常简单的机构。 247 00:12:42,877 --> 00:12:44,710 会发生什么,那么,如果 你是超级偏执狂 248 00:12:44,710 --> 00:12:48,190 而你决定进入Chrome或IE浏览器 或什么的,然后关闭你的cookies? 249 00:12:48,190 --> 00:12:49,365 会发生什么? 250 00:12:49,365 --> 00:12:50,790 是吗? 251 00:12:50,790 --> 00:12:53,170 你really--你这样做对吗? 252 00:12:53,170 --> 00:12:54,350 行。 253 00:12:54,350 --> 00:12:55,994 不,请便。 254 00:12:55,994 --> 00:12:59,645 >> 听众:某些网站没有 没有它的功能像Facebook的。 255 00:12:59,645 --> 00:13:00,520 DAVID J.马兰:是啊! 256 00:13:00,520 --> 00:13:02,311 因此,某些网站 只是停止工作。 257 00:13:02,311 --> 00:13:05,520 而在大多数网站这几天 从根本上依赖于饼干, 258 00:13:05,520 --> 00:13:08,360 特别是如果他们有登录 在,他们只是要打破。 259 00:13:08,360 --> 00:13:10,360 由于考虑 替代方案中,如果网站 260 00:13:10,360 --> 00:13:14,480 有没有办法记住你是谁, 因此,您的浏览器不 261 00:13:14,480 --> 00:13:16,949 表示与每个HTTP 该邮戳的要求, 262 00:13:16,949 --> 00:13:18,740 有效的网站 像Facebook是怎么回事 263 00:13:18,740 --> 00:13:22,050 不得不提示你 每一次缝补一次登录 264 00:13:22,050 --> 00:13:26,200 更改网页,或点击一个链接,该链接 肯定不是一个特别好的用户 265 00:13:26,200 --> 00:13:26,920 的经验。 266 00:13:26,920 --> 00:13:30,020 >> 所以,有,也就是 之间的权衡。 267 00:13:30,020 --> 00:13:34,140 因此,事不宜迟,让我们 想当然地认为web编程, 268 00:13:34,140 --> 00:13:37,630 像PHP语言,你可以记住 在问题这样的设置信息 269 00:13:37,630 --> 00:13:41,550 当你实现自己的7 E * TRADE样的网站,用以购买 270 00:13:41,550 --> 00:13:45,710 而卖出股票,你会记得很清楚 什么样的用户已经购买和出售 271 00:13:45,710 --> 00:13:49,110 他或她是谁 通过本次会议的方式。 272 00:13:49,110 --> 00:13:51,110 但是,我们将需要 比电子邮件鸽友方式 273 00:13:51,110 --> 00:13:52,640 开始围绕保持信息。 274 00:13:52,640 --> 00:13:53,140 对不对? 275 00:13:53,140 --> 00:13:56,780 >> 周一,我们谈到了即时的新生 如何在版本一个网站, 276 00:13:56,780 --> 00:14:00,250 几年前,所有我们所做的是 通过电子邮件发送普罗克特谁的 277 00:14:00,250 --> 00:14:04,250 负责校内体育 节目,名称,性别, 278 00:14:04,250 --> 00:14:07,330 而无论他们是否是一个队长, 和别人的宿舍是谁的 279 00:14:07,330 --> 00:14:10,136 注册为校内运动。 280 00:14:10,136 --> 00:14:13,010 因此,它不坏,但他或她再 不得不巨魔通过他们的电子邮件, 281 00:14:13,010 --> 00:14:16,010 创建一个电子表格或类似的东西 即,把一切都安排。 282 00:14:16,010 --> 00:14:19,750 所以我们肯定程序员 可以为监考官做到这一点。 283 00:14:19,750 --> 00:14:22,970 和SQL这样进入, 结构化查询语言, 284 00:14:22,970 --> 00:14:26,050 这是会好看 不同于C和PHP, 285 00:14:26,050 --> 00:14:30,990 你会在潜水得多手 PHP和问题设置7,而且SQL, 286 00:14:30,990 --> 00:14:35,310 或SQL,这是一种语言 你用跟一个数据库。 287 00:14:35,310 --> 00:14:36,480 >> 但是,什么是数据库? 288 00:14:36,480 --> 00:14:38,440 那么你想想 数据库,至少在目前, 289 00:14:38,440 --> 00:14:41,750 刚才是像一个Excel文件,或 如果你是一个Mac用户一个数字文件, 290 00:14:41,750 --> 00:14:44,400 或者如果你是一个谷歌企业应用套件 用户谷歌电子表格, 291 00:14:44,400 --> 00:14:49,120 它实际上是一个数据库,还是真的 具体的关系数据库。 292 00:14:49,120 --> 00:14:53,070 关系数据库是刚刚 一些具有行和列, 293 00:14:53,070 --> 00:14:56,440 你可以存储任何类型的 在这些行或列的信息。 294 00:14:56,440 --> 00:15:00,480 >> 但是,什么是好的关于SQL和 关于实际的数据库,而不是 295 00:15:00,480 --> 00:15:04,910 电子表格或谷歌电子表格, 是,你可以用一种语言 296 00:15:04,910 --> 00:15:09,000 实际执行查询 插入数据,删除数据, 297 00:15:09,000 --> 00:15:11,620 寻找数据,甚至 最重要的是,和你 298 00:15:11,620 --> 00:15:16,110 不必相当手动使用它 正如你可能通常一个谷歌 299 00:15:16,110 --> 00:15:17,690 电子表格是这样的。 300 00:15:17,690 --> 00:15:22,217 >> 因此,在SQL中,有一堆 基本陈述或片 301 00:15:22,217 --> 00:15:23,300 功能内置的。 302 00:15:23,300 --> 00:15:26,450 没有什么比这更多的, 但你可以去一个巨大的距离 303 00:15:26,450 --> 00:15:28,620 只是知道 这种语言称为 304 00:15:28,620 --> 00:15:30,840 SQL有至少四个 语句,你可以利用。 305 00:15:30,840 --> 00:15:34,420 >> 删除,用于去除数据, 插入,添加行, 306 00:15:34,420 --> 00:15:37,340 更新时,用于改变 行和选择, 307 00:15:37,340 --> 00:15:39,860 为取回行 这确实是SQL做什么。 308 00:15:39,860 --> 00:15:43,810 它的工作完全是靠行,以便 当你插入或删除, 309 00:15:43,810 --> 00:15:47,470 或更新,或选择你是什么 取回作为一个所谓的结果集, 310 00:15:47,470 --> 00:15:49,690 象行的阵列。 311 00:15:49,690 --> 00:15:51,700 从表一帮行。 312 00:15:51,700 --> 00:15:54,050 >> 因此,早在一天, 甚至到今天, 313 00:15:54,050 --> 00:15:56,560 你可以用互动 数据库使用命令行, 314 00:15:56,560 --> 00:15:59,691 但它不是特别有趣的使用 这种黑白风格的窗口 315 00:15:59,691 --> 00:16:02,190 而实际执行的命令 戳在你的数据库。 316 00:16:02,190 --> 00:16:06,054 图形用户界面或GUI, 是更可取的,可以说, 317 00:16:06,054 --> 00:16:08,970 所以我们推荐工具 预装你在设备上 318 00:16:08,970 --> 00:16:10,580 被称为phpMyAdmin的。 319 00:16:10,580 --> 00:16:14,060 这是一个总的巧合, 这个东西的名字有PHP中呢, 320 00:16:14,060 --> 00:16:17,430 它只是意味着人 谁写了这个程序本身 321 00:16:17,430 --> 00:16:18,670 在PHP写的。 322 00:16:18,670 --> 00:16:23,740 >> 但它的最终目的是管理 数据库服务器,如MySQL服务器 323 00:16:23,740 --> 00:16:26,589 你可能有,因为你 这样做,在CS50设备。 324 00:16:26,589 --> 00:16:29,130 因此,有更详细的在这里比 我们需要关心的今天, 325 00:16:29,130 --> 00:16:33,280 但什么是关键的是,在左边 手侧的数据库的列表 326 00:16:33,280 --> 00:16:36,040 您有您的计算机上, 您CS50家电, 327 00:16:36,040 --> 00:16:40,090 或来最终的项目,你可能会 对第三方公司的 328 00:16:40,090 --> 00:16:43,415 网站或网络服务器,即 你可能会付出空间。 329 00:16:43,415 --> 00:16:45,290 这样,左边的是 的数据库,其中的一个 330 00:16:45,290 --> 00:16:48,750 是pset7这是我从旁边借来的 周pset中,然后在顶 331 00:16:48,750 --> 00:16:51,570 有注意到有一个 一堆标签,其中一 332 00:16:51,570 --> 00:16:55,150 是数据库,SQL,地位, 用户,出口等等。 333 00:16:55,150 --> 00:16:56,900 所以,你可以走很长 方法只是实现 334 00:16:56,900 --> 00:16:59,770 大多数的用户界面 在顶部左边的列 335 00:16:59,770 --> 00:17:02,650 和横跨右上方那里。 336 00:17:02,650 --> 00:17:04,980 那么,我们能不能​​用这个做什么? 337 00:17:04,980 --> 00:17:08,609 好吧,让我们开始创建 信息位如下。 338 00:17:08,609 --> 00:17:11,760 >> 假设下面是这种情况, 这将是在短短的几天里, 339 00:17:11,760 --> 00:17:14,440 你想实现一个 网站名为CS50金融, 340 00:17:14,440 --> 00:17:17,328 这个网站可以让你买 引用引文结束和出售股票。 341 00:17:17,328 --> 00:17:19,619 而且它要弄清楚 这些股票的价格, 342 00:17:19,619 --> 00:17:22,380 最终,你会看到, 通过交谈,雅虎财经。 343 00:17:22,380 --> 00:17:26,250 其中,奇妙,有一个免费服务 因此,你可以通过在股票行情 344 00:17:26,250 --> 00:17:29,830 就像歌为谷歌,它会 给你回谷歌目前的股票 345 00:17:29,830 --> 00:17:32,250 过去的价格范围内 至少几分钟。 346 00:17:32,250 --> 00:17:35,080 >> 所以你使用的是,最终, 假装为用户 347 00:17:35,080 --> 00:17:37,750 购买和出售实际 使用虚拟货币的股票, 348 00:17:37,750 --> 00:17:39,750 但第一件事 用户会看到 349 00:17:39,750 --> 00:17:43,850 这是登录界面,询问他们 为自己的用户名和密码。 350 00:17:43,850 --> 00:17:46,540 因此,第一之一 在pset7你挑战 351 00:17:46,540 --> 00:17:50,460 将是实现后端 数据库,电子表格,如果你愿意, 352 00:17:50,460 --> 00:17:53,369 这是怎么回事存储 用户名和密码 353 00:17:53,369 --> 00:17:56,660 最终他们拥有的股票, 有多少,多少钱他们有, 354 00:17:56,660 --> 00:18:00,110 所以在一堆其他的东西 其他表或电子表格。 355 00:18:00,110 --> 00:18:05,020 >> 因此,让我们来看看如何 可能出现的第一眼。 356 00:18:05,020 --> 00:18:06,980 我要回去 家电和我 357 00:18:06,980 --> 00:18:14,102 打算去这个网址在这里 phpMyAdmin的本地主机/ phpmyadmin的 358 00:18:14,102 --> 00:18:16,060 你会看到它 带我到一个接口 359 00:18:16,060 --> 00:18:18,520 正是因为我们看到的 屏幕截图,在这里我 360 00:18:18,520 --> 00:18:21,560 有一个附加的数据库 所谓讲座今天 361 00:18:21,560 --> 00:18:24,280 让我继续前进 首先,点击pset7。 362 00:18:24,280 --> 00:18:27,940 >> 我似乎有几个选项, 1为新的,用于创建一个新的表, 363 00:18:27,940 --> 00:18:30,770 和一个链接到用户,这 是我已经创建了一个表。 364 00:18:30,770 --> 00:18:31,790 那么什么是表? 365 00:18:31,790 --> 00:18:33,740 所以,如果你使用Excel中 以前,如果你已经 366 00:18:33,740 --> 00:18:37,110 使用数字或谷歌 电子表格,你打开一个窗口 367 00:18:37,110 --> 00:18:39,350 你会得到一大堆 行和列, 368 00:18:39,350 --> 00:18:43,120 但你通常工作表 在底部,或者单独的标签。 369 00:18:43,120 --> 00:18:46,140 你能想到的每一个 工作表作为表 370 00:18:46,140 --> 00:18:51,150 使得数据库,最终是 的一个或多个表的组合,1 371 00:18:51,150 --> 00:18:54,064 或多个工作表,在 世界上正常的电子表格。 372 00:18:54,064 --> 00:18:55,980 因此,让我继续前进, 点击此工作表上 373 00:18:55,980 --> 00:18:59,420 我预制,叫用户,亦称 374 00:18:59,420 --> 00:19:00,700 数据库表。 375 00:19:00,700 --> 00:19:04,130 如果我在这里向下滚动, 让我缩小了一点, 376 00:19:04,130 --> 00:19:08,479 这是phpMyAdmin的告诉 我们是这个表里面现在。 377 00:19:08,479 --> 00:19:11,020 这是一个有点混乱,在第一 一目了然因为UI不是 378 00:19:11,020 --> 00:19:15,140 最漂亮的东西在世界上,但 有趣的是这部分在这里。 379 00:19:15,140 --> 00:19:17,970 ID,用户名和哈希值。 380 00:19:17,970 --> 00:19:20,510 >> 在前进,你会交到 在这个问题集7, 381 00:19:20,510 --> 00:19:25,050 我们为您提供包含超级文件 小型数据库表,居然借 382 00:19:25,050 --> 00:19:27,070 从黑客版 问题设置两个, 383 00:19:27,070 --> 00:19:29,480 这里面有六排。 384 00:19:29,480 --> 00:19:32,720 一个是贝琳达所有 一路下跌到一个用于Zamyla, 385 00:19:32,720 --> 00:19:35,980 并注意对那些左 用户名就像一个唯一的ID, 386 00:19:35,980 --> 00:19:39,410 两个,三个,四个,五个,六个,整体, 然后向右是哈希值。 387 00:19:39,410 --> 00:19:42,780 >> 如果,赔率是,你没做 黑客版的问题设置两个, 388 00:19:42,780 --> 00:19:46,560 但是哈希就像一个加密 密码有几个注意事项。 389 00:19:46,560 --> 00:19:49,470 所以,你在这里看到什么 所有六个的加密版本 390 00:19:49,470 --> 00:19:52,950 我们从问题的密码 设置两个的黑客版。 391 00:19:52,950 --> 00:19:56,500 现在左边是只是一些GUI的东西, 编辑此行,复制该行, 392 00:19:56,500 --> 00:19:57,630 删除此行。 393 00:19:57,630 --> 00:19:59,840 >> 但是,什么是有趣的 现如下。 394 00:19:59,840 --> 00:20:03,810 其实我可以开始 尝试用此表。 395 00:20:03,810 --> 00:20:07,330 所以,如果我去,然后单击SQL 选项​​卡中,我得到这个大文本框。 396 00:20:07,330 --> 00:20:10,190 这不是我们如何去 这样做在实际编写代码。 397 00:20:10,190 --> 00:20:12,700 需要明确的是,phpMyAdmin的 仅仅是一个工具,它是 398 00:20:12,700 --> 00:20:16,450 打算让我们拨开围绕数据库 让我们尝试查询。 399 00:20:16,450 --> 00:20:19,430 >> 因此,例如,假设 我执行的正是这一点。 400 00:20:19,430 --> 00:20:22,820 选择,这是其中之一 关键字我前面提到的,明星, 401 00:20:22,820 --> 00:20:25,900 它代表所有 列在表中。 402 00:20:25,900 --> 00:20:26,820 从什么表? 403 00:20:26,820 --> 00:20:27,990 那么,用户。 404 00:20:27,990 --> 00:20:29,950 并注意有这 奇怪的约定,SQL 405 00:20:29,950 --> 00:20:32,140 在这里你实际使用 背面蜱,通常, 406 00:20:32,140 --> 00:20:35,940 不是单引号,而不是双引号 当你谈论的表名, 407 00:20:35,940 --> 00:20:38,990 所以后面的报价是对​​的事 键盘的左上角最 408 00:20:38,990 --> 00:20:39,720 有可能。 409 00:20:39,720 --> 00:20:41,850 >> 所以,现在让我继续前进 而刚刚离开,仅 410 00:20:41,850 --> 00:20:46,020 向下滚动并单击Go,我们 究竟要看到同样的事情。 411 00:20:46,020 --> 00:20:52,410 我们刚刚执行的SQL查询 他说选择明星的一切 412 00:20:52,410 --> 00:20:55,610 从表称为用户, 你得到的回复是这样。 413 00:20:55,610 --> 00:20:58,400 最终,我们将能够 做同样的事情在代码中, 414 00:20:58,400 --> 00:21:02,109 但现在我想说的 确实是看到它在我的浏览器。 415 00:21:02,109 --> 00:21:03,900 好吧,让我们做一些事情 有一点不同。 416 00:21:03,900 --> 00:21:08,330 让我回到了SQL选项卡, 让我们只想说,什么? 417 00:21:08,330 --> 00:21:11,520 Zamyla已经失去了她所有的 钱,因此,它是 418 00:21:11,520 --> 00:21:13,190 时间让我们删除了她作为一个用户。 419 00:21:13,190 --> 00:21:14,630 她不再登录。 420 00:21:14,630 --> 00:21:18,870 >> 所以我要说删除from-- 好,维护资本 421 00:21:18,870 --> 00:21:23,080 为了保持一致性,删除 从用户那里。 422 00:21:23,080 --> 00:21:25,430 因此,我们可以有这些 谓词,或者这些 423 00:21:25,430 --> 00:21:31,180 预选赛,在我发言结束 在那里,我怎么能删除Zamyla? 424 00:21:31,180 --> 00:21:34,190 她的名字Zamyla,所以 列,其中一列 425 00:21:34,190 --> 00:21:37,950 被命名的,所以其中name =“Zamyla”。 426 00:21:37,950 --> 00:21:40,000 在这里,我使用双 引号或单引号, 427 00:21:40,000 --> 00:21:42,958 你只用背蜱时 谈论的名称,例如, 428 00:21:42,958 --> 00:21:45,130 的表或字段。 429 00:21:45,130 --> 00:21:47,440 让我点击转到这里。 430 00:21:47,440 --> 00:21:50,400 而现在,网页是 作为一个小紧张。 431 00:21:50,400 --> 00:21:53,620 >> 或者,你真的要执行删除 从用户那里名称等于Zamyla? 432 00:21:53,620 --> 00:21:54,680 是。 433 00:21:54,680 --> 00:22:01,900 所以,现在,如果我们回到我的表 通过点击用户,请注意,哼。 434 00:22:01,900 --> 00:22:02,530 我疯玩。 435 00:22:02,530 --> 00:22:04,070 而事实上样的,我 点击走这么快 436 00:22:04,070 --> 00:22:06,195 你甚至不看 红色的错误消息,也许吧。 437 00:22:06,195 --> 00:22:07,649 我做了什么错? 438 00:22:07,649 --> 00:22:09,690 听众:你没必要 要利用她的名字。 439 00:22:09,690 --> 00:22:11,260 DAVID J.马兰:是的,我 大写她的名字, 440 00:22:11,260 --> 00:22:13,770 但她的username--其实我 做了几个错误,对吧? 441 00:22:13,770 --> 00:22:16,720 其中,她的用户名是 zamyla,小写字母Z, 442 00:22:16,720 --> 00:22:20,140 并且列名是用户名, 没有名字,所以让我们再次做到这一点。 443 00:22:20,140 --> 00:22:25,750 让我继续前进, 从用户那里删除 444 00:22:25,750 --> 00:22:28,990 用户名等于报价引文结束“Zamyla”。 445 00:22:28,990 --> 00:22:29,490 行? 446 00:22:29,490 --> 00:22:32,600 因此,这看起来好一点,让 我去向下滚动并单击Go。 447 00:22:32,600 --> 00:22:34,730 它仍然会 骂我是肯定的。 448 00:22:34,730 --> 00:22:37,500 我点击是的,现在我们看到, 坦率地说这事,真的 449 00:22:37,500 --> 00:22:39,870 快,不到一 第二当然,这 450 00:22:39,870 --> 00:22:41,720 正是得到执行的查询。 451 00:22:41,720 --> 00:22:45,617 为了确认,让我点击用户 而事实上,现在Zamyla走了。 452 00:22:45,617 --> 00:22:46,700 现在,让我们做的正好相反。 453 00:22:46,700 --> 00:22:49,320 假设加布希望 注册该网站。 454 00:22:49,320 --> 00:22:52,825 什么是SQL查询,有什么 命令我可以键入要添加加布? 455 00:22:52,825 --> 00:22:54,200 那么它是相当简单的。 456 00:22:54,200 --> 00:22:58,260 插入到用户,而现在 它变得有点神秘。 457 00:22:58,260 --> 00:23:03,190 我需要指定给所述服务器, 哪些领域我想分配。 458 00:23:03,190 --> 00:23:06,630 我真的不关心什么Gabe的ID 数字是多少,所以我打算跳过。 459 00:23:06,630 --> 00:23:11,360 我不是要说 用户名,散列,然后 460 00:23:11,360 --> 00:23:14,960 值我想把 那里将是加布。 461 00:23:14,960 --> 00:23:16,800 然后他的散列,我不知道。 462 00:23:16,800 --> 00:23:19,900 所以现在,我要去 离开,作为一个大的事情。 463 00:23:19,900 --> 00:23:21,650 我们会回来 在这个问题集 464 00:23:21,650 --> 00:23:23,390 规范,如何你真正做到这一点。 465 00:23:23,390 --> 00:23:24,630 >> 所以注意,再次,语法。 466 00:23:24,630 --> 00:23:28,430 插入到表名,然后 字段括号的列表中, 467 00:23:28,430 --> 00:23:30,980 你想要的列添加 值,然后就 468 00:23:30,980 --> 00:23:34,495 完全相同的顺序从左 对你要添加的值, 469 00:23:34,495 --> 00:23:36,870 它只是因为包装 文字是有点长。 470 00:23:36,870 --> 00:23:38,520 所以,现在让我单击Go。 471 00:23:38,520 --> 00:23:39,830 一行插入。 472 00:23:39,830 --> 00:23:43,020 而现在,如果我回去 用户,有什么有趣的 473 00:23:43,020 --> 00:23:48,960 是,不仅是加布现在在 数据库,什么是显然他的身份证? 474 00:23:48,960 --> 00:23:49,820 >> 那么它的七人。 475 00:23:49,820 --> 00:23:51,479 为什么7时,我没加吗? 476 00:23:51,479 --> 00:23:54,020 所以这也就是一 功能,你可获得的数据库。 477 00:23:54,020 --> 00:23:55,750 很多内置功能。 478 00:23:55,750 --> 00:23:57,950 事实证明,当 在该表中, 479 00:23:57,950 --> 00:24:01,390 我预先配置是自动 以这样的方式分配一个编号 480 00:24:01,390 --> 00:24:02,480 它递增。 481 00:24:02,480 --> 00:24:05,470 所以,如果你曾经戳左右, 看着你的Facebook的ID 482 00:24:05,470 --> 00:24:09,292 数字是多少,这些天它不是真的 一个事情,但Facebook作为一个API, 483 00:24:09,292 --> 00:24:11,750 应用程序编程接口, 因此,你可以拿回 484 00:24:11,750 --> 00:24:14,430 约一大堆数据 你自己,你的朋友, 485 00:24:14,430 --> 00:24:15,347 和你联系。 486 00:24:15,347 --> 00:24:17,430 而曾经被认为是一种 性凉,早在一天, 487 00:24:17,430 --> 00:24:19,510 是仰视你的 Facebook的ID号了。 488 00:24:19,510 --> 00:24:22,390 马克·扎克伯格的, 例如,为三 489 00:24:22,390 --> 00:24:23,890 因为他是该网站的作者。 490 00:24:23,890 --> 00:24:27,610 而随着剧情的推移,他创造 两个测试帐号,用户一和二, 491 00:24:27,610 --> 00:24:28,690 他随后被删除。 492 00:24:28,690 --> 00:24:32,780 因此,扎克,这是他的用户名 在Facebook上,是ID号3, 493 00:24:32,780 --> 00:24:36,110 我们大家都有数多 大于3的这些日子。 494 00:24:36,110 --> 00:24:37,980 事实上,在某些时候 Facebook的离开 495 00:24:37,980 --> 00:24:42,410 即使从使用int,这 是一个32位的值,以使用 496 00:24:42,410 --> 00:24:44,480 下一步骤时, 基本上是一个很长很长这样 497 00:24:44,480 --> 00:24:47,150 它们能够容纳 甚至更多的用户注册。 498 00:24:47,150 --> 00:24:49,420 因此,一个有趣的小历史事实。 499 00:24:49,420 --> 00:24:51,660 >> 所以,这只是 基本语法与 500 00:24:51,660 --> 00:24:54,470 我们可能会执行几个 查询,但我们实际上可以 501 00:24:54,470 --> 00:24:56,744 做了一堆更多的事情与SQL。 502 00:24:56,744 --> 00:24:58,910 你会看到,最终, 在问题设置7 503 00:24:58,910 --> 00:25:01,034 你必须做出一个 的设计决定数, 504 00:25:01,034 --> 00:25:03,290 其中将是 使用什么样的数据类型。 505 00:25:03,290 --> 00:25:08,240 所以,就像在C,有数据 在一个数据库类型,如MySQL, 506 00:25:08,240 --> 00:25:12,640 并且数据类型,你必须选择 从这里包括这些领域。 507 00:25:12,640 --> 00:25:17,287 CHAR,VARCHAR,INT,大整型,小数 和日期的时间,以及其他许多。 508 00:25:17,287 --> 00:25:18,370 因此,让我们真正做到这一点。 509 00:25:18,370 --> 00:25:21,060 让我们假装我们没 一方面你这个用户的表 510 00:25:21,060 --> 00:25:25,080 让我继续前进,创造,为 我在讲课数据库 - 511 00:25:25,080 --> 00:25:31,000 居然让我继续前进,删除 表我在这里已经 512 00:25:31,000 --> 00:25:32,940 这样我们就可以真正创造这一点。 513 00:25:32,940 --> 00:25:33,550 哎呦。 514 00:25:33,550 --> 00:25:35,970 我要放弃这一 表,现在我 515 00:25:35,970 --> 00:25:38,337 打算再次去了 讲课的数据库在这里, 516 00:25:38,337 --> 00:25:40,420 我要创建一个表 所谓的用户,让我们 517 00:25:40,420 --> 00:25:43,010 只是做三列 最初,然后单击Go。 518 00:25:43,010 --> 00:25:44,990 >> 现在,在大多数情况下, 再次,这仅仅是 519 00:25:44,990 --> 00:25:48,570 使用这个所谓的图形化工具 phpMyAdmin的,我们正在做什么,现在 520 00:25:48,570 --> 00:25:49,600 在创建表。 521 00:25:49,600 --> 00:25:53,170 因此,这又仿佛文件,新建, 并创建一个新的Excel文件。 522 00:25:53,170 --> 00:25:55,440 所以它问我几 题,从左至右, 523 00:25:55,440 --> 00:25:58,620 什么是第一列的名称, 然后将第二列的名称, 524 00:25:58,620 --> 00:25:59,560 和第三的名称。 525 00:25:59,560 --> 00:26:00,518 因此,让我们重新创建。 526 00:26:00,518 --> 00:26:05,460 ID,然后用户名是1, 然后哈希是另一回事。 527 00:26:05,460 --> 00:26:08,970 那么,如果数据类型 现在可以像ID的字段? 528 00:26:08,970 --> 00:26:14,470 >> 这里是数据类型的整个列表 在数据库中提供给你, 529 00:26:14,470 --> 00:26:16,070 而现在就让我们一起去整型。 530 00:26:16,070 --> 00:26:18,160 32位的值,我不知道 认为现实的我 531 00:26:18,160 --> 00:26:21,484 将有超过4十亿 用户在我的帐户,我的服务, 532 00:26:21,484 --> 00:26:23,650 所以我要继续前进 到下一个问题。 533 00:26:23,650 --> 00:26:25,490 我不打算指定 长度或值, 534 00:26:25,490 --> 00:26:28,540 它不适用 这里的int本身。 535 00:26:28,540 --> 00:26:30,740 现在我可以指定, 显然,一个缺省 536 00:26:30,740 --> 00:26:33,970 值,这我不会指定。 537 00:26:33,970 --> 00:26:36,050 排序规则,我不知道那是什么。 538 00:26:36,050 --> 00:26:37,290 一个属性。 539 00:26:37,290 --> 00:26:39,455 现在我们实际上做 有一个设计决定。 540 00:26:39,455 --> 00:26:42,580 因此,有几场在这里,并不是所有的 它们都是适用的,但无符号 541 00:26:42,580 --> 00:26:43,380 仅仅意味着什么? 542 00:26:43,380 --> 00:26:45,400 该整数必须是? 543 00:26:45,400 --> 00:26:46,210 只是非负的。 544 00:26:46,210 --> 00:26:48,090 所以它必须是0上起来。 545 00:26:48,090 --> 00:26:51,120 不,我不会去检查,因为 我希望每个用户都拥有一个ID, 546 00:26:51,120 --> 00:26:52,470 它不能为空。 547 00:26:52,470 --> 00:26:55,949 然后,我们得到了一些更 有趣的设计决策是这样的。 548 00:26:55,949 --> 00:26:58,990 我们会回来的这一刻, 数据库但另一特点 549 00:26:58,990 --> 00:27:04,200 是,是,你可以告诉 数据库服务器继续 550 00:27:04,200 --> 00:27:07,100 并优化自己,你的 内存和硬盘空间, 551 00:27:07,100 --> 00:27:11,770 使选择和插入, 删除和更新都非常快。 552 00:27:11,770 --> 00:27:13,250 与pset5对比这一点。 553 00:27:13,250 --> 00:27:16,259 >> 如果你想查找的东西 在哈希表,该表 554 00:27:16,259 --> 00:27:18,300 你觉得作为一个数据库, 谁必须做所有的 555 00:27:18,300 --> 00:27:21,500 为使您的哈希表的快速工作。 556 00:27:21,500 --> 00:27:22,840 这就像,很明显,你。 557 00:27:22,840 --> 00:27:23,060 对不对? 558 00:27:23,060 --> 00:27:26,080 你必须把所有的时间精 调整外,获得一个散列函数 559 00:27:26,080 --> 00:27:27,820 没错,搞清楚如何 许多水桶有。 560 00:27:27,820 --> 00:27:29,611 >> 但是,什么是好的,再次, 关于数据库 561 00:27:29,611 --> 00:27:31,762 你刚才踢所有的 这对其它人 562 00:27:31,762 --> 00:27:33,720 谁曾想到这 通过对你来说,什么 563 00:27:33,720 --> 00:27:37,170 我要在这里说下 索引是我的ID字段 564 00:27:37,170 --> 00:27:41,149 将是的主要方式 识别用户在该数据库中。 565 00:27:41,149 --> 00:27:42,940 我不会想 Zamyla为Zamyla的, 566 00:27:42,940 --> 00:27:45,800 我会想 她为数字6。 567 00:27:45,800 --> 00:27:49,814 >> 为什么,或许,更好的 直观地想和型号 568 00:27:49,814 --> 00:27:52,480 每个使用您的个人行 一个数,而不是其他 569 00:27:52,480 --> 00:27:56,480 像字符串,象Zamyla 或者加布或更长的字符串还是? 570 00:27:56,480 --> 00:27:57,444 是吗? 571 00:27:57,444 --> 00:28:00,117 >> 听众:一个ID是唯一的? 572 00:28:00,117 --> 00:28:01,200 DAVID J.马兰:再说一遍吗? 573 00:28:01,200 --> 00:28:02,283 听众:一个ID是唯一的? 574 00:28:02,283 --> 00:28:04,400 DAVID J.马兰:一个ID 是唯一的,但suppose-- 575 00:28:04,400 --> 00:28:06,320 如在一般的情况下 与用户名,假设 576 00:28:06,320 --> 00:28:10,110 我也说只能有1 Zamyla在世界上,只有一个加布。 577 00:28:10,110 --> 00:28:13,730 我可以并处的独特性 约束对字符串也一样,如果我想要的。 578 00:28:13,730 --> 00:28:15,550 所以不是一个糟糕的想法。 579 00:28:15,550 --> 00:28:16,500 >> 听众:更安全。 580 00:28:16,500 --> 00:28:17,874 >> DAVID J.马兰:更安全,为什么呢? 581 00:28:17,874 --> 00:28:20,705 听众:你不能分辨出哪 是,如在该用户。 582 00:28:20,705 --> 00:28:22,580 DAVID J.马兰:OK,你 不能告诉用户哪些 583 00:28:22,580 --> 00:28:24,380 是所以有 隐私方面的, 584 00:28:24,380 --> 00:28:27,810 特别是如果该标识可能 出现的URL。 585 00:28:27,810 --> 00:28:29,960 这么肯定,那可能这种工作了。 586 00:28:29,960 --> 00:28:30,640 其他的想法? 587 00:28:30,640 --> 00:28:31,383 是吗? 588 00:28:31,383 --> 00:28:34,316 >> 听众:它更容易 在一个int执行操作。 589 00:28:34,316 --> 00:28:35,940 DAVID J.马兰:这是真正的踢球者。 590 00:28:35,940 --> 00:28:38,850 这只是更有效率, 或更容易为计算机, 591 00:28:38,850 --> 00:28:40,431 对整数进行操作。 592 00:28:40,431 --> 00:28:40,930 对不对? 593 00:28:40,930 --> 00:28:43,905 一个int是保证 是32位,而Zamyla 594 00:28:43,905 --> 00:28:47,660 是几个字符长,加布里埃尔 是几个字符, 595 00:28:47,660 --> 00:28:51,930 达文波特是很长的,所以它的 没有特别有效的是使用 596 00:28:51,930 --> 00:28:55,860 要比较的字符串值,并期待 对于字段,更新领域, 597 00:28:55,860 --> 00:28:57,790 如果你能逃脱 只用一个整数。 598 00:28:57,790 --> 00:28:59,090 只有32位。 599 00:28:59,090 --> 00:29:02,570 这样的用户名,也通过这种方式, 不必是唯一的, 600 00:29:02,570 --> 00:29:05,040 虽然他们也许应该 是,甚至在这种方式也 601 00:29:05,040 --> 00:29:07,520 用户可以被允许 改变他或她的用户名。 602 00:29:07,520 --> 00:29:10,810 >> 现在让我们离开这个作为 识别用户的主要手段。 603 00:29:10,810 --> 00:29:13,510 这是告诉数据库 继续优化自己 604 00:29:13,510 --> 00:29:17,065 等等的ID查找窗口是超级快。 605 00:29:17,065 --> 00:29:19,620 AI,可怕的命名,只是 指自动递增, 606 00:29:19,620 --> 00:29:21,500 这是校验 框,我们需要检查 607 00:29:21,500 --> 00:29:24,614 指定的ID字段 自动更新对我来说, 608 00:29:24,614 --> 00:29:26,530 然后我要去 滚动到这里权 609 00:29:26,530 --> 00:29:29,279 坦白说,我真的没有兴趣 在任意多个域。 610 00:29:29,279 --> 00:29:30,630 当然不是今天。 611 00:29:30,630 --> 00:29:33,770 >> 所以,我要回去在这里, 到第一列,其中 612 00:29:33,770 --> 00:29:35,830 我需要指定用户名 和散列,让我们 613 00:29:35,830 --> 00:29:38,080 至少集中于 第二个现在​​。 614 00:29:38,080 --> 00:29:41,498 INT可能不是正确的判罚, 还等什么更有意义吧? 615 00:29:41,498 --> 00:29:42,741 >> 听众:文本。 616 00:29:42,741 --> 00:29:43,824 DAVID J.马兰:再说一遍吗? 617 00:29:43,824 --> 00:29:44,710 听众:文本。 618 00:29:44,710 --> 00:29:44,980 DAVID J.马兰:文本? 619 00:29:44,980 --> 00:29:45,590 OK,我听到的文字。 620 00:29:45,590 --> 00:29:46,090 还有什么? 621 00:29:46,090 --> 00:29:50,520 622 00:29:50,520 --> 00:29:53,860 样的,我们有一大堆的选择 这是文字上的。 623 00:29:53,860 --> 00:29:55,990 所以,什么时候,为什么,做 你使用其中的一些? 624 00:29:55,990 --> 00:29:59,560 好吧CHAR,相反你可能会 想,是不是一个单一的字符。 625 00:29:59,560 --> 00:30:01,550 它的字符的特定数目。 626 00:30:01,550 --> 00:30:04,600 因此,如果我们知道,所有的用户名 必须像八个字, 627 00:30:04,600 --> 00:30:08,490 作为用于在年龄较大的共同 电脑系统,我可以说的char 628 00:30:08,490 --> 00:30:09,830 然后我可以在这里说,8。 629 00:30:09,830 --> 00:30:12,930 这时候,第三列变 适用的创建表的时候。 630 00:30:12,930 --> 00:30:15,450 >> 但是,这是一种烦人 因为有些人可能 631 00:30:15,450 --> 00:30:17,660 希望有一个较长的用户名 超过八个字符, 632 00:30:17,660 --> 00:30:19,743 有些人可能会想 具有更短的用户名, 633 00:30:19,743 --> 00:30:22,210 那么,为什么自己奉献 到一个特定号码? 634 00:30:22,210 --> 00:30:24,710 为什么不能有一个变量 字符数量和公正 635 00:30:24,710 --> 00:30:28,580 说,一个名称的最大长度 是的,我不知道,像64个字符。 636 00:30:28,580 --> 00:30:31,780 我想不出任何朋友谁 有超过64个字符的名称, 637 00:30:31,780 --> 00:30:34,810 即使那是太短,你可以 当然碰到它随意。 638 00:30:34,810 --> 00:30:37,330 >> 这样的varchar是可变 字符数。 639 00:30:37,330 --> 00:30:41,010 文字是不是一个坏的本能,和 排序坦言,做什么它说, 640 00:30:41,010 --> 00:30:45,460 但一个文本字段可以是 像65000字节最少。 641 00:30:45,460 --> 00:30:50,790 这可能是矫枉过正了 场,而事实上,是的,65,535。 642 00:30:50,790 --> 00:30:53,740 这可能是矫枉过正了 名字,所以我们会坚持,通常情况下, 643 00:30:53,740 --> 00:30:56,910 用VARCHAR处理的文本 场和哈希,太。 644 00:30:56,910 --> 00:30:59,990 哈希,事实证明,我们可以做一个 VARCHAR以及之类的东西, 645 00:30:59,990 --> 00:31:03,080 但我们今天不会集中在 加密那里和数字 646 00:31:03,080 --> 00:31:05,210 我们实际上可能 要使用它的长度。 647 00:31:05,210 --> 00:31:07,430 >> 但让我失望向右滚动。 648 00:31:07,430 --> 00:31:11,280 你只能有一个 为表主索引, 649 00:31:11,280 --> 00:31:16,380 但我想申请任何这些, 现在,用户名,你会说什么? 650 00:31:16,380 --> 00:31:21,980 什么用户名应该是基于一个模糊 这四个选项的理解? 651 00:31:21,980 --> 00:31:23,340 只是他们的名字? 652 00:31:23,340 --> 00:31:24,140 >> 听众:独特的。 653 00:31:24,140 --> 00:31:25,100 >> DAVID J.马兰:所以唯一的,对不对? 654 00:31:25,100 --> 00:31:28,190 所以,事实证明,不仅可以 你告诉一个数据库,提前, 655 00:31:28,190 --> 00:31:30,380 这是主要的方式 的识别领域。 656 00:31:30,380 --> 00:31:32,990 你也可以说这是 将是一个唯一的字段。 657 00:31:32,990 --> 00:31:34,700 它不会是 我依靠的东西, 658 00:31:34,700 --> 00:31:38,490 但我想数据库 基本上有,如果条件下,使 659 00:31:38,490 --> 00:31:42,340 如果我曾经试图注册 两个用户具有相同的名称, 660 00:31:42,340 --> 00:31:44,360 数据库平出 不会让我。 661 00:31:44,360 --> 00:31:47,490 我可能有一些额外的代码 在PHP中,防止为多, 662 00:31:47,490 --> 00:31:50,640 但数据库也可以确保 这是永远不会发生的。 663 00:31:50,640 --> 00:31:53,370 >> 现在,作为一个在旁边,特别是作为 你想想最后的项目, 664 00:31:53,370 --> 00:31:57,030 记住它索引而进行全 文字实际上是相当有用的。 665 00:31:57,030 --> 00:32:01,080 如果你有一个更大的数据库,而不是用 几十个,但与数百或数千 666 00:32:01,080 --> 00:32:05,270 甚至上百万的领域,你可以 还提前告知数据库 667 00:32:05,270 --> 00:32:07,980 这是一场我要去 要搜索了很多。 668 00:32:07,980 --> 00:32:10,520 也许它的用户名, 也许它的生物,如果你 669 00:32:10,520 --> 00:32:13,750 做一个类似Facebook的网站, 具有该用户的允许的段落 670 00:32:13,750 --> 00:32:16,799 保存,如果你想 提前告知数据库 671 00:32:16,799 --> 00:32:20,090 我将要寻找在这个领域 很多,但它不一定是唯一的, 672 00:32:20,090 --> 00:32:22,800 您可以指定我创建一个索引。 673 00:32:22,800 --> 00:32:27,990 或者,你也可以说让我做 排序的任意搜查的命令一样 674 00:32:27,990 --> 00:32:30,420 或控制楼喜欢你 可能在文字处理, 675 00:32:30,420 --> 00:32:34,184 所以你可以看任意字符串 和子在这个领域。 676 00:32:34,184 --> 00:32:36,600 换句话说,我们得到 在学期点 677 00:32:36,600 --> 00:32:40,720 在这里你不必担心 如何高效实现的事情。 678 00:32:40,720 --> 00:32:44,540 你只需要了解什么 设计决策做出让你 679 00:32:44,540 --> 00:32:48,470 使用了正确的工具 贸易,以充分利用功能 680 00:32:48,470 --> 00:32:50,380 其他人都为你打造的。 681 00:32:50,380 --> 00:32:54,240 所以要回顾一下,主要应该只 有一个,你只能有一个, 682 00:32:54,240 --> 00:32:59,630 它就是你承诺的东西 用来识别领域唯一。 683 00:32:59,630 --> 00:33:02,710 独特的是在精神上刚相似,但 你可能只是偶尔使用它, 684 00:33:02,710 --> 00:33:04,530 但你希望数据库强加于人。 685 00:33:04,530 --> 00:33:08,050 指数只是手段抢先 加快速度,在未来 686 00:33:08,050 --> 00:33:10,230 这样我可以搜索 物在该区域。 687 00:33:10,230 --> 00:33:13,700 然后全文一般是 段落或短文,或大机构 688 00:33:13,700 --> 00:33:16,270 在那里,你的文字 也可能希望 689 00:33:16,270 --> 00:33:19,420 通配符像明星的等价物。 690 00:33:19,420 --> 00:33:19,920 右。 691 00:33:19,920 --> 00:33:22,580 >> 所以这是一种 很多的一次。 692 00:33:22,580 --> 00:33:25,220 让我们来看看,如果我们不能提取 这样的一些特征 693 00:33:25,220 --> 00:33:29,540 然后建立一些 相当简单,但功能强大。 694 00:33:29,540 --> 00:33:31,380 所以其中的其他 你的设计决策 695 00:33:31,380 --> 00:33:34,005 最终将会有沿 存储引擎的线条。 696 00:33:34,005 --> 00:33:37,370 而让我补提这个 在期待最后的项目, 697 00:33:37,370 --> 00:33:42,020 与期待让我们 say--没有让我们做到这一点。 698 00:33:42,020 --> 00:33:43,820 让我们来打造这个小 应用程序第一次。 699 00:33:43,820 --> 00:33:48,070 我要进入​​我的终端 窗口,并在这里不 700 00:33:48,070 --> 00:33:52,500 只有counter.php,这是我们现在要 摆脱为不再有密切关系, 701 00:33:52,500 --> 00:33:54,570 但我们有一大堆 目录和这个的 702 00:33:54,570 --> 00:33:58,080 将是在精神上非常相似 什么,你会在看到问题设置7。 703 00:33:58,080 --> 00:34:00,980 >> 因此,我们有三个目录 包括公共和模板, 704 00:34:00,980 --> 00:34:05,040 也正是我们离开的 我们的整个MVC模式(星期一)。 705 00:34:05,040 --> 00:34:09,290 并回顾一下,在公众还将会持续下去 我希望用户在任何文件实际 706 00:34:09,290 --> 00:34:12,969 V能够参观 通过URL浏览器。 707 00:34:12,969 --> 00:34:13,502 模板。 708 00:34:13,502 --> 00:34:14,710 我们没有把模板是什么? 709 00:34:14,710 --> 00:34:17,070 什么样的东西? 710 00:34:17,070 --> 00:34:21,659 没有太多,但一对夫妇 至少在星期一的文件。 711 00:34:21,659 --> 00:34:22,619 是啊。 712 00:34:22,619 --> 00:34:23,100 >> 听众:页眉和页脚? 713 00:34:23,100 --> 00:34:24,516 >> DAVID J.马兰:页眉和页脚。 714 00:34:24,516 --> 00:34:26,679 所以,我们今天类似的东西了。 715 00:34:26,679 --> 00:34:30,330 我们有几个文件,但 页脚我明白了,头喔, 716 00:34:30,330 --> 00:34:31,909 然后一堆其他文件。 717 00:34:31,909 --> 00:34:35,482 因此,这是等价 在V MVC视图,其中, 718 00:34:35,482 --> 00:34:37,690 再次,将是一个多一点 明确在问题设置7, 719 00:34:37,690 --> 00:34:40,380 但是这仅仅是一个文件夹,我 投入了很多我的美学。 720 00:34:40,380 --> 00:34:42,840 我的很多的HTML,我的很多形式。 721 00:34:42,840 --> 00:34:46,899 同时,包括,是另一 有这三个文件目录 722 00:34:46,899 --> 00:34:48,440 让我们来快速浏览一下这些。 723 00:34:48,440 --> 00:34:51,699 >> 我要继续前进 开放config.php文件。 724 00:34:51,699 --> 00:34:54,610 事实证明,很多 就像前面的名词, 725 00:34:54,610 --> 00:34:57,850 你犀利包括 CS50点h行驶pset7。 726 00:34:57,850 --> 00:35:00,780 在今天的例子,你会 做的是,等效 727 00:35:00,780 --> 00:35:03,600 有需要声明 有效地 728 00:35:03,600 --> 00:35:05,340 包括以下几行。 729 00:35:05,340 --> 00:35:08,225 所以要清楚,这是 一个名为config.php文件。 730 00:35:08,225 --> 00:35:09,350 并注意它在做什么。 731 00:35:09,350 --> 00:35:11,970 它显然是在做什么 神秘,打开错误信息 732 00:35:11,970 --> 00:35:13,680 所以,你可以看到他们在浏览器中。 733 00:35:13,680 --> 00:35:15,860 它,那么,显然 需要其他两个文件 734 00:35:15,860 --> 00:35:19,530 所以这是像的#include在C中, 然后这一块我们也看到, 735 00:35:19,530 --> 00:35:22,720 我们已经依靠,这开启 该购物车一样的功能。 736 00:35:22,720 --> 00:35:25,610 >> 这意味着cookie将 可以来回发送。 737 00:35:25,610 --> 00:35:27,290 那么,为什么这很有趣? 738 00:35:27,290 --> 00:35:32,460 那么,如果我们回到这个 目录并打开,例如 739 00:35:32,460 --> 00:35:33,741 constance.php。 740 00:35:33,741 --> 00:35:38,840 请注意,PHP不支持常量, 它不是很喜欢的#define在C. 741 00:35:38,840 --> 00:35:41,290 相反,你从字面上 说的定义,并通知 742 00:35:41,290 --> 00:35:44,110 我已经预先存储 四个常数在这个文件中。 743 00:35:44,110 --> 00:35:47,020 一个是今天的数据库,为 我的密码,我的用户名, 744 00:35:47,020 --> 00:35:48,690 和服务器的名称。 745 00:35:48,690 --> 00:35:51,644 因此,这些实际上将是 在问题非常相似设置7。 746 00:35:51,644 --> 00:35:54,560 最后,这就是我 会得到一些不错的功能 747 00:35:54,560 --> 00:35:59,000 从工作人员,在functions.php文件 是一串代码,我们已经写了, 748 00:35:59,000 --> 00:36:01,040 我偷了一些这方面的 从问题设置7 749 00:36:01,040 --> 00:36:05,920 今天,是做了一堆东西 让我们只看其中一个 750 00:36:05,920 --> 00:36:07,270 特别是。 751 00:36:07,270 --> 00:36:09,720 此功能在这里, 查询时,将是 752 00:36:09,720 --> 00:36:13,600 我们调用PHP函数 为了执行SQL。 753 00:36:13,600 --> 00:36:16,070 刚才我们使用 phpMyAdmin的,但是这只是 754 00:36:16,070 --> 00:36:18,720 对于那种学习的目的 和诊断目的 755 00:36:18,720 --> 00:36:20,494 而忘记了你的数据库集。 756 00:36:20,494 --> 00:36:22,660 当你真正使用 数据库,你的人, 757 00:36:22,660 --> 00:36:24,100 显然不会 被拔了网 758 00:36:24,100 --> 00:36:25,740 页面每次有人注册。 759 00:36:25,740 --> 00:36:29,870 你会写代码, 插入和删除用户的需求, 760 00:36:29,870 --> 00:36:32,490 而我们要做到这一点 由查询功能的方式。 761 00:36:32,490 --> 00:36:35,360 如果我现在向下滚动,有 将是一些更多的功能。 762 00:36:35,360 --> 00:36:37,170 重定向是要 是我们写了一个函数 763 00:36:37,170 --> 00:36:40,160 为您,让您 向用户发送到另一个URL, 764 00:36:40,160 --> 00:36:43,780 和渲染是一个函数,很喜欢 我们看到在周一,实际呈现 765 00:36:43,780 --> 00:36:48,000 一个模板,但更多关于这些的 形式pset7自己的穿行。 766 00:36:48,000 --> 00:36:50,500 现在,让我们继续前进,做到这一点。 767 00:36:50,500 --> 00:36:54,860 >> 让我进入我的演讲表 看到有目前没有 768 00:36:54,860 --> 00:36:59,640 在这里,只是还没有,让我也去 进入我的公开目录,其中 769 00:36:59,640 --> 00:37:02,780 这里只有一个文件,index.php文件。 770 00:37:02,780 --> 00:37:06,920 这个文件看起来是超级简单 此刻,它看起来就像这样。 771 00:37:06,920 --> 00:37:09,110 很像我们如何 周一不放过。 772 00:37:09,110 --> 00:37:11,945 我需要这个文件, config.php中,这是在 773 00:37:11,945 --> 00:37:15,160 一个包括目录,该目录 在点点,我的父母, 774 00:37:15,160 --> 00:37:17,650 然后它只是呈现这个文件。 775 00:37:17,650 --> 00:37:18,960 所以,这是什么文件? 776 00:37:18,960 --> 00:37:24,700 >> 让我们在我的模板中打开 form.php的,我们会看到这一点。 777 00:37:24,700 --> 00:37:28,500 超级简单的,显然这种形式是 要通过$ _GET或$ _POST提交。 778 00:37:28,500 --> 00:37:29,320 快速完整性检查。 779 00:37:29,320 --> 00:37:33,760 780 00:37:33,760 --> 00:37:35,690 从字面上直观地搜索文件。 781 00:37:35,690 --> 00:37:36,610 方法等于职位。 782 00:37:36,610 --> 00:37:39,280 因此,它不会使用的URL,如 谷歌确实,这将排序隐藏 783 00:37:39,280 --> 00:37:41,030 背后的信息 场景和它的 784 00:37:41,030 --> 00:37:43,580 要提交到 所谓register.php文件, 785 00:37:43,580 --> 00:37:45,660 这就是文件 我们还没有写 786 00:37:45,660 --> 00:37:47,610 但是,这是怎么回事 样子是这样的。 787 00:37:47,610 --> 00:37:52,670 >> 如果我去到一个单独的页面,这是 哪些本地主机/ index.php的样子。 788 00:37:52,670 --> 00:37:56,930 又一次,在服务器的 只是假设的index.php。 789 00:37:56,930 --> 00:37:57,910 输入。 790 00:37:57,910 --> 00:37:59,870 所以这就是我们 在和我想要做的 791 00:37:59,870 --> 00:38:02,450 是能够键入东西 像大卫,然后 792 00:38:02,450 --> 00:38:08,050 我的电话号码,这会说 617-555-1212现在,注册 793 00:38:08,050 --> 00:38:09,910 现在找不到register.php。 794 00:38:09,910 --> 00:38:11,440 所以,我需要实现这一点。 795 00:38:11,440 --> 00:38:13,320 因此,让我们迅速掀起 这样的事情了。 796 00:38:13,320 --> 00:38:18,640 让我进入我的公开目录 做register.php的gedit中, 797 00:38:18,640 --> 00:38:22,300 现在我要继续前进, 启动PHP模式,就像我们在周一, 798 00:38:22,300 --> 00:38:25,430 并关闭PHP的标签,并 让我们做一些事情。 799 00:38:25,430 --> 00:38:28,336 >> 所以一个,我知道,从 写过这种形式, 800 00:38:28,336 --> 00:38:29,960 我要检查以下几点。 801 00:38:29,960 --> 00:38:35,670 如果是空的,无论用户 键入的名称字段中,然后 802 00:38:35,670 --> 00:38:39,860 我会说些什么 像道歉失踪的名字。 803 00:38:39,860 --> 00:38:42,380 道歉,同时, 没有一个内置的PHP的东西, 804 00:38:42,380 --> 00:38:45,970 这是我们写了一个函数 在functions.php中的pset7 805 00:38:45,970 --> 00:38:47,940 这样您就可以访问它。 806 00:38:47,940 --> 00:38:53,830 否则,如果其他领域 为空,数,那么我 807 00:38:53,830 --> 00:38:58,370 要道歉 用户说缺数。 808 00:38:58,370 --> 00:38:59,320 保存该文件。 809 00:38:59,320 --> 00:39:02,640 >> 现在,让我们回到我的浏览器, 回到论坛再试一次。 810 00:39:02,640 --> 00:39:04,070 注册。 811 00:39:04,070 --> 00:39:05,090 行。 812 00:39:05,090 --> 00:39:06,730 什么都没有发生,这是很好的。 813 00:39:06,730 --> 00:39:08,120 我没有得到一个错误信息。 814 00:39:08,120 --> 00:39:11,651 但如果相反,让我们重新加载此 页面,并且不提供任何东西。 815 00:39:11,651 --> 00:39:12,150 该死的。 816 00:39:12,150 --> 00:39:15,350 817 00:39:15,350 --> 00:39:17,140 做到这一点。 818 00:39:17,140 --> 00:39:18,810 注册。 819 00:39:18,810 --> 00:39:20,350 我做了什么错? 820 00:39:20,350 --> 00:39:24,860 如果为空,$ _ POST名。 821 00:39:24,860 --> 00:39:26,350 再说一遍? 822 00:39:26,350 --> 00:39:27,670 >> 哦,当然。 823 00:39:27,670 --> 00:39:30,919 我忘了最重要的部分,它 是需要(“../包括/ config.php文件”)。 824 00:39:30,919 --> 00:39:34,210 825 00:39:34,210 --> 00:39:36,460 我需要有访问 抱歉功能, 826 00:39:36,460 --> 00:39:37,770 所以,什么也没有发生。 827 00:39:37,770 --> 00:39:39,460 该功能实际上并不存在。 828 00:39:39,460 --> 00:39:40,640 因此,让我们试试这个了。 829 00:39:40,640 --> 00:39:42,350 让我们重新加载页面,点击注册。 830 00:39:42,350 --> 00:39:43,060 行。 831 00:39:43,060 --> 00:39:43,770 它就在那里。 832 00:39:43,770 --> 00:39:45,700 因此,输出我们 这里看到的是结果 833 00:39:45,700 --> 00:39:47,685 中调用一个道歉 功能,超级简单, 834 00:39:47,685 --> 00:39:50,060 它只是打印出什么 我把它作为一个参数。 835 00:39:50,060 --> 00:39:51,370 >> 好吧,让我们的合作。 836 00:39:51,370 --> 00:39:54,240 让我们来为我的名字 像大卫,注册, 837 00:39:54,240 --> 00:39:56,890 失踪人数确定让我们 提供这一点。 838 00:39:56,890 --> 00:39:58,650 617-555-1212。 839 00:39:58,650 --> 00:39:59,250 注册。 840 00:39:59,250 --> 00:39:59,750 行。 841 00:39:59,750 --> 00:40:02,760 所以,一切都很好了,只是没有 有趣的事情正在发生。 842 00:40:02,760 --> 00:40:06,000 所以,现在让我们做更多的东西 有趣的发生是这样的。 843 00:40:06,000 --> 00:40:09,980 让我进入phpMyAdmin的,让我们 其实创建一个名为users表, 844 00:40:09,980 --> 00:40:12,330 我要去给它3 列,我会很快 845 00:40:12,330 --> 00:40:16,250 创建ID,然后 名字,然后数, 846 00:40:16,250 --> 00:40:18,832 和ID字段我 要离开为int。 847 00:40:18,832 --> 00:40:20,790 名称字段我要去 离开为varchar, 848 00:40:20,790 --> 00:40:23,257 我们会说64,有些武断。 849 00:40:23,257 --> 00:40:25,090 我要去数 做,你知道吗? 850 00:40:25,090 --> 00:40:27,350 我们正在进入 支持美国的数字在这里, 851 00:40:27,350 --> 00:40:31,510 所以我打算做的事 像焦炭,然后10个字符 852 00:40:31,510 --> 00:40:34,540 最大的区号 然后七位数。 853 00:40:34,540 --> 00:40:37,870 然后在这里,我要 指定自动增加这个领域, 854 00:40:37,870 --> 00:40:40,550 使之成为一个主键, 我要继续前进,不 855 00:40:40,550 --> 00:40:42,240 检查任何其他的盒子。 856 00:40:42,240 --> 00:40:48,030 >> 所以,当我现在终于单击保存, 我回到我的用户表, 857 00:40:48,030 --> 00:40:52,270 这是什么样子,如果我 现在点击新标签结构。 858 00:40:52,270 --> 00:40:54,550 所以这一点,要清楚, 仅仅是phpMyAdmin的的方法 859 00:40:54,550 --> 00:40:58,570 说法数据库表 有一个ID,名字,和一个数 860 00:40:58,570 --> 00:41:02,040 这些特定的配置 我们会忽略其余字段 861 00:41:02,040 --> 00:41:03,140 还有现在。 862 00:41:03,140 --> 00:41:04,810 >> 所以,现在我该怎么想呢? 863 00:41:04,810 --> 00:41:09,060 所以,如果我现在去到我 源代码,如果一切正常 864 00:41:09,060 --> 00:41:11,190 我想请执行以下查询。 865 00:41:11,190 --> 00:41:14,970 插入,而我正好可以 用户说我不严格 866 00:41:14,970 --> 00:41:18,620 需要那些背蜱,如果是 不是一个危险的词像用户。 867 00:41:18,620 --> 00:41:22,810 我要说的名字, 号,然后在这里我 868 00:41:22,810 --> 00:41:24,960 不会硬编码 数字值的呢。 869 00:41:24,960 --> 00:41:26,760 我打算把两个问号。 870 00:41:26,760 --> 00:41:29,320 这是一个约定 在许多语言 871 00:41:29,320 --> 00:41:31,730 如果你想拥有其中 占位符的字符串 872 00:41:31,730 --> 00:41:34,105 你要使用的问题 商标,其原因我们将 873 00:41:34,105 --> 00:41:36,370 再来聊聊 安全性,并且在这里 874 00:41:36,370 --> 00:41:39,420 我要通过这些 两个字段的名称后, 875 00:41:39,420 --> 00:41:44,850 然后发布号, 现在保存文件。 876 00:41:44,850 --> 00:41:47,090 >> 而现在我要去 再往这里是一个超级 877 00:41:47,090 --> 00:41:55,690 简单地说rendersuccess.php,这 将是另一个模板。 878 00:41:55,690 --> 00:41:57,380 我要创造非常快。 879 00:41:57,380 --> 00:42:06,270 Geditsuccess.php,我只是去 说H1的成功在该文件中。 880 00:42:06,270 --> 00:42:06,990 行。 881 00:42:06,990 --> 00:42:11,312 所以,现在,让我们回到 浏览器,在那里我参观之前。 882 00:42:11,312 --> 00:42:14,270 让我们继续前进,并确认我写的 大卫,我写了一个电话号码, 883 00:42:14,270 --> 00:42:15,390 注册。 884 00:42:15,390 --> 00:42:16,100 该死的。 885 00:42:16,100 --> 00:42:17,420 我做了什么错? 886 00:42:17,420 --> 00:42:20,850 所以,我看到一个错误在这里,你 在您的SQL语法错误。 887 00:42:20,850 --> 00:42:24,900 让我跳回到gedit中,让 我回去register.php, 888 00:42:24,900 --> 00:42:28,830 并没有我忽略了什么 重要的是最后一次? 889 00:42:28,830 --> 00:42:29,722 我需要这个。 890 00:42:29,722 --> 00:42:32,930 你想知道比其他 拜读过,但我需要这个。 891 00:42:32,930 --> 00:42:35,596 >> 所以,现在让我们回去,这 是要看到在浏览器有用 892 00:42:35,596 --> 00:42:37,680 这就是为什么在config.php 我们吐出的错误。 893 00:42:37,680 --> 00:42:41,770 让我们继续前进,刷新, 点击继续,取得成功。 894 00:42:41,770 --> 00:42:47,060 所以,现在让我去到我 这里的数据库,然后单击用户, 895 00:42:47,060 --> 00:42:51,680 和浏览,而现在通知我 有大卫在我的数据库在这里。 896 00:42:51,680 --> 00:42:55,810 现在,技术上这个网站是 还没有在公共互联网上, 897 00:42:55,810 --> 00:42:57,890 所以我不能有其他 人们把这里 898 00:42:57,890 --> 00:43:01,120 但如果我现在想,对于 举例来说,给自己发送了一条短信。 899 00:43:01,120 --> 00:43:03,920 让我们去上肢体这里 看看这个实际工作。 900 00:43:03,920 --> 00:43:07,331 我要继续前进 并删除该行 901 00:43:07,331 --> 00:43:09,080 我们将这种模糊 出在视频购买 902 00:43:09,080 --> 00:43:11,900 所以我们没有 整个互联网发短信我, 903 00:43:11,900 --> 00:43:17,270 我们现在会去到 浏览器,我们就去了演讲 904 00:43:17,270 --> 00:43:22,040 我们会输入不同 数字在这里,注册,取得成功。 905 00:43:22,040 --> 00:43:25,550 >> 所以,现在,我自己的号码是大概在 数据库中,现在最有趣的部分。 906 00:43:25,550 --> 00:43:28,774 让我们实际使用PHP做 编程的东西, 907 00:43:28,774 --> 00:43:30,940 无论是从命令 行或从其他地方, 908 00:43:30,940 --> 00:43:32,773 而现在我只是 要保持简单 909 00:43:32,773 --> 00:43:36,230 而我要进入我的 在此目录中,并做到以下几点。 910 00:43:36,230 --> 00:43:44,920 gedit中的脚本让我们说,我们将 把它叫做文本,#!/用户/斌/ env的PHP, 911 00:43:44,920 --> 00:43:46,700 就像我们看到的最后一次。 912 00:43:46,700 --> 00:43:47,950 PHP。 913 00:43:47,950 --> 00:43:55,055 >> 现在我该怎么办要求 包括config.php文件, 914 00:43:55,055 --> 00:43:57,360 但这样做可能 导致一定的误差。 915 00:43:57,360 --> 00:44:03,960 现在我要继续前进,说 行查询,从用户选择的明星, 916 00:44:03,960 --> 00:44:08,149 现在在这里,我会做一个技术 从最后一次为每行的行。 917 00:44:08,149 --> 00:44:09,690 而我要做的事情很简单。 918 00:44:09,690 --> 00:44:19,090 printf的假设名字是这样的, 和数量是这样的,反斜线ñ。 919 00:44:19,090 --> 00:44:23,320 而现在,我要通过 行引用引文结束的名字, 920 00:44:23,320 --> 00:44:28,140 和行报价引文结束数, 现在让我们继续 921 00:44:28,140 --> 00:44:31,430 和我的终端窗口 CHMOD此一+ X,使 922 00:44:31,430 --> 00:44:33,970 这个脚本调用可执行文件的文本。 923 00:44:33,970 --> 00:44:36,080 现在,让我们运行文本。 924 00:44:36,080 --> 00:44:37,590 >> 好了,进步。 925 00:44:37,590 --> 00:44:39,960 所以,我现在已经写了 命令行脚本, 926 00:44:39,960 --> 00:44:43,300 在一个名为PHP,即语言, 由于需要线 927 00:44:43,300 --> 00:44:46,380 可以访问所有这些配置 我指定的常量。 928 00:44:46,380 --> 00:44:48,177 数据库等的名称。 929 00:44:48,177 --> 00:44:50,260 其实,只是要清楚 这不是侥幸, 930 00:44:50,260 --> 00:44:54,730 让我继续前进,登记, 真快,别人喜欢抢 931 00:44:54,730 --> 00:44:58,890 并给他的555-1212号。 932 00:44:58,890 --> 00:45:01,557 >> 而现在,如果我运行脚本 再次,注意电源 933 00:45:01,557 --> 00:45:03,140 是我们正在做的数据库。 934 00:45:03,140 --> 00:45:07,680 现在我马上看到什么 另外两行是在我的数据库。 935 00:45:07,680 --> 00:45:10,699 所以,现在让我们尝试做一些事情 甚至里面票友, 936 00:45:10,699 --> 00:45:12,740 这是我们的一部分 事先没有测试, 937 00:45:12,740 --> 00:45:15,910 所以我最后一次这样做 事情发生了可怕的出错, 938 00:45:15,910 --> 00:45:17,120 我们有视频的效果。 939 00:45:17,120 --> 00:45:18,286 >> 事实上,是的,搞笑的一边。 940 00:45:18,286 --> 00:45:20,480 所以最后一次,在一个 讲课就像两年前, 941 00:45:20,480 --> 00:45:23,230 我们决定,我决定了,要 这一切都将是一个伟大的想法 942 00:45:23,230 --> 00:45:28,150 动态生成的电子邮件 类,使用整个数据库CS50 943 00:45:28,150 --> 00:45:33,390 学生,谁给了我们他们的数字 和他们的手机运营商,你 944 00:45:33,390 --> 00:45:36,290 可能还记得pset0, 怎么讲道理,事实证明 945 00:45:36,290 --> 00:45:40,650 我在我的程序中有一个小错误,并 在2012年做了几个错误,我想。 946 00:45:40,650 --> 00:45:43,997 >> 由此,一个我曾经for循环 究竟做了这种事情, 947 00:45:43,997 --> 00:45:46,580 遍历数据库, 从数据库中获取的名称, 948 00:45:46,580 --> 00:45:49,940 从数据库的名称,然后在每个 该循环迭代我发了封电子邮件。 949 00:45:49,940 --> 00:45:54,130 而不是发送一个电子邮件,但是,我 发送一个电子邮件的第一次迭代, 950 00:45:54,130 --> 00:45:58,200 和两个邮件第二次迭代,发 三封邮件,第二次迭代,这 951 00:45:58,200 --> 00:46:01,230 你可能还记得我们 渐近符号的讨论 952 00:46:01,230 --> 00:46:06,400 不好这个大O,如:n的平方 为我发送了多少短信, 953 00:46:06,400 --> 00:46:08,560 但它甚至没有电子邮件 这是短信。 954 00:46:08,560 --> 00:46:12,070 >> 如你所知,上座率不 超级朝着结束的学期高 955 00:46:12,070 --> 00:46:15,360 所以我认为这将是可爱的 的时候说,“你为什么不上课吗?” 956 00:46:15,360 --> 00:46:17,880 在短信我 发送给全班同学, 957 00:46:17,880 --> 00:46:22,140 而这是有趣的喜欢的50% 类,但另外50%,其中一些人 958 00:46:22,140 --> 00:46:26,102 吓坏了,我送难以置信 歉意的甜蜜音符 959 00:46:26,102 --> 00:46:28,560 工作人员道歉 已经错过了刚刚的演讲 960 00:46:28,560 --> 00:46:29,530 这一次,对不对? 961 00:46:29,530 --> 00:46:32,790 962 00:46:32,790 --> 00:46:34,030 >> 这样就会可怕地歪。 963 00:46:34,030 --> 00:46:37,030 因此,在这样的精神,让我们试试这个 再次,只是用我的电话号码。 964 00:46:37,030 --> 00:46:41,940 事先,在functions.php中, 我在这里写了这个功能。 965 00:46:41,940 --> 00:46:44,250 这就是所谓的文本,它 需要三个参数。 966 00:46:44,250 --> 00:46:46,360 一个数字,载体,并发送信息。 967 00:46:46,360 --> 00:46:50,390 >> 我使用一个switch语句,其 奇妙的PHP取字符串,不只是 968 00:46:50,390 --> 00:46:53,350 整数,而我并没有实现 这所有的一切支持, 969 00:46:53,350 --> 00:46:55,370 我刚刚做了AT&T和Verizon。 970 00:46:55,370 --> 00:46:57,610 因为事实证明 与这些运营商 971 00:46:57,610 --> 00:47:00,570 他们有邮件短信网关, 让你可以确实 972 00:47:00,570 --> 00:47:05,529 发送电​​子邮件到一个地址 就像在vtext.com电话号码 973 00:47:05,529 --> 00:47:08,070 而如果用户还没有被阻止 消息,它会通过 974 00:47:08,070 --> 00:47:09,340 是一条短信。 975 00:47:09,340 --> 00:47:13,270 >> 现在要做到这一点,我将要加 一个字段的真快,以我的数据库。 976 00:47:13,270 --> 00:47:15,470 我要进入 我的结构,我 977 00:47:15,470 --> 00:47:21,880 要继续前进,并添加 字段在表的末端。 978 00:47:21,880 --> 00:47:25,227 让我们单击Go,我 要调用这个载体 979 00:47:25,227 --> 00:47:27,310 而现在我要去 离开这个作为一个栏文本, 980 00:47:27,310 --> 00:47:29,320 但我们可以在未来的票友。 981 00:47:29,320 --> 00:47:31,961 我要赶紧去 进入我的表,我 982 00:47:31,961 --> 00:47:34,210 要摆脱抢的, 因为这是一个假的号码, 983 00:47:34,210 --> 00:47:38,540 我要进入​​编辑在这里和我 要手动更改我的运营商 984 00:47:38,540 --> 00:47:43,410 是Verizon公司,它 是的,现在在这里。 985 00:47:43,410 --> 00:47:44,980 >> 让我们做一个快速的完整性检查。 986 00:47:44,980 --> 00:47:52,730 让我们打开了我们的文字脚本,该脚本 看起来是这样,运营商为%s。 987 00:47:52,730 --> 00:47:58,230 我们做了很多的错误 检查比我在2012年,运营商。 988 00:47:58,230 --> 00:48:01,160 而现在,我要去 前进,重新运行该脚本。 989 00:48:01,160 --> 00:48:01,660 行。 990 00:48:01,660 --> 00:48:06,100 开利公司是Verizon公司,这意味着 现在希望我可以做这个。 991 00:48:06,100 --> 00:48:08,360 正确今年以来, 但愿,我们开始吧。 992 00:48:08,360 --> 00:48:12,200 >> 所以这个循环里面,我 将不仅有这个的printf, 993 00:48:12,200 --> 00:48:15,990 我还打算叫文字和 这个函数调用的用法 994 00:48:15,990 --> 00:48:19,670 是它需要一个数字,一个 载体,并发送信息。 995 00:48:19,670 --> 00:48:23,310 所以,让我们来看看,数量要 是行报价引文结束“号,” 996 00:48:23,310 --> 00:48:31,660 行报价引文结束“航母” 最后一个是消息。 997 00:48:31,660 --> 00:48:36,250 不要搞砸了,今年分号。 998 00:48:36,250 --> 00:48:36,780 >> 行。 999 00:48:36,780 --> 00:48:38,280 手指交叉。 1000 00:48:38,280 --> 00:48:39,970 让我们来看看,如果这个工程。 1001 00:48:39,970 --> 00:48:41,720 好吧,就这样。 1002 00:48:41,720 --> 00:48:43,000 开始了。 1003 00:48:43,000 --> 00:48:47,380 让我们来解锁手机, 用你的手指,该死的。 1004 00:48:47,380 --> 00:48:50,300 未定义的变量可 - 哦 等待,等待,等待,真正的快速。 1005 00:48:50,300 --> 00:48:51,340 真正的快,真正的快速。 1006 00:48:51,340 --> 00:48:53,380 这是完全值得的。 1007 00:48:53,380 --> 00:48:57,710 让我抢,我抢,嗯,哦。 1008 00:48:57,710 --> 00:48:59,965 谢谢你的文字有 从别人开始。 1009 00:48:59,965 --> 00:49:04,770 1010 00:49:04,770 --> 00:49:11,650 让我继续前进,真正的开放 快速,dropbox.php /邮件在了这里。 1011 00:49:11,650 --> 00:49:12,660 待机。 1012 00:49:12,660 --> 00:49:14,455 完全值得的。 1013 00:49:14,455 --> 00:49:17,430 下载。 1014 00:49:17,430 --> 00:49:18,560 OK,源src8m。 1015 00:49:18,560 --> 00:49:19,700 行。 1016 00:49:19,700 --> 00:49:21,380 >> 在这里需要多一个线。 1017 00:49:21,380 --> 00:49:24,530 哦,还有这是,这是在的新生 即时消息,它在寄存器中的三个。 1018 00:49:24,530 --> 00:49:28,820 哦,你好,马戈,非常感谢你。 1019 00:49:28,820 --> 00:49:31,130 OK,我在这里失踪的这条线。 1020 00:49:31,130 --> 00:49:33,010 所以让我赶紧抢 这行代码, 1021 00:49:33,010 --> 00:49:36,200 其中包括邮件或库 其实我是想用, 1022 00:49:36,200 --> 00:49:38,300 我要赶紧 返回到功能, 1023 00:49:38,300 --> 00:49:42,337 我要去的这顶 文件并要求该文件为好, 1024 00:49:42,337 --> 00:49:45,420 现在我要真正过我 当我回去的命令手指 1025 00:49:45,420 --> 00:49:49,530 行脚本,这是内部 今天的本地主机目录。 1026 00:49:49,530 --> 00:49:50,610 运行文本。 1027 00:49:50,610 --> 00:49:52,720 输入。 1028 00:49:52,720 --> 00:49:53,220 邮件。 1029 00:49:53,220 --> 00:49:53,719 待机。 1030 00:49:53,719 --> 00:49:58,850 1031 00:49:58,850 --> 00:49:59,600 待机。 1032 00:49:59,600 --> 00:50:01,680 邮件。 1033 00:50:01,680 --> 00:50:02,290 哦,好吧。 1034 00:50:02,290 --> 00:50:03,870 开始了。 1035 00:50:03,870 --> 00:50:06,880 >> 邮件获取新的PHP邮件。 1036 00:50:06,880 --> 00:50:09,970 难道我这样做对吗? 1037 00:50:09,970 --> 00:50:11,067 该死的。 1038 00:50:11,067 --> 00:50:12,150 To--哦,等待,等待,等待。 1039 00:50:12,150 --> 00:50:12,649 支持。 1040 00:50:12,649 --> 00:50:15,820 1041 00:50:15,820 --> 00:50:18,630 我保证,这是 将是太值了。 1042 00:50:18,630 --> 00:50:20,340 地址。 1043 00:50:20,340 --> 00:50:24,390 这就是为什么我不做了 课前右例子。 1044 00:50:24,390 --> 00:50:26,350 唉。 1045 00:50:26,350 --> 00:50:27,910 下列收件人失败。 1046 00:50:27,910 --> 00:50:31,500 1047 00:50:31,500 --> 00:50:33,040 让我们尝试最后一件事。 1048 00:50:33,040 --> 00:50:40,660 从SMTP,添加地址设置, 地址的确是。 1049 00:50:40,660 --> 00:50:43,980 让我们尝试在地址的最后一部分。 1050 00:50:43,980 --> 00:50:47,210 唉,我真的很伤心,现在。 1051 00:50:47,210 --> 00:50:47,854 谢谢。 1052 00:50:47,854 --> 00:50:50,270 不过,我真的很感激所有 文本你已经发送。 1053 00:50:50,270 --> 00:50:53,130 1054 00:50:53,130 --> 00:50:56,320 你有这个大卫。 1055 00:50:56,320 --> 00:50:59,310 你吹吧。 1056 00:50:59,310 --> 00:51:01,720 让我们离开它那里, 我们将解决在星期一。 1057 00:51:01,720 --> 00:51:04,290 到时候见。 1058 00:51:04,290 --> 00:51:08,090 >> DAVEN FARNHAM:现在深 思考了Daven法纳姆。 1059 00:51:08,090 --> 00:51:11,340 1060 00:51:11,340 --> 00:51:17,590 如果一个二进制树倒在森林中和 周围没有人到C它 - [笑着]。 1061 00:51:17,590 --> 00:51:18,998