[Powered by Google Translate] [PHP Web开发]
[汤米MacWilliam]
[这是CS50。] [CS50.TV]
>> 在这段视频中，我们将了解如何使用PHP的Web开发。
PHP是一种脚本语言，可以用来实现
在Web服务器上的网站。
Web服务器本质上是一个机器，致力于提供内容
可以通过因特网来访问。
当你浏览到像Facebook.com / home.php网页
它过着Facebook的Web服务器上的某个地方调用的文件home.php代码
该服务器上会被执行。
这段代码很可能会产生一些输出
这将反过来被从服务器发送
您的Web浏览器。
我们将使用CS50家电作为Web服务器。
你的机器可能不会是几乎一样强大的机器
在Facebook的数据中心，但你会使用它的web开发都没有问题。
>> 当我们导航到一个URL是http://localhost/hello.php
我们通过一个叫做Apache的HTTP服务器应用程序配置设备
寻找一个名为hello.php的家/ jh​​arvard /虚拟主机/ localhosts / HTML里面的默认文件。
如果该文件存在，那么Apache将使用PHP解释器
执行PHP代码中的hello.php。
如果这个文件不存在，那么Apache将抛出一个未找到错误
或404错误，你在浏览网页可能已经见过。
>> 让我们来看看的hello.php。
我们可以在这里看到的hello.php产生输出信号线。
当我们通过PHP的hello.php跑去的hello.php在命令行
该输出被输出到终端。
通过在Web浏览器的URL现在，当我们访问这个文件
其输出将被发送到web浏览器，
所以前往该URL，http://localhost/hello.php，
我们可以看到在我们的网页浏览器的输出。
>> 让我们尝试添加其他的printf对我们的Hello World程序。
好吧，让我们头回给Web浏览器，看看我们有什么。
有意思的。
而不是打印在自己的行另一条线，你会看到
在终端，它看起来像它得到了smushed到同一行
作为其他的printf，所以也许新线不PHP中工作。
不完全是。
请记住，HTML通常用于制作网页
可以通过Web浏览器来显示。
不仅是字符串hello从PHP无效的HTML，
但记得，我们不能使用HTML \ n字符
创建一个换行符。
而不是简单地输出一个字符串，让我们输出有效的HTML。
通过使用我们每一个printf的调用段落标签
将在自己的行显示，
所以现在当我们访问该URL指向valid.php
http://localhost/valid.php
我们看到，我们正在寻找的输出。
>> 现在，如果我们把这个页面的源代码
我们可以看到，我们现在在寻找有效的HTML，
我们从PHP创建。
把我们所有的HTML里面的printf调用
当然是要得到真烦人。
幸运的是，我们可以很容易地混合使用HTML和PHP
在相同的。php文件。
请记住，我们所有的PHP代码必须在<？php的围封
和？>。
是不是这些定界符括起来什么
将简单地被送到作为输出到浏览器
而不是被执行。
这意味着我们可以做这样的事情。
我们可以简单的我们。php文件里面写HTML
然后插入PHP块中的地方，我们想执行一些PHP代码。
在这里，我们在文件的顶部定义几个变量，
后来我们把它们打印出来我们的HTML里面。
现在，如果我们访问这个URL，http://localhost/mixed.php
我们可以看到我们的HTML里面我们评估的PHP。
>> 现在让我们来看看我们如何能够传递数据
在我们的各种PHP页面。
与其说
我们可以简单地说<？=我们想要打印的变量，或者，
和？>。
现在让我们来看看我们如何能够传递数据
在我们的各种PHP页面。
我们可以做到这一点的方法之一是信息编码成一个页面的URL。
当浏览网页时，你可能已经注意到，一些网址
包含一个？其次是含有＆符号和等号的字符串。
URL的这一部分被称为查询字符串
这可以让你有效地将参数传递到你的PHP脚本。
查询字符串包含键值对，就像一个哈希表。
等号分隔一键及其对应值
而＆符号分隔对。
看起来像http://localhost/get.php?foo=bar&baz=qux的URL
在查询字符串2键值对。
关键的富映射到值吧，
而关键巴兹映射到值QUX。
我们可以在PHP中使用一个特殊的变量很容易地访问这些键值对，
$ _GET。
$ _GET是一个关联数组
这会自动填入查询字符串数据。
这意味着，给定这个URL $ _GET [“富”]
将等于该字符串的酒吧。
>> 让我们来看看get.php看到$ _GET在行动。
在这里，我们使用一个名为的var_dump函数，
这在给定一个数组或其他变量
将它打印出来给我们。
现在，如果我们简单地访问http://localhost/get.php
然后我们会看到一个空数组，因为我们没有提供一个查询字符串。
如果我们这样做通过http://localhost/get.php?foo=bar&baz=qux提供了一个查询字符串
那么我们可以看到，$ _GET变量将包含
查询字符串的键值对。
但是，如果我们不想把我们的数据的页面的URL里面有什么？
对于大量数据，这可能会导致一些非常丑陋的网址
这将会使我们有光泽的网站看看跛脚。
我们可以转而把查询字符串进入人体
在HTTP请求，而不是请求的URL。
然后，我们可以使用PHP的$ _POST变量
访问键值对。
做到这一点的方法之一是通过一个HTML表单。
在这里，我们有一个简单的HTML表单。
这里要注意这种形式的method属性是后。
这告诉浏览器将表单的键值对
入请求，而不是URL的身体。
>> 如果我们要使用的值获得该属性
然后表单的键值对，而不是会进入查询字符串，
所以我们可以通过$ _GET再次访问它们。
表单的action属性告诉浏览器发送的数据。
在这里，我们的2输入元素都有名称属性。
的名称属性的值将作为钥匙进入我们的数据，
与文本输入的值将成为这些键的值。
现在让我们来看看post.php，
这种形式被提交到该文件。
就像我们以前那样，我们只是显示了$ _POST变量的内容。
>> 让我们定位到表格连同http://localhost/form.php。
现在，当我们提交表单，我们可以看到，从form.php的数据
传递，而不附加一个查询字符串的URL post.php。
现在，我们已经看到了2个不同的PHP页面之间传递数据的方式，
GET和POST。
在我们的例子中，我们使用了2个不同类型的HTTP请求。
正如你所期望的，一个GET请求时使用的填充我们
从URL和POST请求$ _GET使用
当我们填入$ _POST。
在设计你的Web应用程序是一个很好的经验规则，使用GET请求
当你的应用程序将只读取数据，和POST请求
当你的应用程序将数据写入。
例如，搜索查询将读取你的应用程序的数据，
所以一个GET请求是有道理的。
在另一方面，你的应用程序将通过一个类似登记表写入数据，
所以POST请求会更有意义，这就是的一些技术概述
我们将使用在CS50使用PHP创建网站。
>> 我的名字是汤米，这是CS50。
[CS50.TV]