1 00:00:00,000 --> 00:00:05,720 2 00:00:05,720 --> 00:00:07,620 >> DOUG LLOYD:所以在我们的 视频PHP语法, 3 00:00:07,620 --> 00:00:10,480 我们谈了很多关于如何PHP 可以在命令行中使用 4 00:00:10,480 --> 00:00:13,620 运行的方式程序 我们非常熟悉的C. 5 00:00:13,620 --> 00:00:15,370 但正如我也提到 在该视频,PHP 6 00:00:15,370 --> 00:00:19,572 最初开发 实现网络编程,网站。 7 00:00:19,572 --> 00:00:21,780 所以,在这个视频我们 要谈谈我们如何 8 00:00:21,780 --> 00:00:23,890 在Web开发环境中使用PHP。 9 00:00:23,890 --> 00:00:26,360 >> 我们知道,已经从 我们的视频在HTML, 10 00:00:26,360 --> 00:00:29,820 该网站建 出了一套HTML标签的 11 00:00:29,820 --> 00:00:32,850 即语义定义 网页的结构。 12 00:00:32,850 --> 00:00:35,910 但网站是 建有纯HTML 13 00:00:35,910 --> 00:00:39,510 从一个非常痛苦, 非常严重的限制。 14 00:00:39,510 --> 00:00:42,690 >> 并说明此限制, 让我们来考虑下。 15 00:00:42,690 --> 00:00:45,665 所以现在我想建立一个网页 即,每当用户访问它, 16 00:00:45,665 --> 00:00:49,760 它给了我目前的 时间在马萨诸塞州剑桥市, 17 00:00:49,760 --> 00:00:52,620 显示它的最新分钟。 18 00:00:52,620 --> 00:00:57,910 如果我现在做这一权利, 我可能会说这样的事情。 19 00:00:57,910 --> 00:01:01,330 当前时间Cambridge--所以我有 HTML标签,头标签,标题标签, 20 00:01:01,330 --> 00:01:04,610 身体tags--当前 时间在剑桥为14:08, 21 00:01:04,610 --> 00:01:06,690 打印出军用时间。 22 00:01:06,690 --> 00:01:11,390 >> 如果它现在14:09,14:09,会发生什么? 23 00:01:11,390 --> 00:01:16,470 好了,到目前为止,使用HTML,我有 去中和它更改为14:09。 24 00:01:16,470 --> 00:01:19,390 再一分钟后, 我必须再次进行更改。 25 00:01:19,390 --> 00:01:22,132 再一分钟后, 我必须再次进行更改。 26 00:01:22,132 --> 00:01:24,590 正如你可以想像,这是 可能是最糟糕的工作不断。 27 00:01:24,590 --> 00:01:29,420 你是站长的网页, 每一分钟,一天24小时, 28 00:01:29,420 --> 00:01:35,970 您需要通过更新当前时间 手动打开为time.html和改变 29 00:01:35,970 --> 00:01:41,750 代码只是片段说的 当前时间以小时和分钟。 30 00:01:41,750 --> 00:01:45,850 这可能不是一个非常 很好地利用我们的资源, 31 00:01:45,850 --> 00:01:48,880 人类和计算。 32 00:01:48,880 --> 00:01:51,297 >> 网站都是HTML 是完全静态的。 33 00:01:51,297 --> 00:01:53,630 您可以更新的唯一途径 内容,正如我们所看到的, 34 00:01:53,630 --> 00:01:56,339 是手动打开这些源 文件,编辑它们,并保存它们。 35 00:01:56,339 --> 00:01:58,088 然后当用户 刷新页面, 36 00:01:58,088 --> 00:02:01,080 或访问该页面的第一 一次,他们将获得的最新内容。 37 00:02:01,080 --> 00:02:03,970 但仅仅因为我们已经 手动编辑它。 38 00:02:03,970 --> 00:02:07,980 >> 如果我们开始把一些PHP在那里, 我们的代码可以得到很多更灵活。 39 00:02:07,980 --> 00:02:11,940 我们可以有办法为我们的网页 是动态的,或更新自己, 40 00:02:11,940 --> 00:02:15,360 而不需要我们可怜 网站管理员在前面的例子 41 00:02:15,360 --> 00:02:16,662 要手动更新的东西。 42 00:02:16,662 --> 00:02:17,870 他们可以自动地做到这一点。 43 00:02:17,870 --> 00:02:19,130 我们没有介入。 44 00:02:19,130 --> 00:02:20,410 我们可以睡个安稳觉。 45 00:02:20,410 --> 00:02:24,850 这可能是一件好事,如果 你做了很多的网络编程。 46 00:02:24,850 --> 00:02:28,360 >> 因此,在CS50 IDE中,我们运行 Web服务器Apache的叫。 47 00:02:28,360 --> 00:02:35,250 这是一个很常用的, 开源Web服务器系统。 48 00:02:35,250 --> 00:02:37,320 该系统具有 能力来解释 49 00:02:37,320 --> 00:02:41,260 PHP,这将是非常有用的话 你想要做的任何PHP编程。 50 00:02:41,260 --> 00:02:45,230 >> 而在CS50 IDE,我们有一个命令 使这个很容易做到, 51 00:02:45,230 --> 00:02:47,280 apache50启动。 52 00:02:47,280 --> 00:02:49,445 然后那条斜线 路径,以斜线,斜线 53 00:02:49,445 --> 00:02:53,350 目录,这只是一个非常普通的方法 说明你在这里指定的内容 54 00:02:53,350 --> 00:02:56,510 是一个路径到特定 目录你 55 00:02:56,510 --> 00:03:00,800 想是根 现场,或根页, 56 00:03:00,800 --> 00:03:05,430 或文件夹从您的Web服务器 将开始检查文件和服务 57 00:03:05,430 --> 00:03:07,850 他们去谁要求他们的客户。 58 00:03:07,850 --> 00:03:12,110 因此,让我们突然过来CS50 IDE,只是为了 告诉你,真快,是如何工作的。 59 00:03:12,110 --> 00:03:30,930 60 00:03:30,930 --> 00:03:36,240 >> 所以,在这里CS50 IDE,我在一个 目录下名为周零点九。 61 00:03:36,240 --> 00:03:38,890 我有two--我有 执行一个ls命令只 62 00:03:38,890 --> 00:03:41,910 上面告诉你,我有 在这里两个目录,PHP, 63 00:03:41,910 --> 00:03:46,410 这是我用在组文件中的 在PHP语法的视频,然后PHP的网站, 64 00:03:46,410 --> 00:03:49,380 这是一组文件,我 想在这个视频中使用。 65 00:03:49,380 --> 00:03:53,480 >> 我想先 一个Web服务器实例 66 00:03:53,480 --> 00:03:59,089 与PHP的Web文件夹中的内容 因为文件被端上来。 67 00:03:59,089 --> 00:04:00,130 所以,我该怎么办? 68 00:04:00,130 --> 00:04:05,710 我要去型apache50空间 开始,PHP空间,破折号网络。 69 00:04:05,710 --> 00:04:08,100 这就是目录的路径 从那里我目前。 70 00:04:08,100 --> 00:04:09,127 然后,我敲回车。 71 00:04:09,127 --> 00:04:10,960 它会做一个 东西一点在这里。 72 00:04:10,960 --> 00:04:14,030 然后它会说, Apache的成功启动。 73 00:04:14,030 --> 00:04:20,689 您的网站现在可以at--和 再有就是网址的网站。 74 00:04:20,689 --> 00:04:21,730 所以,我该怎么办? 75 00:04:21,730 --> 00:04:26,234 我要快速复制这一点。 76 00:04:26,234 --> 00:04:28,900 而我要去开up--和 我会缩小一点点这里 - 77 00:04:28,900 --> 00:04:31,570 我要去开拓 一个新的选项卡浏览器。 78 00:04:31,570 --> 00:04:34,320 而我要访问该网址。 79 00:04:34,320 --> 00:04:35,299 >> 我要敲回车。 80 00:04:35,299 --> 00:04:36,090 这将加载。 81 00:04:36,090 --> 00:04:37,510 我会再次缩小。 82 00:04:37,510 --> 00:04:41,350 而且我们可以在这里看到的是 我的PHP网页目录的内容。 83 00:04:41,350 --> 00:04:45,290 >> 所以,现在基本上是从发生 在这里,CS50的IDE我的实例 84 00:04:45,290 --> 00:04:49,620 在这些文件中提供长达 任何人谁要求他们。 85 00:04:49,620 --> 00:04:51,620 而过的课程 这段视频中,我们将整理的 86 00:04:51,620 --> 00:04:55,400 看看这些一堆 在上下文中不同的文件。 87 00:04:55,400 --> 00:04:57,614 >> 要测试你的Apache 服务器工作正常, 88 00:04:57,614 --> 00:04:59,780 其通常会 是这种情况在CS50 IDE中, 89 00:04:59,780 --> 00:05:02,696 但如果你这样做更普遍, 你开始建立自己的网站 90 00:05:02,696 --> 00:05:04,990 服务器,有一个真正的 不同凡响的模拟, 91 00:05:04,990 --> 00:05:08,500 “世界你好”,也就是通常 用于PHP的Web开发。 92 00:05:08,500 --> 00:05:12,855 这是有一个文件 由眼前这个代码 - 中 93 00:05:12,855 --> 00:05:18,247 PHP的分隔符设置PHP的信息, 括号,分号之间。 94 00:05:18,247 --> 00:05:20,580 这基本上是一个特殊的 PHP函数,告诉你 95 00:05:20,580 --> 00:05:23,970 什么版本的PHP您正在运行。 96 00:05:23,970 --> 00:05:26,850 >> 因此,在CS50的IDE,我有 可用的文件只是 97 00:05:26,850 --> 00:05:28,680 给大家展示一下这会是什么样子。 98 00:05:28,680 --> 00:05:32,860 所以,我看我的索引 从我的PHP实例。 99 00:05:32,860 --> 00:05:35,870 我的Apache实例运行 PHP的网站的内容。 100 00:05:35,870 --> 00:05:39,290 我有一个文件,这里叫做info.php的。 101 00:05:39,290 --> 00:05:41,164 >> 我要点击它,缩小。 102 00:05:41,164 --> 00:05:43,080 这是你将成为怎样 看看,漂亮多了。 103 00:05:43,080 --> 00:05:45,729 这只是告诉我, 我的Apache服务器的工作。 104 00:05:45,729 --> 00:05:48,270 这是,很显然,在 版本的PHP我参加竞选。 105 00:05:48,270 --> 00:05:51,590 这是我模拟的“hello world”。 106 00:05:51,590 --> 00:05:53,070 >> 所以我知道事情是可操作的。 107 00:05:53,070 --> 00:05:54,150 因此,我们好去。 108 00:05:54,150 --> 00:05:55,730 我们可以从这里出发。 109 00:05:55,730 --> 00:05:57,790 >> 因此,让我们重温那 时间例子我们 110 00:05:57,790 --> 00:06:01,950 谈到与我们可怜的站长 谁曾不断更新页面。 111 00:06:01,950 --> 00:06:05,020 这可能是怎样的修复 我想实现的东西 112 00:06:05,020 --> 00:06:08,080 使网站管理员没 必须不断更新的时间。 113 00:06:08,080 --> 00:06:10,270 它会只是有点 自动发生。 114 00:06:10,270 --> 00:06:13,710 >> 下下来,HTML,它的 非常相似,但有一个例外。 115 00:06:13,710 --> 00:06:16,720 但在这里我有一些PHP在顶部。 116 00:06:16,720 --> 00:06:19,940 我有,显然,称这 功能date_default_timezone_set。 117 00:06:19,940 --> 00:06:22,106 >> 我们不谈论所有 在CS50这些功能, 118 00:06:22,106 --> 00:06:24,670 因为PHP有​​可能 成千上万。 119 00:06:24,670 --> 00:06:27,540 这可能是一个比特的 夸张,但它可能不是。 120 00:06:27,540 --> 00:06:29,490 它有大量的内置函数。 121 00:06:29,490 --> 00:06:33,290 所以这是一个功能明显 设置我的时区为美国/东部, 122 00:06:33,290 --> 00:06:36,320 这是我的时区 目前在制作这部影片。 123 00:06:36,320 --> 00:06:38,430 >> 然后,我打电话到 函数调用,日期。 124 00:06:38,430 --> 00:06:43,850 而且,很明显,我存储的 HIS一种叫,时间。 125 00:06:43,850 --> 00:06:45,320 所以,这是怎么回事吗? 126 00:06:45,320 --> 00:06:48,040 >> 好了,基本上什么 发生的事情是,我在打电话 127 00:06:48,040 --> 00:06:51,650 一些服务器,是要 告诉我现在是什么时候了。 128 00:06:51,650 --> 00:06:56,150 而我将其转换为一种格式 时,分,秒。 129 00:06:56,150 --> 00:07:00,540 其原因是大写的H是这样的 是要给我24小时时间,而不是12 130 00:07:00,540 --> 00:07:02,362 小时的时间,这将是小写小时。 131 00:07:02,362 --> 00:07:04,570 而我只是存储的 在一个名为变量,时间。 132 00:07:04,570 --> 00:07:07,028 使PHP的第二行 那里,调用的功能, 133 00:07:07,028 --> 00:07:09,037 迄今为止,在刚开 一些字符串,这是 134 00:07:09,037 --> 00:07:12,120 要给我的日期,和 时间,和一堆其他信息。 135 00:07:12,120 --> 00:07:16,480 还有第一个参数,即HIS, 只是提取重要组成部分 136 00:07:16,480 --> 00:07:20,614 我关心在这个例子中, 这是小时,分钟和秒。 137 00:07:20,614 --> 00:07:22,030 所以这是所有这回事。 138 00:07:22,030 --> 00:07:23,562 所以,我存储在一个变量$时间。 139 00:07:23,562 --> 00:07:25,270 再往下的 最底层那里,我 140 00:07:25,270 --> 00:07:28,980 有简写 打印出当前时间。 141 00:07:28,980 --> 00:07:32,050 所以我只是要打印 出当前时间是什么。 142 00:07:32,050 --> 00:07:37,220 >> 因此,让我们来看看这 CS50 IDE,看看我们现在怎么是 143 00:07:37,220 --> 00:07:40,002 保存该站长了很多麻烦。 144 00:07:40,002 --> 00:07:42,570 好了,所以我在这里再次 回到根目录 145 00:07:42,570 --> 00:07:45,040 我的Apache实例。 146 00:07:45,040 --> 00:07:51,585 我这里有一个名为time.php。 147 00:07:51,585 --> 00:07:53,559 我只是要点击的。 148 00:07:53,559 --> 00:07:55,850 我会向上滚动,因为 我们在很远放大。 149 00:07:55,850 --> 00:07:57,257 目前的时间是14点20分34秒。 150 00:07:57,257 --> 00:07:59,090 所以,我做的时间, 分钟和秒。 151 00:07:59,090 --> 00:08:01,910 我可以刷新 页面,并获得新的时间。 152 00:08:01,910 --> 00:08:02,420 --41。 153 00:08:02,420 --> 00:08:07,240 我要去刷新页面 并获得新的时间,44,46,47。 154 00:08:07,240 --> 00:08:10,490 >> 所以,我显然不是 改变任何事情我自己。 155 00:08:10,490 --> 00:08:11,720 我在这里刷新页面。 156 00:08:11,720 --> 00:08:13,711 所以,我不能回到那里编辑它。 157 00:08:13,711 --> 00:08:15,710 我向你保证,我不 有什么同党 158 00:08:15,710 --> 00:08:18,230 谁正在编辑的文件 以我的名义就在身边。 159 00:08:18,230 --> 00:08:21,260 >> 我只是使用PHP函数, 时间,生成的时间,我 160 00:08:21,260 --> 00:08:22,340 自动。 161 00:08:22,340 --> 00:08:24,800 所以,即使我睡着了, 和我的Web服务器正在运行, 162 00:08:24,800 --> 00:08:28,884 谁访问该网页仍然是用户 要得到完全相同的当前时间。 163 00:08:28,884 --> 00:08:29,800 所以,这是相当不错的。 164 00:08:29,800 --> 00:08:33,609 我做了我的网站更具活力 有没有太多的PHP代码。 165 00:08:33,609 --> 00:08:36,650 这只是两行代码,然后 print语句的一点点。 166 00:08:36,650 --> 00:08:38,441 而且我已经有一个 更加动态的网站 167 00:08:38,441 --> 00:08:42,750 比第一个例子中我们看到了 在视频的开头。 168 00:08:42,750 --> 00:08:46,660 >> 因此,从PHP语法视频回顾 该PHP解释器运行时 169 00:08:46,660 --> 00:08:50,000 我们的程序,它会忽略一切 这不是PHP的分隔符内, 170 00:08:50,000 --> 00:08:51,500 吐了出来。 171 00:08:51,500 --> 00:08:54,410 在该示例中,东西什么 它被吐出了HTML。 172 00:08:54,410 --> 00:08:58,080 这意味着我可以现在 点缀HTML和PHP在一起。 173 00:08:58,080 --> 00:09:01,920 由于翻译只会 忽略HTML和字面上把它输出。 174 00:09:01,920 --> 00:09:04,140 这是很好的,对不对? 175 00:09:04,140 --> 00:09:06,100 >> 因为据推测, 在一天结束时, 176 00:09:06,100 --> 00:09:08,360 我想我的网站 的HTML构成。 177 00:09:08,360 --> 00:09:12,880 使得任何web浏览器可以解释 它,或理解页面上的HTML 178 00:09:12,880 --> 00:09:17,270 并使它的东西,我们 实际上可以理解为人类。 179 00:09:17,270 --> 00:09:19,430 而我只能用PHP 我的网站的部分 180 00:09:19,430 --> 00:09:23,390 在需要活力,需要我 有东西不断更新。 181 00:09:23,390 --> 00:09:26,630 所述静态信息 可以保持不变。 182 00:09:26,630 --> 00:09:27,540 >> 好了,这很好。 183 00:09:27,540 --> 00:09:28,540 但是,为什么要这样做呢? 184 00:09:28,540 --> 00:09:30,400 为什么我会混合使用HTML和PHP? 185 00:09:30,400 --> 00:09:33,850 我可以只打印出所有的 HTML,使用PHP打印功能。 186 00:09:33,850 --> 00:09:35,870 我为什么不这样做呢? 187 00:09:35,870 --> 00:09:37,100 想想看一秒钟。 188 00:09:37,100 --> 00:09:41,220 >> 为什么,当我可以只打印out--我 可能有PHP的线条,只是说, 189 00:09:41,220 --> 00:09:43,841 打印HTML标记,打印头。 190 00:09:43,841 --> 00:09:44,840 我为什么不这样做呢? 191 00:09:44,840 --> 00:09:48,230 为什么我混合PHP和HTML吗? 192 00:09:48,230 --> 00:09:50,080 >> 好吧,如果你认为 它一秒钟。 193 00:09:50,080 --> 00:09:52,824 PHP的解释有 来解释它认为。 194 00:09:52,824 --> 00:09:54,990 所以,这将有 要执行的代码行。 195 00:09:54,990 --> 00:09:56,450 打印出的HTML。 196 00:09:56,450 --> 00:09:57,700 打印出开放的头标记。 197 00:09:57,700 --> 00:09:58,969 打印出开放的标题标签。 198 00:09:58,969 --> 00:10:00,760 这将有 执行和解释 199 00:10:00,760 --> 00:10:02,671 该方式的每一步。 200 00:10:02,671 --> 00:10:04,670 为什么不只是让 解释只是掩饰 201 00:10:04,670 --> 00:10:06,878 事情不明白 并自动做到这一点? 202 00:10:06,878 --> 00:10:11,365 这将节省我很多时间 混合我的HTML和我的PHP在一起。 203 00:10:11,365 --> 00:10:16,220 >> 所以这就是为什么我们不这样做 只需打开PHP定界符 204 00:10:16,220 --> 00:10:19,450 然后只需打印出整个 我们网页的内容,一个巨大的PHP 205 00:10:19,450 --> 00:10:24,330 调用的功能,打印,然后 关闭PHP的分隔符,我们就大功告成了。 206 00:10:24,330 --> 00:10:27,620 所以这就是为什么我们将它们混合在一起。 207 00:10:27,620 --> 00:10:32,345 >> 到目前为止,我们还没有看到太多的 从一般的PHP语法的差异。 208 00:10:32,345 --> 00:10:33,720 它是非常简单的。 209 00:10:33,720 --> 00:10:35,553 我们已经看到了 问号,平等的。 210 00:10:35,553 --> 00:10:39,012 我们看到了一些新的函数调用, 但没有什么花哨的事情。 211 00:10:39,012 --> 00:10:40,720 我们也许做的事情 一个小票友。 212 00:10:40,720 --> 00:10:44,360 如果我们想传递的信息 不同的PHP文件之间, 213 00:10:44,360 --> 00:10:47,280 所以,也许用户可以 提交信息给我。 214 00:10:47,280 --> 00:10:50,230 然后我可以做一些事情 它另一页上。 215 00:10:50,230 --> 00:10:52,990 >> 因此,PHP有支持 所谓超级全球 216 00:10:52,990 --> 00:10:55,297 变量,这听起来相当真棒。 217 00:10:55,297 --> 00:10:57,130 他们真的只是 巨大的关联数组 218 00:10:57,130 --> 00:10:59,900 能够帮助实现这个 路过的功能 219 00:10:59,900 --> 00:11:05,010 PHP文件之间的信息 在我们现有的Web服务器上。 220 00:11:05,010 --> 00:11:07,760 >> 其中的第一个超级 全局变量被称为$ _GET。 221 00:11:07,760 --> 00:11:10,140 而且它可能是 最简单的理解。 222 00:11:10,140 --> 00:11:12,430 与$ _GET,会发生什么? 223 00:11:12,430 --> 00:11:16,240 好了,基本上,用户 要输入额外的信息 224 00:11:16,240 --> 00:11:18,390 在我们的URL的结尾。 225 00:11:18,390 --> 00:11:21,460 而无论他们输入,假设 它的格式以特定的方式 226 00:11:21,460 --> 00:11:25,830 称为查询串,这仅仅是 一组键值对分离 227 00:11:25,830 --> 00:11:27,810 由&符号。 228 00:11:27,810 --> 00:11:32,362 这些键值对会 存储在$ _GET关联数组。 229 00:11:32,362 --> 00:11:34,070 而从我们的视频 PHP语法,我们知道 230 00:11:34,070 --> 00:11:40,080 如何一起工作 关联数组了。 231 00:11:40,080 --> 00:11:44,090 因此,这里是一个例子 一些PHP,在那里也许我 232 00:11:44,090 --> 00:11:50,180 提取所有键值对 URL中提供的用户。 233 00:11:50,180 --> 00:11:51,970 所以,我有我打开PHP的分隔符。 234 00:11:51,970 --> 00:11:53,410 我有一个foreach循环。 235 00:11:53,410 --> 00:11:57,410 我对面的超级迭代 全球阵列称为$ _GET。 236 00:11:57,410 --> 00:12:00,160 >> 而且我希望能够参考 两者的键和值。 237 00:12:00,160 --> 00:12:02,410 而我只是将它们打印 出,每一个上明显 238 00:12:02,410 --> 00:12:03,780 在这里它自己的段落标记。 239 00:12:03,780 --> 00:12:07,620 我打印了一些HTML 和内插的值 240 00:12:07,620 --> 00:12:12,900 的键和值到了语句。 241 00:12:12,900 --> 00:12:16,980 >> 因此,让我们来看看如何 实际上在我们的IDE工作。 242 00:12:16,980 --> 00:12:18,980 也许这将帮助 说明一点点 243 00:12:18,980 --> 00:12:21,880 什么GET实际上在做什么。 244 00:12:21,880 --> 00:12:23,610 所以,我回到我的Web根目录。 245 00:12:23,610 --> 00:12:25,318 我会放大一 点点向您展示 246 00:12:25,318 --> 00:12:28,620 我有一个称为文件,get1.php。 247 00:12:28,620 --> 00:12:31,830 >> 因此,让我们点击get1.php。 248 00:12:31,830 --> 00:12:36,600 而且我没有看到任何内容。 249 00:12:36,600 --> 00:12:38,390 这是奇怪的,对不对? 250 00:12:38,390 --> 00:12:39,740 嗯,不是真的实际。 251 00:12:39,740 --> 00:12:42,030 因为我没有提供 任何在URL中。 252 00:12:42,030 --> 00:12:46,270 我要去get1.php,但我 没有提供任何键值对 253 00:12:46,270 --> 00:12:47,450 作为我的查询字符串的一部分。 254 00:12:47,450 --> 00:12:50,510 因此,让我们添加一个查询字符串 看看这个文件可以做到。 255 00:12:50,510 --> 00:12:53,040 >> 首先查询字符串您 只需键入问号。 256 00:12:53,040 --> 00:13:00,820 那么也许我会说的名字=道格 - 年= 2015年。 257 00:13:00,820 --> 00:13:02,914 然后,我会按Enter键。 258 00:13:02,914 --> 00:13:04,080 现在可以看到发生了什么。 259 00:13:04,080 --> 00:13:05,480 我仍然在get1.php。 260 00:13:05,480 --> 00:13:08,445 但现在我已经提供 键值对,我 261 00:13:08,445 --> 00:13:14,940 打印出来的自己 paragraph--名称,Doug--年,2015年。 262 00:13:14,940 --> 00:13:17,970 这也正是代码,我们只是 刚才看到的幻灯片。 263 00:13:17,970 --> 00:13:22,290 >> 如果我想也许再添 键值对,与类= CS50。 264 00:13:22,290 --> 00:13:25,325 265 00:13:25,325 --> 00:13:27,580 现在我有另一个关键价值 该集团的印刷出对 266 00:13:27,580 --> 00:13:30,025 当我再次重温URL。 267 00:13:30,025 --> 00:13:31,900 现在,也许这不是 格式化的非常好。 268 00:13:31,900 --> 00:13:33,660 所以,我有另一个版本get.php的。 269 00:13:33,660 --> 00:13:36,350 这是get2.php。 270 00:13:36,350 --> 00:13:39,070 >> 在此差 一个是我的CSS文件, 271 00:13:39,070 --> 00:13:41,690 它格式化东西 多一点很好地适合我。 272 00:13:41,690 --> 00:13:43,940 这也许不是最 美丽的CSS的世界。 273 00:13:43,940 --> 00:13:45,650 但它这样做的另一种方式。 274 00:13:45,650 --> 00:13:52,840 所以,我仍然可以访问 使用$ _GET我的变量。 275 00:13:52,840 --> 00:13:56,610 在这种情况下,我只是种 使CSS多一点花哨。 276 00:13:56,610 --> 00:13:58,360 如果我们突然过来 我的IDE一秒钟, 277 00:13:58,360 --> 00:14:06,870 我会告诉你在我的PHP网站 目录在这里,get2.php。 278 00:14:06,870 --> 00:14:10,010 我们将在这里打开它,一些HTML。 279 00:14:10,010 --> 00:14:13,220 显然,我链接入 CSS文件我在说什么。 280 00:14:13,220 --> 00:14:14,570 我打开表的标签。 281 00:14:14,570 --> 00:14:15,970 然后这里是我的foreach循环。 282 00:14:15,970 --> 00:14:18,450 >> 这里是什么我 显示之前的幻灯片。 283 00:14:18,450 --> 00:14:21,007 唯一不同的是我 有这个键和值CSS 284 00:14:21,007 --> 00:14:22,340 造型是我申请到它。 285 00:14:22,340 --> 00:14:25,622 但是,这是我做的,是我 跨$ _GET迭代来获取所有 286 00:14:25,622 --> 00:14:26,580 的键值对。 287 00:14:26,580 --> 00:14:28,890 >> 而我打印出来的表格。 288 00:14:28,890 --> 00:14:33,230 而且,很明显,我格式化键 以一种方式,与 00:14:40,057 因此很明显,适用于一些 类选择在我的CSS文件GET.CSS。 290 00:14:40,057 --> 00:14:42,890 而且,很明显,我打印出 我的价值观完全不同的方法。 291 00:14:42,890 --> 00:14:45,530 这是相当多的 我们在这里看到,在这里 292 00:14:45,530 --> 00:14:47,710 我们的价值观被印 蓝色背景, 293 00:14:47,710 --> 00:14:49,969 与我们的钥匙被印 黄色背景。 294 00:14:49,969 --> 00:14:52,010 所以这是我应得 这些不同的风格。 295 00:14:52,010 --> 00:14:54,054 因为我使用的是不同的CSS类。 296 00:14:54,054 --> 00:14:55,470 但是,这几乎是它为GET。 297 00:14:55,470 --> 00:14:58,380 像我刚才提取信息。 298 00:14:58,380 --> 00:15:01,000 在这种情况下,我只是 它打印到屏幕上。 299 00:15:01,000 --> 00:15:04,310 我得到它的URL, 而这正是GET为我们做。 300 00:15:04,310 --> 00:15:06,470 >> 你看到的可能 问题就在这里,虽然? 301 00:15:06,470 --> 00:15:11,720 为什么我们也许 不想使用$ _GET? 302 00:15:11,720 --> 00:15:15,440 如果有什么,也许,我正在此查询? 303 00:15:15,440 --> 00:15:18,000 --to get3.php,我 没有在我的IDE。 304 00:15:18,000 --> 00:15:19,640 这只是一个假设性的文件。 305 00:15:19,640 --> 00:15:22,187 但是请注意,在这里,显然 通过我的密码研究。 306 00:15:22,187 --> 00:15:23,770 也许我的密码是尴尬。 307 00:15:23,770 --> 00:15:28,070 或者,也许我不希望人们 知道我的密码,正确的。 308 00:15:28,070 --> 00:15:33,140 >> 如果我如果我在使用它传递though-- 在$ _ GET方法,会发生什么情况是, 309 00:15:33,140 --> 00:15:34,970 这将是在URL中。 310 00:15:34,970 --> 00:15:39,890 所以一些恶意用户可能 能看到我在做什么。 311 00:15:39,890 --> 00:15:42,040 我可以将它们传递 敏感信息。 312 00:15:42,040 --> 00:15:43,310 或者,也许它甚至不是一个恶意用户。 313 00:15:43,310 --> 00:15:45,790 也许这只是你的朋友谁 站在你的肩膀。 314 00:15:45,790 --> 00:15:47,650 而现在,他们知道密码 你的Facebook帐户。 315 00:15:47,650 --> 00:15:49,483 >> 也许他们不会 用它做任何事情。 316 00:15:49,483 --> 00:15:53,749 但是,如果你的密码是 通过$ _GET向Facebook提交, 317 00:15:53,749 --> 00:15:55,290 现在他们知道你的Facebook密码。 318 00:15:55,290 --> 00:15:59,000 因为它是正确的,在该网址 当你完成提交信息。 319 00:15:59,000 --> 00:16:01,887 >> 所以,也许这是不是最好的 的方式来传递敏感信息。 320 00:16:01,887 --> 00:16:04,470 这是传递信息的好方法 我们不特别 321 00:16:04,470 --> 00:16:05,886 在乎的是过于敏感。 322 00:16:05,886 --> 00:16:09,347 因为GET是蛮快的, 相对于其它超级全局 323 00:16:09,347 --> 00:16:10,430 我们要谈论的话题。 324 00:16:10,430 --> 00:16:13,330 但也许不是最好的工具 敏感信息。 325 00:16:13,330 --> 00:16:15,990 >> 为此,我们可能要 使用一种叫做$ _ POST, 326 00:16:15,990 --> 00:16:18,560 这是另一种超级全局变量。 327 00:16:18,560 --> 00:16:20,750 它的另一个关联数组。 328 00:16:20,750 --> 00:16:23,240 因此,它的工作原理非常 完全一样的GET。 329 00:16:23,240 --> 00:16:26,850 除,而不是提取 从URL信息, 330 00:16:26,850 --> 00:16:29,870 它通过HTTP标头的东西。 331 00:16:29,870 --> 00:16:32,080 因此,从回顾我们 视频HTTP,我们聊 332 00:16:32,080 --> 00:16:34,850 有关如何浏览器,服务器, 与客户沟通。 333 00:16:34,850 --> 00:16:38,070 而信息传递回 来回的HTTP标头。 334 00:16:38,070 --> 00:16:43,330 >> 随着$ _ POST,信息通常是 通过这些HTTP头发送。 335 00:16:43,330 --> 00:16:49,770 我们将最常用看到$ _ POST在 提交的HTML形式的情况下。 336 00:16:49,770 --> 00:16:52,390 您仍然可以使用HTML表单 提交事情就搞定了。 337 00:16:52,390 --> 00:16:56,120 但是,它们通常使用 在开机自检的范围内。 338 00:16:56,120 --> 00:17:00,280 >> 因此,这里的HTML表单的例子。 339 00:17:00,280 --> 00:17:06,750 现在,我们已经见过这些,但我们有 没有看到这部分,行动=“post.php中”。 340 00:17:06,750 --> 00:17:10,756 因此,当我们谈到的形式在 HTML的背景下,我有一个提交按钮。 341 00:17:10,756 --> 00:17:13,630 如果你还记得,我会点击提交 然后页面只是刷新, 342 00:17:13,630 --> 00:17:14,660 什么也没做。 343 00:17:14,660 --> 00:17:18,250 >> 在这种情况下,我提交 无论我请在这种形式下, 344 00:17:18,250 --> 00:17:20,750 名为post.php中的PHP文件。 345 00:17:20,750 --> 00:17:25,810 而且,很明显,该办法,我这样做, 在这种形式使用POST方法。 346 00:17:25,810 --> 00:17:29,040 所以每一条信息 我键入此表 347 00:17:29,040 --> 00:17:31,470 将提交 通过HTTP标头。 348 00:17:31,470 --> 00:17:36,440 >> 这将是在post.php中访问, 因为这是我的窗体的动作。 349 00:17:36,440 --> 00:17:39,811 这将是可访问的 通过将$ _ POST。 350 00:17:39,811 --> 00:17:42,310 而且很显然,这样,我就可以 获得在每个单独的元素 351 00:17:42,310 --> 00:17:44,765 与该关联数组 与这个属性, 352 00:17:44,765 --> 00:17:48,130 我们的输入标签的名称属性。 353 00:17:48,130 --> 00:17:53,540 >> 因此很明显,我可以说,$ _ POST方 括号中的名字让任何用户 354 00:17:53,540 --> 00:17:55,440 输入的第一个字段。 355 00:17:55,440 --> 00:18:01,030 而$ _ POST密码,伪线相当, 得到在任何用户输入 356 00:18:01,030 --> 00:18:03,650 在第二个字段。 357 00:18:03,650 --> 00:18:06,414 >> 因此,让我们一起来看看 这种过度的CS50 IDE。 358 00:18:06,414 --> 00:18:08,330 所以我们在这里,我会 放大一秒钟。 359 00:18:08,330 --> 00:18:12,380 我们有一个叫做post.html文件。 360 00:18:12,380 --> 00:18:13,690 我点击post.html。 361 00:18:13,690 --> 00:18:16,300 在最高层在这里我有 一个非常简单的Web表单。 362 00:18:16,300 --> 00:18:18,750 这是我们刚才看到的形式 在幻灯片上一秒钟前。 363 00:18:18,750 --> 00:18:25,610 >> 我可以打字,道格,我可以 输入我的密码,我们都 364 00:18:25,610 --> 00:18:27,340 知道squadgoals。 365 00:18:27,340 --> 00:18:30,100 我会点击提交。 366 00:18:30,100 --> 00:18:32,290 而且很显然,这 提交到post.php中。 367 00:18:32,290 --> 00:18:33,810 而我显然是打印的。 368 00:18:33,810 --> 00:18:36,490 所以我摆脱所有的安全性 这个职位给我,只需打印出 369 00:18:36,490 --> 00:18:37,720 的用户名和密码。 370 00:18:37,720 --> 00:18:38,960 >> 用户的名字是道格。 371 00:18:38,960 --> 00:18:40,810 用户的密码是squadgoals。 372 00:18:40,810 --> 00:18:42,480 我是如何做到这一点? 373 00:18:42,480 --> 00:18:44,800 好吧,流行过来的IDE 再一秒钟。 374 00:18:44,800 --> 00:18:51,340 我们将向下滚动拿 看看post.php中,这是 375 00:18:51,340 --> 00:18:54,040 我用行动来这里提交。 376 00:18:54,040 --> 00:18:55,739 那是我的HTML表单的动作。 377 00:18:55,739 --> 00:18:56,780 而这一切,我在干什么。 378 00:18:56,780 --> 00:19:01,370 用户的名字是什么,我就是印刷 出$ _ POST“名”的内容。 379 00:19:01,370 --> 00:19:04,660 然后将用户的密码 为$ _ POST“密码”。 380 00:19:04,660 --> 00:19:08,920 所以我得到的信息 通过提交HTML表单。 381 00:19:08,920 --> 00:19:13,790 我可以用$ _ POST现在提取它 因为我用来传输方法 382 00:19:13,790 --> 00:19:17,470 与表单数据是POST方法。 383 00:19:17,470 --> 00:19:20,640 >> 现在,它可能不是 所以great--我要去 384 00:19:20,640 --> 00:19:24,510 回去一秒钟 我们设定这里 - 385 00:19:24,510 --> 00:19:30,120 它可能没有那么大,如果我 与POST提交信息, 386 00:19:30,120 --> 00:19:32,532 这是表面上更安全。 387 00:19:32,532 --> 00:19:34,740 它可能不是那么大 如果我这样做,然后 388 00:19:34,740 --> 00:19:36,470 打印出该用户的口令。 389 00:19:36,470 --> 00:19:38,540 这应该是更安全的。 390 00:19:38,540 --> 00:19:40,870 >> OK,但它不是完全安全的。 391 00:19:40,870 --> 00:19:42,910 所以在这一点 片段在这里我想 392 00:19:42,910 --> 00:19:46,410 只是请你注意一些 数据安全问题,只是一些 393 00:19:46,410 --> 00:19:51,200 想想,你是 工作或使用互联网。 394 00:19:51,200 --> 00:19:53,890 这仅仅是要考虑的事情。 395 00:19:53,890 --> 00:19:57,980 >> 我告诉你信息 通过HTTP头提交 396 00:19:57,980 --> 00:19:59,724 当您使用POST方法。 397 00:19:59,724 --> 00:20:01,390 这意味着他们并不是完全安全的。 398 00:20:01,390 --> 00:20:05,610 他们很难找到比 使用GET方法,其中 399 00:20:05,610 --> 00:20:06,882 它只是在正确的URL。 400 00:20:06,882 --> 00:20:08,340 不过,还是有办法找到它。 401 00:20:08,340 --> 00:20:10,423 而我只是想展示 你这一点,你也许 402 00:20:10,423 --> 00:20:12,940 开始思考这个问题 为你工作,或者使用 403 00:20:12,940 --> 00:20:14,560 网站和提交 密码,也许使用 404 00:20:14,560 --> 00:20:16,518 在一个相同的密码 很多不同的地方。 405 00:20:16,518 --> 00:20:22,060 要知道,是还是实际上相当 不难看出别人的密码。 406 00:20:22,060 --> 00:20:25,190 >> 所以在这里,我要去 去post2.html。 407 00:20:25,190 --> 00:20:28,850 而随着post2.html的区别 和post2.php是相当微妙的。 408 00:20:28,850 --> 00:20:31,420 所不同的是只 我不打印出来 409 00:20:31,420 --> 00:20:33,520 密码,当我提交表单。 410 00:20:33,520 --> 00:20:35,260 >> 所以,我要键入,道格。 411 00:20:35,260 --> 00:20:38,365 而且我会打字 在,squadgoals,甚至 412 00:20:38,365 --> 00:20:40,770 尽管我们知道这就是密码。 413 00:20:40,770 --> 00:20:42,540 在我提交 形式,虽然,我要去 414 00:20:42,540 --> 00:20:45,864 开拓开发工具,只是 告诉你什么会发生在这里。 415 00:20:45,864 --> 00:20:47,530 因此,在Chrome浏览器,我只是打F12。 416 00:20:47,530 --> 00:20:54,120 417 00:20:54,120 --> 00:20:57,230 这是怎么回事打开我的 开发工具的右手边。 418 00:20:57,230 --> 00:20:59,480 我还没有提交表单呢。 419 00:20:59,480 --> 00:21:02,680 现在,我要揍提交关于我的形式。 420 00:21:02,680 --> 00:21:05,370 而且很显然,我做了一个 打电话,或我提出的要求 421 00:21:05,370 --> 00:21:07,620 到post2.php,这是有道理的。 422 00:21:07,620 --> 00:21:10,040 我要点击的。 423 00:21:10,040 --> 00:21:13,802 >> 那么在这里,我要去 点击标题。 424 00:21:13,802 --> 00:21:15,410 有很多东西会在这里的。 425 00:21:15,410 --> 00:21:21,310 但是,如果我向下滚动到非常 底部,权通知那里 - 我的日历 426 00:21:21,310 --> 00:21:25,180 已阻止它的second--权 在最底层角落里, 427 00:21:25,180 --> 00:21:27,386 name--道格,pw-- squadgoals。 428 00:21:27,386 --> 00:21:30,010 所以,即使我使用POST 方法,这是更安全的, 429 00:21:30,010 --> 00:21:33,570 要知道,当你这样做的话, 你还在传递信息 430 00:21:33,570 --> 00:21:34,430 通过HTTP。 431 00:21:34,430 --> 00:21:36,770 而且它仍然可以 被对手发现。 432 00:21:36,770 --> 00:21:39,270 这只是一些我们要 有应付真的。 433 00:21:39,270 --> 00:21:41,980 也许有一些方法来加密我们 密码之前,我们寄过去, 434 00:21:41,980 --> 00:21:44,410 这将是一个更好的, 而我不是在这里做。 435 00:21:44,410 --> 00:21:47,010 >> 但要知道,在POST 方法有其局限性太大。 436 00:21:47,010 --> 00:21:49,801 这是在改进GET 术语是立即可见。 437 00:21:49,801 --> 00:21:51,280 但它不是一个完整的修补程序。 438 00:21:51,280 --> 00:21:53,280 所以这里有一个例子 一个快速的在家里锻炼 439 00:21:53,280 --> 00:21:56,350 你可以用它来得到一些 练习用PHP工作。 440 00:21:56,350 --> 00:21:58,300 创建以下对网页。 441 00:21:58,300 --> 00:22:00,960 首先应该只是一个很简单的 形成具有单一字段和提交 442 00:22:00,960 --> 00:22:01,460 按钮。 443 00:22:01,460 --> 00:22:04,070 所以非常类似于我们 只是做与post.html。 444 00:22:04,070 --> 00:22:07,450 >> 然后第二 文件,你应该创建 445 00:22:07,450 --> 00:22:11,687 是一个文件,一个PHP文件时, 通过POST期待的输入, 446 00:22:11,687 --> 00:22:14,770 和基于什么用户输入,其 可以假定为一个整数。 447 00:22:14,770 --> 00:22:16,160 你不必做任何 错误检查或类似物。 448 00:22:16,160 --> 00:22:18,284 你可以假设用户 将键入一个整数值, 449 00:22:18,284 --> 00:22:22,230 或者类似的解释的 PHP作为一个整数,到该形式。 450 00:22:22,230 --> 00:22:24,790 你只是想创建一个 由N乘法表。 451 00:22:24,790 --> 00:22:28,480 >> 因此,如果用户提交10,我们希望 有10×10乘法表。 452 00:22:28,480 --> 00:22:31,832 如果用户提交一个12,我们希望 12 12乘法表。 453 00:22:31,832 --> 00:22:33,790 只是让你可以看到什么 我们驱车在这里, 454 00:22:33,790 --> 00:22:36,040 我们就来看看 这个文件在我的IDE。 455 00:22:36,040 --> 00:22:38,080 >> 所以在这里的IDE,我有mult_form.html。 456 00:22:38,080 --> 00:22:41,370 457 00:22:41,370 --> 00:22:43,100 我会点击它。 458 00:22:43,100 --> 00:22:46,020 所有我想要做的就是提交的值。 459 00:22:46,020 --> 00:22:47,590 在10个类型,点击提交。 460 00:22:47,590 --> 00:22:51,190 而显然,mult_table.php,这 我们可以在顶部在URL看到有, 461 00:22:51,190 --> 00:22:53,970 我是一个10×10创造 乘法表。 462 00:22:53,970 --> 00:22:59,365 >> 如果我输入15,并点击提交,现在我 有15 15乘法表。 463 00:22:59,365 --> 00:23:02,240 林,当然不会显示 你mult_table.php的内容, 464 00:23:02,240 --> 00:23:04,781 因为,将采取的乐趣 出了这家练习。 465 00:23:04,781 --> 00:23:07,480 但是,这是一个伟大的方式来得到一些 练习用PHP循环工作 466 00:23:07,480 --> 00:23:10,889 与POST方法很简单,希望 强调自由的例子,只是 467 00:23:10,889 --> 00:23:12,180 做练习一点点。 468 00:23:12,180 --> 00:23:16,540 我也有一个小的CSS怎么回事 在这里,使我的个人的表 469 00:23:16,540 --> 00:23:19,710 只是种细胞突然掀起了 点点,看起来多了几分 470 00:23:19,710 --> 00:23:22,205 像乘法表, 而不仅仅是文字只 471 00:23:22,205 --> 00:23:23,261 样的坐在那里。 472 00:23:23,261 --> 00:23:26,260 最后一个超级全局,我们来谈谈 在这段视频中被称为什么 473 00:23:26,260 --> 00:23:27,597 $ _SESSION。 474 00:23:27,597 --> 00:23:29,930 也许这实际上是 某事的最佳典范 475 00:23:29,930 --> 00:23:31,700 我们会考虑全球性的。 476 00:23:31,700 --> 00:23:33,189 这是另一个数组。 477 00:23:33,189 --> 00:23:34,480 它的另一个关联数组。 478 00:23:34,480 --> 00:23:40,580 但它是通过每一个访问 存在我们的系统上的PHP文件。 479 00:23:40,580 --> 00:23:43,410 >> 我们没有提出 信息一页的时间 480 00:23:43,410 --> 00:23:45,400 像我们做的GET和POST用。 481 00:23:45,400 --> 00:23:46,380 它总是在那里。 482 00:23:46,380 --> 00:23:50,040 所以,这是伟大的一页 你在哪里登录,例如, 483 00:23:50,040 --> 00:23:53,120 你希望你的登录信息 从页面到坚持到一页一页。 484 00:23:53,120 --> 00:23:58,180 >> 你可以只启动一个会话,然后 使用$ _SESSION保存之类的东西 485 00:23:58,180 --> 00:24:02,320 的用户的名称,或者用户的 ID信息,等等。 486 00:24:02,320 --> 00:24:07,600 并且,该信息会保留在 $ _SESSION,直到你摧毁了会议 487 00:24:07,600 --> 00:24:09,550 一点点以后。 488 00:24:09,550 --> 00:24:12,375 >> 写作与动态网站 PHP使他们好多了。 489 00:24:12,375 --> 00:24:14,250 你的网站变得很 动态的,而你不知道 490 00:24:14,250 --> 00:24:17,670 所要做的比得更多的是什么 否则你会做只是 491 00:24:17,670 --> 00:24:18,920 与HTML这样做。 492 00:24:18,920 --> 00:24:21,630 但它需要实践, 大量的实践。 493 00:24:21,630 --> 00:24:26,897 >> 你已经知道如何用C工作, 所以跳跃到PHP是不是太靠谱。 494 00:24:26,897 --> 00:24:28,730 什么是也许有点 有些棘手的工作 495 00:24:28,730 --> 00:24:33,180 用GET和POST的新思路, 也许混合HTML和你的PHP 496 00:24:33,180 --> 00:24:34,220 在一起。 497 00:24:34,220 --> 00:24:37,570 但也意识到,互联网 是信息的一个巨大的资源库。 498 00:24:37,570 --> 00:24:41,670 和PHP的文档可 在很多地方,但也许是最 499 00:24:41,670 --> 00:24:43,354 标准地在php.net。 500 00:24:43,354 --> 00:24:45,520 你可以找到在那里, 很多不同的功能, 501 00:24:45,520 --> 00:24:48,330 并使用的情况下,和实施例 当例子,在例子。 502 00:24:48,330 --> 00:24:51,340 在那里,如果你想尝试和数字 如何做一些事情,赔率是, 503 00:24:51,340 --> 00:24:52,964 之前,有人可能是做到了。 504 00:24:52,964 --> 00:24:55,840 你可以用它们作为 灵感来实现什么 505 00:24:55,840 --> 00:24:58,230 这是你要实现了。 506 00:24:58,230 --> 00:24:59,230 >> 我是道格·劳埃德。 507 00:24:59,230 --> 00:25:01,210 这是CS50。 508 00:25:01,210 --> 00:25:02,608