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