[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]