1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [PHP Web开发] 2 00:00:03,000 --> 00:00:05,000 [汤米MacWilliam] 3 00:00:05,000 --> 00:00:07,000 [这是CS50。] [CS50.TV] 4 00:00:07,000 --> 00:00:11,000 >> 在这段视频中,我们将了解如何使用PHP的Web开发。 5 00:00:11,000 --> 00:00:14,000 PHP是一种脚本语言,可以用来实现 6 00:00:14,000 --> 00:00:17,000 在Web服务器上的网站。 7 00:00:17,000 --> 00:00:21,000 Web服务器本质上是一个机器,致力于提供内容 8 00:00:21,000 --> 00:00:24,000 可以通过因特网来访问。 9 00:00:24,000 --> 00:00:30,000 当你浏览到像Facebook.com / home.php网页 10 00:00:30,000 --> 00:00:35,000 它过着Facebook的Web服务器上的某个地方调用的文件home.php代码 11 00:00:35,000 --> 00:00:38,000 该服务器上会被执行。 12 00:00:38,000 --> 00:00:41,000 这段代码很可能会产生一些输出 13 00:00:41,000 --> 00:00:43,000 这将反过来被从服务器发送 14 00:00:43,000 --> 00:00:45,000 您的Web浏览器。 15 00:00:45,000 --> 00:00:49,000 我们将使用CS50家电作为Web服务器。 16 00:00:49,000 --> 00:00:51,000 你的机器可能不会是几乎一样强大的机器 17 00:00:51,000 --> 00:00:57,000 在Facebook的数据中心,但你会使用它的web开发都没有问题。 18 00:00:57,000 --> 00:01:05,000 >> 当我们导航到一个URL是http://localhost/hello.php 19 00:01:05,000 --> 00:01:10,000 我们通过一个叫做Apache的HTTP服务器应用程序配置设备 20 00:01:10,000 --> 00:01:19,000 寻找一个名为hello.php的家/ jh​​arvard /虚拟主机/ localhosts / HTML里面的默认文件。 21 00:01:19,000 --> 00:01:23,000 如果该文件存在,那么Apache将使用PHP解释器 22 00:01:23,000 --> 00:01:27,000 执行PHP代码中的hello.php。 23 00:01:27,000 --> 00:01:31,000 如果这个文件不存在,那么Apache将抛出一个未找到错误 24 00:01:31,000 --> 00:01:36,000 或404错误,你在浏览网页可能已经见过。 25 00:01:36,000 --> 00:01:40,000 >> 让我们来看看的hello.php。 26 00:01:40,000 --> 00:01:45,000 我们可以在这里看到的hello.php产生输出信号线。 27 00:01:45,000 --> 00:01:51,000 当我们通过PHP的hello.php跑去的hello.php在命令行 28 00:01:51,000 --> 00:01:54,000 该输出被输出到终端。 29 00:01:54,000 --> 00:01:58,000 通过在Web浏览器的URL现在,当我们访问这个文件 30 00:01:58,000 --> 00:02:01,000 其输出将被发送到web浏览器, 31 00:02:01,000 --> 00:02:09,000 所以前往该URL,http://localhost/hello.php, 32 00:02:09,000 --> 00:02:12,000 我们可以看到在我们的网页浏览器的输出。 33 00:02:12,000 --> 00:02:17,000 >> 让我们尝试添加其他的printf对我们的Hello World程序。 34 00:02:17,000 --> 00:02:23,000 好吧,让我们头回给Web浏览器,看看我们有什么。 35 00:02:23,000 --> 00:02:25,000 有意思的。 36 00:02:25,000 --> 00:02:28,000 而不是打印在自己的行另一条线,你会看到 37 00:02:28,000 --> 00:02:32,000 在终端,它看起来像它得到了smushed到同一行 38 00:02:32,000 --> 00:02:36,000 作为其他的printf,所以也许新线不PHP中工作。 39 00:02:36,000 --> 00:02:38,000 不完全是。 40 00:02:38,000 --> 00:02:41,000 请记住,HTML通常用于制作网页 41 00:02:41,000 --> 00:02:44,000 可以通过Web浏览器来显示。 42 00:02:44,000 --> 00:02:49,000 不仅是字符串hello从PHP无效的HTML, 43 00:02:49,000 --> 00:02:53,000 但记得,我们不能使用HTML \ n字符 44 00:02:53,000 --> 00:02:55,000 创建一个换行符。 45 00:02:55,000 --> 00:03:01,000 而不是简单地输出一个字符串,让我们输出有效的HTML。 46 00:03:01,000 --> 00:03:04,000 通过使用我们每一个printf的调用段落标签 47 00:03:04,000 --> 00:03:07,000 将在自己的行显示, 48 00:03:07,000 --> 00:03:11,000 所以现在当我们访问该URL指向valid.php 49 00:03:11,000 --> 00:03:17,000 http://localhost/valid.php 50 00:03:17,000 --> 00:03:19,000 我们看到,我们正在寻找的输出。 51 00:03:19,000 --> 00:03:22,000 >> 现在,如果我们把这个页面的源代码 52 00:03:22,000 --> 00:03:25,000 我们可以看到,我们现在在寻找有效的HTML, 53 00:03:25,000 --> 00:03:28,000 我们从PHP创建。 54 00:03:28,000 --> 00:03:31,000 把我们所有的HTML里面的printf调用 55 00:03:31,000 --> 00:03:34,000 当然是要得到真烦人。 56 00:03:34,000 --> 00:03:38,000 幸运的是,我们可以很容易地混合使用HTML和PHP 57 00:03:38,000 --> 00:03:41,000 在相同的。php文件。 58 00:03:41,000 --> 00:03:47,000 请记住,我们所有的PHP代码必须在<?php的围封 59 00:03:47,000 --> 00:03:49,000 和?>。 60 00:03:49,000 --> 00:03:52,000 是不是这些定界符括起来什么 61 00:03:52,000 --> 00:03:55,000 将简单地被送到作为输出到浏览器 62 00:03:55,000 --> 00:03:57,000 而不是被执行。 63 00:03:57,000 --> 00:04:01,000 这意味着我们可以做这样的事情。 64 00:04:01,000 --> 00:04:05,000 我们可以简单的我们。php文件里面写HTML 65 00:04:05,000 --> 00:04:11,000 然后插入PHP块中的地方,我们想执行一些PHP代码。 66 00:04:11,000 --> 00:04:15,000 在这里,我们在文件的顶部定义几个变量, 67 00:04:15,000 --> 00:04:19,000 后来我们把它们打印出来我们的HTML里面。 68 00:04:19,000 --> 00:04:27,000 现在,如果我们访问这个URL,http://localhost/mixed.php 69 00:04:27,000 --> 00:04:33,000 我们可以看到我们的HTML里面我们评估的PHP。 70 00:04:33,000 --> 00:04:36,000 >> 现在让我们来看看我们如何能够传递数据 71 00:04:36,000 --> 00:04:39,000 在我们的各种PHP页面。 72 00:04:39,000 --> 00:04:51,000 与其说 73 00:04:51,000 --> 00:04:58,000 我们可以简单地说<?=我们想要打印的变量,或者, 74 00:04:58,000 --> 00:05:01,000 和?>。 75 00:05:01,000 --> 00:05:03,000 现在让我们来看看我们如何能够传递数据 76 00:05:03,000 --> 00:05:06,000 在我们的各种PHP页面。 77 00:05:06,000 --> 00:05:11,000 我们可以做到这一点的方法之一是信息编码成一个页面的URL。 78 00:05:11,000 --> 00:05:14,000 当浏览网页时,你可能已经注意到,一些网址 79 00:05:14,000 --> 00:05:20,000 包含一个?其次是含有&符号和等号的字符串。 80 00:05:20,000 --> 00:05:23,000 URL的这一部分被称为查询字符串 81 00:05:23,000 --> 00:05:29,000 这可以让你有效地将参数传递到你的PHP脚本。 82 00:05:29,000 --> 00:05:34,000 查询字符串包含键值对,就像一个哈希表。 83 00:05:34,000 --> 00:05:38,000 等号分隔一键及其对应值 84 00:05:38,000 --> 00:05:41,000 而&符号分隔对。 85 00:05:41,000 --> 00:06:05,000 看起来像http://localhost/get.php?foo=bar&baz=qux的URL 86 00:06:05,000 --> 00:06:09,000 在查询字符串2键值对。 87 00:06:09,000 --> 00:06:12,000 关键的富映射到值吧, 88 00:06:12,000 --> 00:06:16,000 而关键巴兹映射到值QUX。 89 00:06:16,000 --> 00:06:23,000 我们可以在PHP中使用一个特殊的变量很容易地访问这些键值对, 90 00:06:23,000 --> 00:06:29,000 $ _GET。 91 00:06:29,000 --> 00:06:32,000 $ _GET是一个关联数组 92 00:06:32,000 --> 00:06:36,000 这会自动填入查询字符串数据。 93 00:06:36,000 --> 00:06:46,000 这意味着,给定这个URL $ _GET [“富”] 94 00:06:46,000 --> 00:06:49,000 将等于该字符串的酒吧。 95 00:06:49,000 --> 00:06:56,000 >> 让我们来看看get.php看到$ _GET在行动。 96 00:06:56,000 --> 00:07:00,000 在这里,我们使用一个名为的var_dump函数, 97 00:07:00,000 --> 00:07:03,000 这在给定一个数组或其他变量 98 00:07:03,000 --> 00:07:05,000 将它打印出来给我们。 99 00:07:05,000 --> 00:07:12,000 现在,如果我们简单地访问http://localhost/get.php 100 00:07:12,000 --> 00:07:17,000 然后我们会看到一个空数组,因为我们没有提供一个查询字符串。 101 00:07:17,000 --> 00:07:29,000 如果我们这样做通过http://localhost/get.php?foo=bar&baz=qux提供了一个查询字符串 102 00:07:29,000 --> 00:07:34,000 那么我们可以看到,$ _GET变量将包含 103 00:07:34,000 --> 00:07:37,000 查询字符串的键值对。 104 00:07:37,000 --> 00:07:42,000 但是,如果我们不想把我们的数据的页面的URL里面有什么? 105 00:07:42,000 --> 00:07:46,000 对于大量数据,这可能会导致一些非常丑陋的网址 106 00:07:46,000 --> 00:07:49,000 这将会使我们有光泽的网站看看跛脚。 107 00:07:49,000 --> 00:07:52,000 我们可以转而把查询字符串进入人体 108 00:07:52,000 --> 00:07:57,000 在HTTP请求,而不是请求的URL。 109 00:07:57,000 --> 00:08:02,000 然后,我们可以使用PHP的$ _POST变量 110 00:08:02,000 --> 00:08:05,000 访问键值对。 111 00:08:05,000 --> 00:08:10,000 做到这一点的方法之一是通过一个HTML表单。 112 00:08:10,000 --> 00:08:13,000 在这里,我们有一个简单的HTML表单。 113 00:08:13,000 --> 00:08:17,000 这里要注意这种形式的method属性是后。 114 00:08:17,000 --> 00:08:21,000 这告诉浏览器将表单的键值对 115 00:08:21,000 --> 00:08:25,000 入请求,而不是URL的身体。 116 00:08:25,000 --> 00:08:28,000 >> 如果我们要使用的值获得该属性 117 00:08:28,000 --> 00:08:32,000 然后表单的键值对,而不是会进入查询字符串, 118 00:08:32,000 --> 00:08:36,000 所以我们可以通过$ _GET再次访问它们。 119 00:08:36,000 --> 00:08:42,000 表单的action属性告诉浏览器发送的数据。 120 00:08:42,000 --> 00:08:46,000 在这里,我们的2输入元素都有名称属性。 121 00:08:46,000 --> 00:08:51,000 的名称属性的值将作为钥匙进入我们的数据, 122 00:08:51,000 --> 00:08:56,000 与文本输入的值将成为这些键的值。 123 00:08:56,000 --> 00:08:59,000 现在让我们来看看post.php, 124 00:08:59,000 --> 00:09:03,000 这种形式被提交到该文件。 125 00:09:03,000 --> 00:09:10,000 就像我们以前那样,我们只是显示了$ _POST变量的内容。 126 00:09:10,000 --> 00:09:18,000 >> 让我们定位到表格连同http://localhost/form.php。 127 00:09:18,000 --> 00:09:23,000 现在,当我们提交表单,我们可以看到,从form.php的数据 128 00:09:23,000 --> 00:09:30,000 传递,而不附加一个查询字符串的URL post.php。 129 00:09:30,000 --> 00:09:35,000 现在,我们已经看到了2个不同的PHP页面之间传递数据的方式, 130 00:09:35,000 --> 00:09:37,000 GET和POST。 131 00:09:37,000 --> 00:09:41,000 在我们的例子中,我们使用了2个不同类型的HTTP请求。 132 00:09:41,000 --> 00:09:45,000 正如你所期望的,一个GET请求时使用的填充我们 133 00:09:45,000 --> 00:09:51,000 从URL和POST请求$ _GET使用 134 00:09:51,000 --> 00:09:55,000 当我们填入$ _POST。 135 00:09:55,000 --> 00:09:59,000 在设计你的Web应用程序是一个很好的经验规则,使用GET请求 136 00:09:59,000 --> 00:10:03,000 当你的应用程序将只读取数据,和POST请求 137 00:10:03,000 --> 00:10:05,000 当你的应用程序将数据写入。 138 00:10:05,000 --> 00:10:09,000 例如,搜索查询将读取你的应用程序的数据, 139 00:10:09,000 --> 00:10:12,000 所以一个GET请求是有道理的。 140 00:10:12,000 --> 00:10:17,000 在另一方面,你的应用程序将通过一个类似登记表写入数据, 141 00:10:17,000 --> 00:10:22,000 所以POST请求会更有意义,这就是的一些技术概述 142 00:10:22,000 --> 00:10:26,000 我们将使用在CS50使用PHP创建网站。 143 00:10:26,000 --> 00:10:30,000 >> 我的名字是汤米,这是CS50。 144 00:10:30,000 --> 00:10:36,000 [CS50.TV]