[Powered by Google Translate] [的演练习题集7]
[Zamyla陈] [哈佛大学]
[这是CS50] [CS50.TV]
>> 大家好，欢迎演练，CS50金融。
现在，我们正式完成所有pset时，CS50
我们剩下的就只有一个这将是一个有趣的实施
一个网站，用户可以登录到CS50金融
买入和卖出股票。
>> 今天，我们将在我们的处置有几个工具。
我们要去谈论的权限。
只要你有一个Web文件夹，
你会想允许用户执行某些文件
但也只是阅读其他的，
让我们来看看权限和如何设置这些。
然后我们要看看到PHP，HTML，SQL代码。
>> 首先，权限。
当你在一个特定的目录中的终端，
然后你想要做的是你要运行的chmod命令。
这是其次是字母或数字
相应的，你基本上希望世界看到，
你看，等等。
例如，当你有一个文件夹，
那么，您希望该文件夹中的每个人都认为它是可执行的，
所以你会做什么，你可以运行命令chmod A + X
然后你的文件夹的名称。
当你有一个文件，如CSS文件或图像文件 -
像JPEG和位图之类的东西，或任何JavaScript代码 -
你想成为人人可读的，
这样的话，你要做的就是，你可以使用通配符 -
这是一个星号 -
基本上表明在CSS文件夹 - 在该文件夹中的一切 -
我会说，这将是人人可读的。
使用权限，当我们使用字母，
我们也可以用数字来代替。
所以，你看，最终当你想要的东西必须是可执行的 -
所表示的数字1 -
是可读的东西是多少，然后 -
写的是2号 -
，所以基本上这些当你想要一个组合，那么你将它们添加。
如果你想要的东西可读，可写，可执行文件，
那么你会增加4，2，1，能够让你7，
然后，只要你有一个文件夹，你想，每个人都必须是可执行的 -
以及为可读和可写的 - 那么你做，7，1，1。
这将是7你，那么其他人。
当你有规范，实际上，它会指定哪些文件夹和文件
需要搭配chmod - 特别。
例如，当你有文件夹 - 这些是7-1-1 -
当你有图像，HTML，CSS，JavaScript的，
那么这些都将是6，0，4 - 或6个，4个，4 -
PHP文件，然后将要6，0，0。
背后的想法是，用户不应该真正看到你的PHP代码，
但仅仅是能够看到的输出。
>> 太好了！移动到PHP。
简单地说，只要你想有一个PHP文件时，文件的后缀是。PHP。
您也可以混合使用HTML与PHP代码。
如果你有一个HTML文件，例如，
那么你就可以将其括在左边的角，问号，PHP -
把你的PHP代码 - 然后关闭，另一个问号和一个直角。
PHP中的变量是一个更容易比C中的​​变量处理
任何变量都在它的前面有一个美元符号，刚开始他们是弱类型的。
这意味着，你不必担心设置的东西
等于一个字符串或一个整数。
您可以只是简单的说，这是我的变量名
然后，这是它的值，
所以它会更容易处理有。
>> 另一件事是，PHP也允许你使用关联数组。
您可以简单地定义一个数组，就像你会在C
说，美元符号的名称，您的阵列等于，
然后在方括号中基本上只是在数组中的所有元素的值列表。
但是，在PHP中，你也可以做的是指定基本上是 -
它有点像一个哈希函数。
您可以指定索引 - 你打算把它称为 -
然后，对应于值。
如果你确实通过在A = 1，B = 2，C = 3，
那么你的索引数组的一个给你。
这pset的会让你暖和了一些PHP中的部分问题，
然后我们潜水到CS50融资。
>> 我们有一对夫妇 - 我们有一些功能，基本上，
在这个网站实现。
我们希望允许用户在我们的网站上注册的用户名和密码。
我们希望，让他们看报价，
，那我们就打印出了名的，报价以及目前的价格，它是在。
我们希望让他们看到一个组合，他们已经买了迄今为止的所有股份。
我们也希望让他们买股票卖给他们。
最后，我们想要让他们看到了历史
所有的交易，他们已经取得了。
然后，终于，你已经实现了这一切，
那么，你是自由的实现一个额外的功能。
我们将进入这些。
这些可以是让用户获得额外的现金存入额外的现金，
或者你可以让他们改变自己的密码，或类似的东西，
给他们发邮件的收据时，他们买进或卖出股票。
有一个有限的列表，你可以实现自己的功能，
所以这是最后一个。
>> 由于这是一个网站，你们也有很大的自由度来定制它。
我们提供一些CSS代码，但你绝对自由调整，
使它看起来更好，但背后是一个基本的功能
所以你的实际需要，包括有参考的规范。
规范，我们将要使用的设备也是一个服务器。
这将承载我们的网站对我们来说，它的本地服务器上。
如果您按照这些说明并解压缩在pset分配代码
到您的虚拟主机/本地主机文件夹，
那么你就可以访问http://localhost/在谷歌浏览器在家电，
然后你会达到你写的代码中，pset中7。
>> PSET 7自带的分布一堆代码，
并希望我们已经 - 在此之前的所有pset时 -
习惯我们读通过分配代码，
了解已经提供了哪些功能，以及我们如何能够使用
那些和我们将要实施的其他功能。
在这种情况下，我们有3个文件夹。
我们有一个HTML的文件夹，包括文件夹，文件夹和模板“文件夹。
我们将做这个pset的是一种分离的思想 -
编程思想 - 与实际视觉方面的PHP代码。
我们将有一个PHP文件，它所有的思想，读入数据库，
打印出来的东西，有，如果的报表 - 这样的事情 -
，然后将数据传递到我们的模板文件 - 或template.php文件。
什么，会做的就是读取数据，然后将其打印出来。
>> 我们可以把为“哑”，因为我们真的不希望他们的模板
被计算的东西，做了很多的工作。
我们希望我们的控制器来做到这一点。
- 一点点，让我们来看看一些分配代码。
在这里，我们有我们的index.html文件，这是很空的。
从本质上讲它做什么 - 它说，好，我会要求configuration.php文件。
我们没有看到，就在那里，但它基本上是调用configuration.php文件，
和执行。
后，这将导致投资组合。
渲染是一个函数，所以每当我们在一个控制器，
我们将调用render，我们会给它的文件，然后我们传递的数据中，
因此，它会调用在portfolio.php种传中的数据，这样的组合可以处理这个问题。
>> 而现在，在这里，我们有我们的login.php形式。
这是控制器，基本上需要照顾的日志记录中。
在这里，它会检查是否提交表单这个文件，交易确认提交。
我们来看看这表示歉意功能。
当我们要打印出一条错误消息，
我们使用的道歉，这将用户重定向到一个特定的页面
，将打印出具体的错误信息，我们表示。
持续，它会查询数据库 - 我们就会得到更多的后来。
然后你就看到，在这里，如果一个表单没有提交，那么它呈现的一种形式。
这意味着它去login_form.php的，所以让我们来看看这个。
>> login.php的是，其实我们看到的HTML交易的实际视觉方面。
在这里，我们有一个输入标签的用户名，输入的密码，
以及一个提交按钮。
这实际上是将要举行的视觉效果和HTML形式。
在这里，它说，它要提交通过一定的方法，称为后。
我们将进入方法之间的差异 -
发布与获取，也称为放的东西 -
稍后我们将进入这些方法，但本的pset的利益，
我会强烈建议您使用后。
>> 我们知道，基本上，一旦该表单被提交 -
从login_form.php -
然后，它会去行动 - login.php的 -
基本上通过这些形式在所有这些参数到login.php的。
这种形式的结果都包含在这个职位的关联数组。
后数组中的不同元素的索引
正是您在此处指定。
你说，该输入的是用户名的名称。这个名称是密码。
同样的，你的用户名作为关联数组的索引。
如果我们去的包括文件夹，我们有这个功能的文件，该文件将是非常有用的。
>> 所有这些功能都实现了你。
你并不需要具体落实这些自己，
但他们会非常有用。
我们已经道歉，正如我之前说的，基本上会打印出一个错误信息
你在一个特定的页面 - apology.php。
然后，我们有转储，因此，如果你只需要调用转储，然后通过在变量，
然后，它会带给你一个页面，显示该变量。
然后，我们已经注销，这将基本结束一个特定用户的会话。
查找将是有益的。
由于我们的报价和股票，我们将能够 -
它本质上是实时的。
我们需要知道这些股票价值是什么，
所以我们有查找功能，雅虎股票的文档处理。
一旦你看到了一定的符号的股票，它会返回到您的股票代码
以及该股票的名称和目前的价格。
这就是查找功能。
>> 然后，我们使用MySQL，
所以我们想在我们的SQL数据库执行某些查询。
我们有查询处理 - 一些抽象出来的​​一种。
我们要通过我们的SQL查询整个字符串 -
和所有的变量去 -
这是什么做的是，我们实际执行。
而不是写每次要查询出来的这一切 -
从该查询得到的结果 -
那么你可以致电查询功能，它会返回给你 -
这取决于你正在使用您的查询 -
可能是一个行与查询匹配的或类似的所有的结果。
更多关于了。
>> 最后，我们有，重定向，正如其名称所暗示的，将您重定向到一个不同的页面。
然后我们有渲染，我们将要调用几次。
当你在一个控制器，可以调用渲染到模板页
然后通过该模板​​将处理的值。
这些值可能是将要处理的输出，你要的类型
显示在模板页。
好吧。这些功能，并有更多的特定此分发代码。
我鼓励你去探索自己。
此外，该规范可能会引导你通过一些其他元素的分布代码。
下面是总结的functions.php中发现的功能。
>> 好吧。第一项任务就是让用户在网站上注册。
现在，在网站上有一个登录表单，
为您提供了几个用户的密码。
您可以使用这些用户名和登录，
但你想要让人们作出自己的用户名
并添加自己的网站。
登记的布局是非常相似的登录表单，
除了用户名是不存在的，
用户还需要提供一个新的密码，
然后通常我们有一个密码确认。
一旦用户输入的所有信息，
我们想将它们添加到我们的数据库中的用户。
我们将有一个数据库 - SQL数据库 -
我们将引用。
在该数据库中，我们将有一个表的所有用户
包含自己的用户名，密码，也多少现金。
>> 在寄存器中，我们要允许他们进入该信息。
我们希望显示形式。
我们要确保他们的密码 -
，他们进入了一个，然后也该密码匹配时，输入两次。
所有这一切都完成 - 假设这些错误检查 -
那么，我们希望这些用户添加到我们的数据库。
最后，一​​旦你已经注册了，这是很方便的，如果你不需要重新登录
一旦你注册，
所以，我们要登录他们的网站，如果他们已经注册成功。
>> 第一个任务是显示的形式，这实际上是将是 -
整个注册过程进行建模非常密切登录后
除了没有login.php的，你可能有注册页面register.php。
而是login_form.php- - 这是模板 -
你就已经登记表。
您需要添加更多的领域 - 密码确认字段 -
而不是只是一个用户名和一个密码。
接下来，我们要检查的密码是否匹配，或者是空白的。
我们的控制器 - 注册页面register.php - 这是要照顾做这些检查。
通过POST方法提交表单时，
那么所有这些变量都包含在后阵列。
你想，以确保指数的密码后数组的值
确认元素相匹配。
你想，以确保他们不为空，
你想，以确保它们是相同的。
>> 关于PHP的一个方便的事情是，我们并不需要使用字符串比较了。
我们可以使用等于等于运算符
检查字符串是否是彼此相等的。
对于错误处理，你要道歉。
要道歉，你只需调用该函数
然后指定一个要输出的消息类型。
然后，您要添加到数据库中的用户。
到现在为止，我们一直在做的只是当地交易形式的结果。
现在，我们确实希望将它们添加到我们的数据库。
对于这一点，我们首先要确保不为空的用户名。
了解，在网站上，你可以有多个用户相同的用户名，
所以你要确保当你插入到你的数据库中的东西 -
添加一个新用户 - 然后你没有得到一个预先存在的用户名之间的冲突
和用户名，用户试图提交。
对于这一点，一旦你执行一个查询 -
插入一个特定的用户与他们的密码和一个初始量的现金 -
一旦你调用查询，那么MySQL将实际返回false，如果它失败。
>> 结构的用户的用户名是一个独特的价值，
所以你不能有一个以上的。
当您尝试插入新行的用户名已经存在，
将返回错误的 - 就像一个布尔值false。
这里是一个棘手的事情，你要检查的结果是，如果您的查询结果。
如果失败的话，那么你将要检查的三等于运算符。
这实际上是要检查是否有故障或不，
而在只是一个简单的等于，等于，这将是真实的，如果该行是空的。
失败的结果，如果有一个用户名之间的碰撞
是实际的错误值。
>> 这里是你如何将插入到数据库中。
这里是，你会严格执行SQL查询。
有一件事是，你可以真正去管理您的SQL数据库的网站，
和玩耍通过手动或者输入值或行。
它将输出的SQL输出是什么。
您也可以在数据库中执行SQL命令
然后看语法可能是什么，
然后转换到查询功能，我们在pset中7，
这将是非常相似的查询，在实际运行。
>> 如果我希望我的用户表中插入新行，
然后，我会指定插入到用户，这是我的表的名称。
然后，我将指定列名。
然后，我会随着我的密码提供的值。
在我们的用户表中的密码不只是存储为字符串。
它们被存储为加密的版本，
所以你要运行的函数crypt实际的密码，
，而且会给你正确的用户数组的存储类型。
运行此将插入一个新行插入到用户表。
>> 要处理的查询功能，
我们以前在C百分号作为占位符。
同样的一个占位符，同样的概念适用于这里。
通过查询，您可以指定整个查询，
但只要你正在处理的变量作为输入到查询，
然后，而不是把他们里面 - 就像在C中的printf语句，当我们有
我们将字符串，然后在那里有一个占位符，然后在每个
逗号，指定的变量，我们有。
在这里，我们要使用我们的占位符问号标志
，然后通过每个变量中，分别按顺序的占位符 -
这些变量应该去的地方。
所以在这里，第一个问号将被替换为实际的用户名
然后第二个问号的账号和密码。
>> 最后，一​​旦你注册了它们，并将它们添加到数据库中，
然后，你要登录到网站。
我们有一个超全局变量称为会话种。
会话需要一定的id，
该标识对应于当前登录的用户
你会想要做的就是找​​到自己的用户名是什么
然后设置特定的用户ID，会话ID。
你要在这里使用的函数是一个SQL命令
从表中，将检索最后插入的ID号。
行会调用 - it'll调用的ID - it'll指定一个名称，它返回的数量。
它会调用该ID。
现在，我们已经完成了注册，我们可以将引用。
>> 报价允许用户输入的名称，一定的库存，
然后它会返回该股票的素质。
你会想在这里做的是有一个控制器和一些模板。
在这种情况下，我们将有一个控制器，这是要为我们做所有的思想。
要查找符号，然后传递值，将打印出的模板。
我们要在这里有2个模板。
我们将有1个模板，提供的表格中，用户要
输入股票名称 - 这个名字的份额。
然后我们也将要显示这些值的另一个模板。
你可以看的一个例子，如何你想有一个接受输入的形式，登录，
除了在这里，我们只需要1场。
我们不希望一个用户名和密码字段。
我们只是想让文本字段，允许用户输入某只股票的名称。
然后，你要发送的数据 - 一旦你抬起头来，股票 -
到quote_form.php。
查询将返回符号A股股票的名称，以及价格。
这些都包含在一个关联数组。
查一查的functions.php内查找功能的更多信息
者的返回类型。
>> 太好了！那么最后，你将要显示的股票信息。
您可能会想显示 - 你要访问这些变量。
一旦你的价格在一个变量 -
的名称和符号，以及 -
然后，你将要显示在模板页。
该模板的页面可以被称为，show_quote.php或东西。
你的quote.php页会导致显示的报价，然后通过在所有这些值。
然后，在你的PHP页面，你居然打印出这些值在页面的HTML方面。
你只需要使用打印功能和价格传递。
有2种方式 - 你可以将它连接点操作符，
或者使用一个占位符。
>> 最终用户将要购买和出售股票。
我们希望，让他们看到所有的股票，他们目前有一些方式。
我们会打电话给他们的投资组合。
组合，大概为每一位用户，包含了一堆行
列出了他们，然后他们有多少份额的类型。
我们现有的表 - 现在我们有一个在我们的数据库中的用户表。
它包含一个用户的用户名以及密码多少现金。
有没有真正的方式存储所有的内，他们的股票。
它不象所有的股票，我们可以插入新列。
因为我们有一个无限的数量，这将是一个很长很长的行
类型的股票，他们可以有。
所以，我们要做的是在同一个数据库，
我们将有一个用户表，但我们也将有一个投资组合表。
肯定会有联系的投资组合表的用户表，
而是投资组合表结构将有股票信息，
有多少用户拥有该股票的股份，
以及用户的特定的ID号。
您的用户表，其中有一个ID和用户名，哈希 -
这是密码，加密后的密码 -
然后的现金数额。
的ID号，将投资组合的ID号。
投资组合将有符号的股票，以及股份 -
的用户拥有该股票的股份数。
在这个组合表，基本上你将有
所有股份所拥有的所有的用户在您的网站上。
后来，只指定一个特定的用户股份 - 只有他们的投资组合 -
你会从投资组合的表检索值
是特定于该用户的ID号。
>> 当显示的组合，你要报告每个用户的投资组合中的股票。
你会想报告的股份，这些股份的价值。
，目前这些股份的价值不存储在投资组合表
因为那是要更新 - 最低 - 每一天的雅虎。
要获得这些信息，你可以不引用，从您的SQL查询。
什么样的功能，提供给我们吗？什么样的功能将得到价格是多少？
这是查找，因此使用查找一个特定的符号会给你很多信息。
它会给你3个信息 - 名称，符号，以及价格。
一旦你查找一个特定的符号，那么你可以得到的价格，
然后你就可以使用的价格，将显示在你的投资组合。
>> 投资组合也应该显示用户的当前现金余额。
那场被存储在用户表。
那么记住我们基本上有 -
我们有不同类型的PHP文件。
我们将有一个控制器，它基本上是你所有的思想。
然后我们有一个模板，该模板输出数据的处理。
你必须考虑哪些变量控制器将需要采取英寸
如果我们正在处理的组合输出的每一个名字，符号和股数，
以及当前的股票价格，
然后，你要找到某种方式，基本上通过 -
你可以通过在一个数组中的值匹配。
>> 让我们进入一个例子，你可以检索所有的股票
所拥有的一个特定的用户。
这不是买卖 - 还 - 股票的价格。
这将是运行一个查询。
将获得的符号，以及股份 -
我打电话来，此表，但在这种情况下，你会做什么？
叫什么名字的表，我们正在处理的有符号和股份
对于一个特定的用户？
这是用户或组合。
投资组合。
这将是查询的符号和股份的组合
对于一个特定的用户。
在这里，我要说，“（SELECT符号，股份TBL -
但表，而不是要取代与组合。
“去哪儿”基本上是我的条件。
我说我只想要得到的关联数组对应
这以下条件 - id等于。
然后，我把一个占位符，然后会话ID。
这是说行中的每一行。
这是一个不错的方式，而不是设置一个for循环，
遍历所有索引，然后在PHP中，你可以有一个for-each循环。
>> 如果你有一个给定的数组，那么你可以说，我现在就打电话给每一个连续的元素 -
我现在就打电话给每一个元素这个名字。
因此，对于每一个这些元素，我会打电话给他们这个，
然后我就可以做到这一点。
在对每个有实际的数组，你要叫行，每一行的行。
每次执行主体，
它会，它会更新一行行的下一个元素。
>> 现在，在买股票，
我们想要做的就是让用户希望购买的股票
和股份数额的，用户想购买，然后 - 如果他们想 -
补充说，股票的投资组合。
很显然，如果他们买了一些东西，那是怎么回事减少
他们的钱的数量，所以这会减少他们的现金。
我们将要处理，更新的产品组合以及用户表，
其中包含了现金。
但首先，你需要获得股份的实际库存量，用户希望。
对于这一点，你需要一个HTML的形式，将要求符号的股票
您要购买的股份数目。
然后你需要添加。
您需要选择特定的值。
我们已经经历这有点了，但是当你试图获取某些行 -
从SQL表中检索某些行，
这是下面的语法。
您已经选择，然后如果你指定一个明星，
，整体而言，整个行会基本上恢复。
再说，你具备条件的地方，然后指定 -
我只想要的用户名是平等的邮件，
因此它只会在用户中检索该行相对应的邮件。
>> 当一个用户要添加共享一个投资组合，
你需要检查的几个错误。
你想，以确保用户实际上可以负担得起的股票，
所以你要检查他们的现金。
在此之前，我们用星从一个SQL表中检索一整行。
但在这里，我们可以只指定，我只想要一值 -
我只想要现金。
所以在这里，它会返回现金的用户ID号为1。
如果用户已经买了某只股票，然后购买更多的该股票，
然后在你的投资组合 - 你不想要一个单独的行，
另一行包含新的交易。
您要更新量。
所有这一切的改变确实是该用户所拥有的股份数额。
如果您使用插入查询 - 只需要插入到你的投资组合中，所有的这些值 -
用户的ID号以及他们所购买的股票的象征
的股份，那么你也将要指定，好了，如果我遇到重复的键 -
在这种情况下，重复的键不仅是用户的ID，但也股票符号 -
因为你只能有 - 我们的前提是，你只能有1个行
对应到1特定符号。
因此，在重复键 - 如果你遇到了一个碰撞 -
你只是要更新其新的价值的股份。
股份相等于我们以前加，用户购买的股份数。
>> 现在，我们已经更新了投资组合表，
我们将要更新用户的现金。
这是在用户表，所以我们将要减去一定数额的现金。
据推测，这将是现金等于减去现金 - 然后一定量。
要更新的现金，你会 -
如果我想从邮件中拿走钱，然后我将运行此查询 -
“更新用户”，然后设置列的现金的现金 -
>> 如果用户名是平等的邮件，我会删除9,999美元。
但是，在这种情况下，我们不希望具体减去9999。
我们要指定，那么，我们要减去当前的股票价格
，他们所购买的股份数乘以。
>> 现在，我们已经让他们看到所有的股票，他们有，
以及买入更多的股票。
我们以前也使他们能够查看当前的股票价格。
在这里，我们要允许他们卖给他们。
首先，我们要基本显示 -
我们希望让他们看到他们有所有的股票，
所以在这里我们要显示的所有行的投资组合。
如果他们选择卖出某只股票，
然后，我们要假设他们想出售它的所有。
他们不只是要出售50％的股份，他们将出售100％。
我们可以从投资组合中删除整行。
我们可以删除给定用户的某个符号的股份。
是的语法。
>> 然后，我们要更新的现金。
我们要在他们所销售的股份数额的现金增加
乘以当前的股票价格 -
不是这个价了，他们买了它，而是他们的价格 -
目前的价格时，他们所销售的时候。
来引用当前的股票价格，
你将要使用的查询，这会给你一个股票的价格
在当前时间。
>> 现在留给我们的历史，
你想允许用户跟踪他们的交易 -
要看到，每当他们卖的东西，只要他们买了股票。
我们要指定的时间，他们在这样做，以及他们买了多少
什么股票了。
我们是否有任何指定的电流，现有的结构？
好了，我们的组合，其中显示用户的数量的股票，
为一个给定的共享。
但是，我们构建投资组合的方式，它更新时，我们买多，
而历史应该 - 如果你买了苹果，股吧，然后后来就卖出5，
那么你想看到那些分别作为单独的行动，单独的行。
鉴于该操作可视化，在我们的投资组合表
也只是特定行的更新，
所以我们可能会想另一个表。
在我们的数据库中，我们有我们的用户表，我们有我们的投资组合表，
现在我们可能要一个历史表中。
这历史表可以跟踪当前的日期，
以及特定股票的符号，以及多少股份，
然后它是什么样的行动 -
你是否在购买这些股票，或者是否进行销售。
>> 要处理的日期，有一对夫妇的方式，你可以做到这一点。
PHP有办法跟踪的日期，你可以看一下你自己。
在SQL中，你也可以使用，不论是现在或当前时间戳。这是给你的。
只要确保在用户每次购买或出售，你会被更新他们的现金
在用户表，你就可以更新的投资组合表中的行，
然后你也可更新的历史，
所以有打算是，你将调用有3个独立的SQL查询。
我们现在有一堆的功能。
>> 只是一对夫妇的提醒，在您的索引文件，你要链接到至少你的 -
但你会希望允许用户连接的buy.php页面。
这会允许一个用户 - buy.php的控制器，所以，要既
送你去 - 这就是要送你去的形式，让你看的东西。
我们有历史。我们已经记录，得到一个报价，然后销售。
这些都是你想要在最低。
在投资组合方面，投资组合的实际显示在索引页。
如果我们去索引，在这里我们看到它呈现portfolio.php的
并通过关联数组中的标题 - 基本上等于投资组合。
所以，这是控制器。
如果我们去模板portfolio.php，
那么它是 - 基本上是一个显示的画面，说，哦，这个网站正在建设中。
后来，当你传递 - 你基本上更具体的信息传递。
，而不仅仅是标题，你可能会被传递更多的东西。
一旦你有了这些值，，然后portfolio.php可以处理这些值
打印出来任何形式的秩序。
>> 一旦你实现了所有这些，你还需要实现更多的功能。
这可以允许用户更改其密码，
重设密码，如果他们已经忘记了 - 这样的密码重置，然后
，你可能还需要编辑注册，以便让他们到指定的电子邮件，
所以，如果他们忘记了自己的密码，然后他们可以得到的。
他们或许可以输入他们的用户名，然后一封电子邮件将被发送到他们的
可以重设密码的链接。
你可以拥有的东西，可以让用户获得收入
每次他们买或卖的东西，
然后终于，让他们增加现金到他们的网站。
只是为了重新回到控制器和模板的概念一点点。
你必须像一个 - 所以您在这里有一个控制器。
现在，我们正在寻找在login.php的例子。
当我们有一个控制器，基本上这将需要2例。
当我们有控制器，我们在这一块，我们也种处理
当我们有形式为好。
控制器将基本上都有独立的行动 -
如果一个表单已经提交，然后两个，如果用户到该页面
在第一次和仍需要输入该表单。
>> 我要跳这种情况下，前第一案的形式中。
在这里，我们说的方法后，如果表单已提交 -
不用担心，有点。
不要担心太多，但明白，基本上是这样的函数处理
表单是否已被提交或没有。
这种情况是真实的，如果用户提交了表单。
如果没有的话，我们会到要调用render login_form.php，然后通过在标题中。
这个称号是基本上要出现在标题中。
这基本上是说，好了 - 好了，如果用户进入的login.php
并没有实际登录的话，我想送他们到该表单的页面，有
这使得他们能够输入用户名和密码。
然后我去login_form，然后有实际的形式。
然后，一旦用户提交该表单时，他们将提交到login.php的
与POST方法。
实际上，我进入这个部分，我的if-else循环。
然后，它在这里，我们处理输入到表单中的值。
在这里，我们处理这些。
>> 然后，一旦你处理这些值 - 如果你正在处理的 -
说我们正在处理的quote.php页面，可以输入一个股票
他们想看看，然后看到显示 -
这是一种类似在这里。
在这里，我们有一个登录表单 - ，you'd可能有一个报价表 -
但然后一旦用户已实际提交该信息，
那么你会希望控制传递到另一个模板
，将显示他们的实际信息。
在这里，那么正确，那么你就可能 -
您的病情年底左右 - 如果该方法等于后 -
然后你可能会想要呈现的另一页 - 展会报价 -
发送到该页面 - show_quote.php -
然后在该文件中引用这些值。
这是否有意义吗？
>> 我们有一个控制器，基本上与2例 -
您是否已经进入或没有的一种形式。
如果你还没有进入的一种形式，
然后将您重定向到该窗体，然后把你返回到该页面。
然后，一旦你有在控制器的信息，该机构将处理
必要的信息 - 无论是值的股票，
，那么，当它抬头一看这些价值观，并有一个很好的格式化阵列，
那么可以通过该数组的模板页面
该输出该信息。
>> 同样，因为它的网络，它将会很有趣。
我们的C之外，所以我们不仅限于ASCII字符，而终端输出，
因此，有乐趣与此有关。
你可以把它作为视觉的，只要你想。
您可以允许用户输入数百万美元的时间，
或限制他们真正的意思，并让他们只一次进入1分钱
或类似的东西。
一定会确保有乐趣。
>> PHP代码是简单一点的，因为它更容易一些伪代码
到实际的实现。
因此，绝对有乐趣，因为它实际上是我们的最后一块CS50。
考虑到这，这是演练7。
一旦你看完演练，完成你的pset中，
那么这些也pset的，和我们现在是在最终产品 -
后我们通过测验1。
希望你能使用的工具，你所学到的pset时 -
不仅是语法，但更多的是抽象的概念，如何采取一定的 -
喜欢，我要做到这一点，那么实际执行。
学习如何奋斗通过语法和分布代码。
阅读其他人的代码，然后解释，使用预先存在的功能。
>> 所以，运气好的话，最后的pset。
这是一个很高兴导致的演练。
我希望他们已经对你有所帮助。
这些演练，非常感谢。
[CS50.TV]