[MUSIC CHƠI] DAVID J. Malan: Tất cả đúng. Chào mừng trở lại. Đây là CS50. Đây là phần cuối của tuần 8. Và như bạn đã biết, chúng tôi có khá giờ làm việc thường xuyên trong một vài của nhà ăn, bao gồm Annenberg. Và một số các nhóm vui lòng chụp vài bức ảnh gần đây. Và để vinh danh Halloween, chúng tôi nghĩ rằng chúng tôi muốn chia sẻ một rằng thay vì khiến chúng tôi ngạc nhiên ở đây trong Hội trường Annenberg chỉ đêm khác. Bạn cùng lớp của bạn Jacob chụp bức ảnh này, nhưng thú vị hơn là trên Facebook, tiếp theo chuyện đã xảy ra sau đó. Bài viết đầu tiên của mình trong phản ứng để hình ảnh của mình là thế này. Một vài phút sau, ông quyết định để một mình lên với điều này. Nó đã đi vào sau đó đến này, và sau đó, thậm chí nhiều amusingly là khi mẹ anh bẽn. Và rồi cuối cùng, có vẻ như đây chỉ một mưu mẹo tuyệt vời cho một chơi đó đang xảy ra. Vì vậy, nếu bạn muốn để xem Jacob và những người khác, trong đó Cynthia Meng, những người đằng sau hậu trường của các nhân viên khu CS50, đi đến URL này và chơi ở đây. Vì vậy, không có thêm ado, hôm nay chúng tôi tiếp tục xem xét này lập trình web, và tạo ra thực tế của chương trình không chạy tại dòng lệnh của bạn, nhưng thay vì chạy bên trong trình duyệt. Có lẽ bây giờ, hoặc rất một thời gian ngắn, bạn sẽ để được ở giữa thực hiện máy chủ web của riêng bạn, là khác nhau từ lập trình web. Các máy chủ web trong pset6 là tất cả về viết phần mềm mà biết làm thế nào để Các yêu cầu HTTP từ một trình duyệt, hoặc thậm chí từ bạn, một con người, với một chương trình được gọi là Telnet, và sau đó trả lời những yêu cầu hoặc bằng cách phun ra một tập tin HTML, hoặc một jpeg, gif hoặc một, hoặc thậm chí một file .php. Nhưng với một máy chủ web, nó không phải chỉ cần mở một file PHP, một cái gì đó kết thúc bằng php, và sau đó nhổ ra nội dung. Đó là nghĩa vụ phải làm những gì đến tập tin đầu tiên? Vì vậy, để nói chuyện. Không phải biên dịch nó, chúng tôi đã nói vào hôm thứ Hai, nhưng rather-- Vì vậy, giải thích nó. PHP là một ngôn ngữ diễn giải, và như vậy một trong những tính năng quan trọng trong web của bạn máy chủ, mặc dù thực hiện của chúng tôi, Khả năng này cho máy chủ web của bạn để ý, oh. Đây là một tập tin kết thúc bằng php. Hãy để tôi không chỉ gửi cho người sử dụng như nội dung của nó tĩnh, nhưng thà tôi đọc nó dòng bởi dòng, trái sang phải, và giải thích nó. Và để làm, mà bạn kẻ sẽ cơ bản đá trái banh để một chương trình trong thiết bị, và trên rất nhiều hệ thống máy tính, chỉ cần gọi là PHP. Đó là tên của PHP thông dịch viên riêng của ngôn ngữ. Vì vậy, phần mà chúng tôi thực hiện cho bạn, và những gì còn lại cho bạn, cuối cùng, là một con số mảnh, trong đó đang triển khai hỗ trợ cho nội dung tĩnh. Nhưng bây giờ, và với vấn đề thiết lập bảy, bạn sẽ bắt đầu chuyển đổi sang thực sự viết code PHP mà được giải thích nói chuyện với một kết thúc trở lại cơ sở dữ liệu lưu trữ thông tin. Vì vậy, hãy hiểu đầu tiên tốt hơn một vài trong số này superglobals và chỉ cần bao nhiêu năng lượng bạn có được ra khỏi hộp miễn phí với một ngôn ngữ như PHP. Những điều bạn không có để thực hiện chính mình. Vì vậy, chúng ta đã thấy hôm thứ hai $ _GET, mà là một superglobal, mà chỉ là PHP nói cho một toàn cầu biến mà bạn có thể truy cập bất cứ nơi nào. Và những gì bên trong của $ _GET? Có gì bên trong này superglobal mà chúng ta thấy? Chắc chắn thống kê ở ít nhất một người biết. Có gì bên trong của $ _GET? Yeah? Đung Đó là các biến bạn đặt trong chuỗi truy vấn. DAVID J. Malan: Hoàn hảo. Đó là các biến bạn đặt trong chuỗi truy vấn. Vì vậy, trong ví dụ cũ của chúng tôi reimplementing Google khi chúng tôi đã có một URL, và sau đó dấu hỏi, mà demarcates bắt đầu của HTTP các thông số, sau đó chúng tôi đã có q bằng một cái gì đó, giống như q bằng mèo, những gì tự động sẽ đi vào bên trong rằng $ _GET siêu toàn cầu cho bạn, vì PHP, là chìa khóa của Q, và giá trị của chúng thuộc mèo. Nói cách khác, $ _GET và tất cả các những điều này là mảng kết hợp, bảng băm của các loại, mà cửa hàng khóa và giá trị. Bây giờ, trở lại trong pset5, băm bảng bạn có thể đã thực hiện, hoặc bạn có thể thử đã triển khai, thực sự là một kết hợp hiệu quả mảng, một cấu trúc dữ liệu nhờ đó mà bạn có thể kết hợp phím với các giá trị. Nhưng trong pset5, các giá trị là tầm thường. Các giá trị cơ bản là đúng hay sai. Là các từ trong từ điển? Vì vậy, khi bạn băm một từ như táo để xem quả táo có trong từ điển, chức năng kiểm tra của bạn có lẽ trở về đúng hoặc sai. Vì vậy, đó là hiệu quả giá trị chúng tôi nhận được trở lại. Nhưng chúng tôi thấy hôm thứ Hai một thời gian ngắn, bạn có thể chắc chắn kết hợp thú vị hơn giá trị hơn là chỉ đúng hay sai với các phím, giống như quả táo. Bạn thực sự có thể trở lại một chuỗi tùy ý, và quả thật, đó là những gì $ _GET và các các biến số khác cho phép bạn làm. Vì vậy, $ _POST là tinh thần tương tự, nhưng nếu bạn gửi một hình thức qua bưu điện, một phương thức HTTP khác nhau đó là sử dụng cho những thứ như thẻ tín dụng, và thông tin cá nhân, và thậm chí thông tin nhị phân như hình ảnh, những điều kết thúc bên trong của $ _POST. Và thực sự cho các tập tin như JPEG và không có điều gì, thậm chí còn có một đó là không ở đây được gọi là $ _FILES là tốt. Vì vậy, máy chủ, chúng tôi sẽ không dừng lại ở quá nhiều, nhưng nó cung cấp cho bạn truy cập để sắp xếp các chi tiết mức thấp hơn khoảng máy chủ chính nó mà bạn đang sử dụng. Cookie và session, mặc dù, chúng tôi sẽ có hiệu quả nhìn thấy bây giờ. Cuối cùng là những gì chúng tôi sử dụng để thực hiện khái niệm về một giỏ mua hàng. Một một siêu đơn giản, nhưng thu hồi rằng chúng tôi đã có ví dụ này ở đây, đếm bao nhiêu lần bạn đã viếng thăm trang này trước khi. Nhưng ngày hôm nay, chứ không phải là chỉ cần nhìn vào ảnh hưởng của điều này, chúng ta hãy mở ra Chrome của Thanh tra, mà bạn có thể thường làm bằng cách click chuột phải hoặc Control cách nhấn vào bất cứ nơi nào trên một trang web, và sau đó chọn kiểm tra nguyên tố. Hoặc bạn có thể đi qua các menu mà chúng tôi mô tả trong spec pset6 của. Và tôi sẽ sang tab Network ở đây, và chúng ta hãy xem một lúc lưu lượng truy cập HTTP đó là đi tới đi lui. Hãy để tôi đầu tiên đi trước và bộ nhớ cache rõ ràng của Chrome. Vì vậy, một số bạn có thể quen với kỹ thuật này đã có, và chúng ta sẽ sử dụng nó cho mục đích gỡ lỗi ở đây. Bây giờ chúng ta như máy tính các nhà khoa học sẽ bắt đầu làm điều này để gỡ lỗi mục đích, theo đó chúng tôi sẽ xóa bộ nhớ cache, thường, do đó chúng tôi có thể loại bỏ những thứ gọi là cookie. Vì vậy, có lẽ bạn đang nói chung quen thuộc với những gì các cookie, hoặc ít nhất là rằng chúng tồn tại, nhưng những gì sự hiểu biết của bạn về họ, như chỉ là một người sử dụng máy vi tính, một cookie là gì? Yeah. Đung Đó là một chút of-- tốt, không bit trong một thuật ngữ khoa học máy tính. Đó là một phần của dữ liệu mà một trang web sẽ gửi cho bạn để để có thể ghi lại các số liệu thống kê về bạn. DAVID J. Malan: OK, tốt. Vì vậy, nó là một mảnh của dữ liệu mà một máy chủ, đặt vào máy tính của bạn, và chúng ta hãy khái quát nó thậm chí hơn, nó là một khóa value-- tốt, đó là nhận được chính xác hơn. Nó là một phần của thông tin, một phần dữ liệu, rằng một máy chủ có thể để đưa vào máy tính của bạn và rất thường xuyên, máy chủ không này để nhớ bạn là ai. Vì vậy, ví dụ, tỷ lệ cược là bạn có thể đăng nhập vào các trang web như Facebook, hoặc Gmail, hoặc những người khác trước, và bạn đăng nhập với bạn username và password, và sau đó sau đó, đối với một số số phút hoặc vài giờ hoặc thậm chí cả ngày, máy chủ nhớ rằng bạn đang có, trong thực tế, đăng nhập. Bây giờ, làm thế nào là thực sự xảy ra? Bởi vì bạn chắc chắn không phải gõ lại tên đăng nhập và mật khẩu của bạn mỗi khi bạn điều hướng đến một trang khác nhau trên Facebook. Vì vậy, nó quay ra Cookies là câu trả lời. Một cookie bạn có thể nghĩ như, loại thích, một tay kỹ thuật số tem mà bạn có thể nhận được tại một giải trí công viên hay một câu lạc bộ mà chủ yếu chỉ ra bạn đã ở đây trước, và bạn đã đã thể hiện ID của bạn để bouncer, cho Chẳng hạn, và rằng các câu lạc bộ hoặc công viên Bây giờ giả sử rằng bạn đã chứng thực rồi. Bạn đã được xác định bởi nó. Vì vậy, với ý nghĩ đó, chúng ta hãy mở truy cập ở đây. Hãy để tôi đi trước, tôi chỉ cần làm, và xóa tất cả các cookie của tôi. Và bây giờ những gì tôi sẽ làm là giữ phím Shift, chỉ cần cho các biện pháp tốt, và buộc phải tải lại trang. Chuyển chỉ cần đảm bảo rằng không có gì được lưu trữ. Và đây là yêu cầu mà đi tới đi lui. Vì vậy, ở đây chúng ta có một yêu cầu, và để cho tôi phóng xuống đây, và rất nhiều này là chi tiết loại nhàm chán cho bây giờ mà trình duyệt có tự động gửi đi, nhưng chúng ta hãy click View Nguồn để xem các tiêu đề liệu. Và nếu bạn đã nhảy vào pset6 đã, bạn chắc chắn sẽ nhận ra điều như thế này, và có thể một số của những dòng khác ở đây, nhưng những gì thú vị hơn cho ngày hôm nay nếu tôi di chuyển xuống, không phải để yêu cầu nhưng để được gọi là phản ứng, dòng này trông có vẻ quen thuộc. Đó là một điều tốt khi bạn nhìn thấy một 200 OK. Rõ ràng điều này là ngày và thời gian trên máy chủ và có một loạt các công cụ. Oh, đây là thú vị. Hóa ra bất cứ khi nào bạn sử dụng PHP, ít nhất là trong máy chủ này, máy chủ spits ra gì phiên bản của PHP bạn đang sử dụng. Trong đó, trên thực tế, đảm bảo an ninh mục đích, không phải là một điều tốt. Tuy nhiên, chúng tôi sẽ quay trở lại mà một số khác có lẽ thời gian. Nhưng bây giờ điều này là dòng ngon ngọt ngày hôm nay, và chúng ta đã thấy một thời gian ngắn một số trong số này, Tôi nghĩ rằng với Facebook khi chúng ta chọc xung quanh thanh tra tại thời điểm đó, bộ cookie là những gì được trồng mà ít mẩu thông tin vào máy tính của bạn. Đây là một tiêu đề HTTP đó là hiệu quả nói cho trình duyệt của bạn, Chrome, IE, bất cứ điều gì, hey trình duyệt cửa hàng trên của người sử dụng ổ cứng, hoặc trong bộ nhớ RAM của người dùng, một phím gọi là PHPSESSID, mà là một ký hiệu viết tắt cho session ID, và cung cấp cho nó một giá trị 0vlk8t, dấu chấm, dấu chấm, dấu chấm. Một giả thực sự lâu dài ngẫu nhiên chuỗi chữ số. Nó chỉ là một số thực sự lớn, nhưng nó được mã hóa với chữ cái và số do đó kích thước của nó có thể được thậm chí còn lớn hơn con số. Và sau đó, bằng cách này, Path = /, mà chỉ có nghĩa là cookie này nên liên kết với các toàn bộ các trang web, không chỉ là một cụ thể trang toàn bộ điều. Vì vậy, đây là dấu tay ảo. Nó như thể máy chủ, Facebook, hoặc trong trường hợp của chúng tôi các thiết bị, có 0vlk8t nghĩa bằng văn bản và vv, trên bàn tay của bạn. Chú ý những gì các máy chủ, không làm là nó không lưu trữ username của tôi, chắc chắn không lưu trữ mật khẩu của tôi. Thay vào đó, nó dường như là lưu trữ thông tin giả ngẫu nhiên để không ai có thể đoán những dấu tay của tôi là. Về phía server, Trong khi đó, máy chủ là sẽ nhớ, có lẽ trong một cơ sở dữ liệu hoặc một cái gì đó, mà người sử dụng, người trong tương lai trình bày một dấu bàn tay của 0vlk8t, chấm, dot, dot, nên kết hợp với này giỏ mua hàng đặc biệt, vì vậy để nói chuyện. Nói cách khác, nếu bây giờ tôi đi trở lại đây và tải lại trang này, làm thế nào để biết máy chủ mà tôi đã đến thăm một thời gian? Hoặc nếu tôi làm điều đó một lần nữa, làm thế nào các máy chủ biết rằng tôi đã đến thăm nó hai lần? Vâng, nếu tôi đi xuống này hầu hết các yêu cầu gần đây, bây giờ là thứ ba mà tôi đã gửi trong tổng số, chú ý yêu cầu của tôi bây giờ. Vẫn còn điều này có yêu cầu lên đây, cùng như trước đây, vẫn còn cả một bó các công cụ mà chúng tôi đã bỏ qua như trước, nhưng tiêu đề cuối cùng, điều này thời gian, bởi vì tôi đã ở đây trước, là một bài thuyết trình của dấu tay ảo này. Nhờ đó mà dòng này ở đây, không thiết lập cookie nhưng Cookie ruột PHPSESSI = 0vlk8t, đó chỉ là trình duyệt của tôi tự động trình bày các dấu tay này để bây giờ máy chủ, ngay khi nó nhận ra, ooh, đây là người sử dụng 0vlk8t dấu chấm, dấu chấm, dấu chấm, Tôi bây giờ có thể nhớ anh hoặc cô ấy là ai và reassociate với người sử dụng mà bất cứ điều gì thông tin mà tôi muốn, và tất cả các thông tin có thể được lưu trữ của bạn, các lập trình viên, trong $ _SESSION. Vì vậy, để được rõ ràng, nếu tôi mở ra thật nhanh chóng trong gedit tập tin thực tế, counter.php, trong thư mục công cộng chủ địa phương của tôi như trước đây, nhận thấy rằng, quả thật vậy, Tôi cuối cùng lưu trữ trong $ _SESSION Quote unquote "counter" giá trị của bộ đếm trước đây Tôi nhận được từ những dòng này lên đây mà chúng ta nhìn lần cuối cùng cộng với một. Vì vậy, bên dưới mui xe, đó là tất cả các cookie. Nó chỉ là loại kỹ thuật số dấu tay đi tới đi lui, và thẳng thắn nếu bạn mở Chrome Thanh tra trên bất kỳ trang web bạn truy cập vào ngày hôm nay, với siêu xác suất cao, bạn sẽ thấy có thể một, có lẽ nửa tá cookie được nhớ đến bạn. Và tệ hơn nữa, nếu những trang web bạn đang truy cập tất cả đều có quảng cáo, mà chắc chắn là khá phổ biến ngày hôm nay, và nếu những quảng cáo đang đến từ một số Trung ương Đảng, một người nào đó như Google hoặc AdWords như họ gọi một trong các sản phẩm của họ hoặc nhà cung cấp khác như vậy mà bán quảng cáo, những gì là thú vị, và thẳng thắn những gì là một chút đáng lo ngại, về cách thức HTTP công trình, là nếu bạn có một quảng cáo nhúng tại Facebook.com và Google.com, và Harvard.edu, bất kỳ số các trang web, vì vậy nó là như vậy rằng có một người đàn ông trung người đang phục vụ up quảng cáo cho tất cả ba của những trang web, nó chỉ ra rằng Cookies là mỗi miền. Vì vậy, nếu bạn có một quảng cáo đến từ các cùng một công ty trên các trang web khác nhau, công ty hiệu quả có thể theo dõi những người bạn trên tất cả các trang web đó. Harvard có thể không biết bạn đang truy cập Facebook. Facebook có thể không biết và bạn đang truy cập Harvard. Tuy nhiên, dịch vụ quảng cáo bất cứ điều gì họ đang sử dụng nếu tên miền đó là hiện diện trong cả hai web Harvard.edu trang Facebook.com và các trang web, người đàn ông trung này chắc chắn sẽ biết bạn là ai vì các tập tin cookie được chia sẻ qua, hay đúng hơn là để, rằng cái gọi là trung gian. Vì vậy, chúng tôi sẽ trở lại vấn đề này Vấn đề bảo mật của chúng, nhưng có rất nhiều thông tin được lưu trữ về bạn bất cứ lúc nào bạn ghé thăm hầu hết bất kỳ trang web trên Internet và nó thực sự làm giảm cơ chế rất đơn giản này. Điều gì xảy ra, sau đó, nếu bạn siêu hoang tưởng và bạn quyết định đi vào Chrome hay IE hoặc bất cứ điều gì và tắt cookie của bạn? Điều gì xảy ra? Yeah? Bạn really-- bạn đã thực hiện này phải không? OK. Không, đi trước. Đung Một số trang web không có một chức năng mà không có nó như Facebook. DAVID J. Malan: Yeah! Vì vậy, các trang web nhất định chỉ sẽ ngừng làm việc. Và trong hầu hết các trang web những ngày này rằng về cơ bản dựa vào cookies, đặc biệt là nếu họ có bạn đăng nhập tại, chúng tôi chỉ đi để phá vỡ. Bởi vì xem xét thay thế, nếu trang web không có cách nào ghi nhớ bạn là ai, và do đó trình duyệt web của bạn không phải là đại diện với tất cả các HTTP yêu cầu của dấu tay này, hiệu quả một trang web như đang diễn ra của Facebook phải nhắc bạn đăng nhập mỗi khi darn bạn thay đổi trang, hoặc nhấp vào một liên kết, mà là chắc chắn không phải là một người sử dụng đặc biệt tốt kinh nghiệm. Vì vậy, mà ở đó, cũng là một trong những đánh đổi thương mại. Vì vậy, không có thêm ado, chúng ta hãy cho các cấp rằng với lập trình web, các ngôn ngữ như PHP, bạn có thể nhớ thông tin như thế trong vấn đề thiết lập bảy khi bạn thực hiện của riêng bạn Trang web E * Trade-như mà mua và bán cổ phiếu, bạn sẽ nhớ chính xác những gì người dùng đã mua và bán và anh ta hoặc cô ấy là ai bằng cách phiên này. Nhưng chúng ta sẽ cần một cách sành điệu hơn email để bắt đầu giữ thông tin xung quanh. Phải không? Hôm thứ Hai, chúng tôi nói chuyện về Frosh nhắn tức thì và làm thế nào trong phiên bản một trong những trang web đó, năm trước đây, tất cả chúng ta đã làm được gửi email cho Proctor ai phụ trách và thể thao chương trình, tên và giới tính, và có hay không họ là một đội trưởng, và ký túc xá của một ai đó đăng ký cho một môn thể thao thể thao trong. Vì vậy, nó không phải là xấu, nhưng anh ta hoặc cô sau đó phải troll qua email của họ, tạo bảng tính hoặc một cái gì đó như rằng, để giữ cho tổ chức tất cả mọi thứ. Vì vậy, chắc chắn chúng ta như lập trình có thể làm điều này cho giám thị đó. Và như vậy nhập vào SQL, Structured Query Language, đó là sẽ trông khá khác nhau để cả hai C và PHP, và bạn sẽ nhảy vào nhiều hơn nữa tay trên PHP và vấn đề thiết lập bảy nhưng cũng SQL, hoặc SQL, đây là một ngôn ngữ bạn sử dụng để nói chuyện với một cơ sở dữ liệu. Tuy nhiên, một cơ sở dữ liệu là gì? Vâng, bạn nghĩ về một cơ sở dữ liệu, ít nhất là cho bây giờ, như chỉ là như một tập tin Excel, hoặc nếu bạn là một máy Mac số người sử dụng một tập tin, hoặc nếu bạn là một Google Apps sử dụng một bảng tính Google, nó có hiệu quả cơ sở dữ liệu, hoặc thực sự đặc biệt là một cơ sở dữ liệu quan hệ. Một cơ sở dữ liệu quan hệ chỉ là cái gì đó có hàng và cột, và bạn có thể lưu trữ bất kỳ loại thông tin trong các hàng hoặc cột. Nhưng những gì là tốt đẹp về SQL, và về cơ sở dữ liệu thực tế, không chỉ bảng tính hoặc bảng tính của Google, là bạn có thể sử dụng một ngôn ngữ để thực sự thực hiện truy vấn để chèn dữ liệu, để loại bỏ dữ liệu, để tìm kiếm dữ liệu, thậm chí Quan trọng nhất, và bạn không cần phải sử dụng nó khá thủ công như bạn có thể thường là một Google bảng tính như thế này. Vì vậy, trong SQL, có một loạt các báo cáo cơ bản, miếng chức năng được xây dựng trong. Có nhiều hơn này, nhưng bạn có thể đi một khoảng cách rất lớn chỉ cần biết rằng ngôn ngữ này được gọi là SQL có ít nhất bốn báo cáo bạn có thể tận dụng. Xóa, để loại bỏ dữ liệu, Chèn, để thêm hàng, Cập nhật, để thay đổi hàng, và Lựa chọn, cho nhận lại hàng và đó là những gì thực sự SQL không. Nó hoạt động hoàn toàn trên các hàng để rằng khi bạn chèn, hoặc loại bỏ, hoặc cập nhật, hoặc chọn những gì bạn đang nhận được trở lại như một cái gọi là tập hợp kết quả, giống như một mảng của hàng. Một loạt các hàng từ một bảng. Vì vậy, trở lại trong ngày, và thậm chí cho đến ngày nay, bạn có thể tương tác với các cơ sở dữ liệu bằng cách sử dụng dòng lệnh, nhưng nó không phải là đặc biệt thú vị để sử dụng cửa sổ theo phong cách màu đen và trắng và thực sự thực hiện các lệnh và poke xung quanh cơ sở dữ liệu của bạn. Một giao diện người dùng đồ họa, hoặc GUI, có nhiều lợi thế hơn, tranh cãi, và do đó, các công cụ chúng tôi đề nghị và cài đặt sẵn cho bạn trên thiết bị được gọi là phpMyAdmin. Đó là một tổng ngẫu nhiên mà Tên của điều này có PHP trong nó, nó chỉ có nghĩa là người người viết chương trình này mình đã viết nó trong PHP. Nhưng đó là cuối cùng về quản lý một máy chủ cơ sở dữ liệu, giống như một máy chủ MYSQL mà bạn có thể có, như bạn làm, trong các thiết bị CS50. Vì vậy, có chi tiết hơn ở đây hơn chúng ta cần phải quan tâm đến ngày hôm nay, nhưng những gì là quan trọng mà bên trái là phía bên tay là một danh sách các cơ sở dữ liệu mà bạn có trên máy tính của bạn, trên thiết bị của bạn CS50, hoặc đến các dự án cuối cùng mà bạn có thể có trên một bên thứ ba, một công ty của trang web hoặc máy chủ web, mà bạn có thể được trả tiền cho không gian. Vì vậy, bên trái là cơ sở dữ liệu, một trong số đó là pset7 mà tôi mượn từ tiếp theo pset tuần, và sau đó trên đầu trang có nhận thấy có một loạt các tab, một trong số đó là cơ sở dữ liệu, SQL, tình trạng, người dùng, xuất khẩu và vv. Vì vậy, bạn có thể đi một chặng đường dài cách chỉ bằng cách thực hiện rằng hầu hết các giao diện người dùng ở cột bên trái và trên đầu phải lên đó. Vì vậy, những gì chúng ta có thể thực sự làm gì với điều này? Vâng, chúng ta hãy bắt đầu tạo một bit thông tin như sau. Giả sử sau đây là trường hợp, như sẽ được chỉ trong một vài ngày, bạn muốn thực hiện một trang web, gọi là CS50 Tài chính, và trang web này cho phép bạn mua trích dẫn unquote và bán cổ phiếu. Và nó sẽ tìm ra giá của những cổ phiếu, cuối cùng như bạn sẽ thấy, bằng cách nói chuyện Yahoo Finance. Trong đó, tuyệt vời, có một dịch vụ miễn phí nhờ đó mà bạn có thể vượt qua trong một mã chứng khoán như GOOG cho Google, và nó sẽ cung cấp cho bạn trở lại cổ phiếu hiện tại của Google giá trong quá khứ vài phút ít nhất. Vì vậy, bạn sẽ sử dụng rằng, cuối cùng, giả vờ cho người sử dụng mua và bán thực tế cổ phiếu sử dụng tiền ảo, nhưng điều đầu tiên người sử dụng sẽ thấy là màn hình đăng nhập này mà yêu cầu họ tên người dùng và mật khẩu của họ. Và như vậy, một trong những đầu tiên thách thức đối với bạn trong pset7 là có được thực hiện trở lại vào cuối cơ sở dữ liệu, bảng tính nếu bạn muốn, đó sẽ lưu trữ người sử dụng tên và mật khẩu và cuối cùng là những gì cổ phiếu mà họ sở hữu, và bao nhiêu, và bao nhiêu tiền họ có, do đó, một loạt các thứ khác trong bảng khác, hoặc bảng tính. Vì vậy, chúng ta hãy xem làm thế nào này có thể xuất hiện ở cái nhìn đầu tiên. Tôi sẽ quay trở lại thiết bị và tôi sẽ đi đến URL này ở đây phpMyAdmin localhost / phpmyadmin và bạn sẽ thấy rằng nó đưa tôi đến một giao diện chính xác như chúng ta đã thấy trên ảnh chụp màn hình, và ở đây tôi có một cơ sở dữ liệu thêm gọi là bài giảng cho ngày hôm nay và cho tôi đi trước đầu tiên và nhấn pset7. Tôi dường như có một vài lựa chọn, một cho mới, để tạo một bảng mới, và một liên kết cho người sử dụng, mà là một bảng tôi đã tạo ra. Vì vậy, một bảng là gì? Vì vậy, nếu bạn sử dụng Excel trước, và nếu bạn đã số được sử dụng hoặc Google Bảng tính, bạn mở một cửa sổ và bạn sẽ có được cả một bó các hàng và cột, nhưng sau đó bạn thường có bảng dọc theo phía dưới, hoặc các tab riêng biệt. Bạn có thể nghĩ của mỗi bảng tính như một bảng vì vậy cơ sở dữ liệu, cuối cùng, là một sự kết hợp của một hoặc nhiều bảng, một hoặc nhiều bảng tính, trong thế giới của một bảng tính bình thường. Vì vậy, hãy để tôi đi trước và bấm vào bảng tính này mà tôi premade, được gọi là người sử dụng, còn gọi là Bảng cơ sở dữ liệu. Và nếu tôi di chuyển xuống đây, hãy để tôi phóng to ra một chút, đây là những gì phpMyAdmin là nói chúng tôi là bên trong của bảng này ngay bây giờ. Đó là một chút bối rối lúc đầu nháy mắt bởi vì giao diện người dùng không phải là điều đẹp nhất trên thế giới, nhưng những gì là thú vị này là một phần ở đây là. ID, tên người dùng, và băm. Năm trước, và bạn sẽ có tay này trong vấn đề thiết lập bảy, chúng tôi cung cấp cho bạn một tập tin có chứa một siêu bảng cơ sở dữ liệu nhỏ, vay thực từ các ấn bản của hacker vấn đề đặt hai, bên trong đó có sáu hàng. Một cho tất cả các Belinda con đường xuống một cho Zamyla, và thông báo cho bên trái của những tên người dùng là ID duy nhất như một, hai, ba, bốn, năm, sáu, số nguyên, và sau đó bên phải là băm. Và nếu, tỷ lệ cược là, bạn đã không làm vấn đề của hacker phiên bản thiết lập hai, nhưng một hash chỉ giống như một mã hóa mật khẩu với một vài hãy cẩn thận. Và như vậy, những gì bạn thấy ở đây là các phiên bản mã hóa của tất cả sáu mật khẩu của chúng tôi từ vấn đề đặt hai phiên bản của hacker. Bây giờ bên trái chỉ là một số công cụ giao diện đồ họa, chỉnh sửa hàng này, sao chép hàng này, xóa hàng này. Nhưng điều thú vị Hiện tại là như sau. Tôi thực sự có thể bắt đầu thử nghiệm với bảng này. Vì vậy, nếu tôi đi và nhấp vào SQL tab, tôi nhận được hộp văn bản này lớn. Và điều này không phải là cách chúng ta sẽ làm điều đó khi thực sự viết code. Để được rõ ràng, phpMyAdmin chỉ là một công cụ đó là sẽ để cho chúng tôi poke xung quanh cơ sở dữ liệu và chúng ta hãy thử nghiệm với câu truy vấn. Vì vậy, ví dụ, giả sử Tôi thực hiện chính xác này. Lựa chọn, đó là một trong những từ khóa tôi đã đề cập trước đó, ngôi sao, đại diện cho tất cả các cột trong một bảng. Từ những gì bảng? Vâng, người sử dụng. Và thông báo có này ước kỳ lạ trong SQL nơi bạn thực sự sử dụng trở lại ve, thông thường, dấu ngoặc kép không đơn và dấu ngoặc kép không đôi khi bạn nói về bảng tên, do đó, các báo lại là điều trên Mặt trên bên trái của bàn phím của bạn nhất có khả năng. Vì vậy, hãy để tôi đi trước nay và chỉ để lại một mình và di chuyển xuống và bấm Go, và chúng tôi thực sự sẽ thấy điều tương tự. Chúng tôi vừa thực hiện một truy vấn SQL nói chọn tất cả mọi thứ sao từ bảng gọi là người sử dụng, và những gì bạn nhận được trở lại này là. Cuối cùng, chúng ta sẽ có thể làm điều đó tương tự trong mã, nhưng bây giờ tất cả tôi muốn làm là nhìn thấy nó trong trình duyệt của tôi. Vâng chúng ta hãy làm điều gì đó một chút khác nhau. Hãy để tôi quay trở lại tab SQL, và chúng ta hãy chỉ nói rằng những gì? Zamyla đã mất tất cả của mình tiền, và do đó nó thời gian cho chúng ta để xóa mình như là một người sử dụng. Cô ấy không còn đăng nhập. Vì vậy, tôi sẽ nói xóa from-- tốt, duy trì vốn cho phù hợp, xóa từ những người dùng nơi. Và như vậy, chúng ta có thể có những vị, hoặc những vòng loại, ở phần cuối của báo cáo của tôi ở đâu và làm thế nào tôi có thể xóa Zamyla? Bởi cô tên Zamyla, vì vậy cột, một trong các cột được đặt tên, vì vậy mà name = "Zamyla". Và ở đây tôi sử dụng gấp đôi dấu ngoặc kép hoặc dấu nháy đơn, bạn chỉ sử dụng sau khi bọ ve nói về những cái tên, ví dụ, các bảng hoặc các lĩnh vực. Và hãy để tôi nhấp vào Về đây. Và bây giờ, trang web là là một chút căng thẳng. Hoặc, bạn có thực sự muốn thực hiện xóa từ những người dùng nơi tên bằng Zamyla? Vâng. Vì vậy, bây giờ, nếu chúng ta quay trở lại bàn của tôi bởi người dùng nhấp vào, nhận thấy rằng Hm. Tôi goofed. Và trong thực tế, tôi loại nhấp đi quá nhanh bạn thậm chí không nhìn thấy thông báo lỗi màu đỏ, có lẽ. Tôi đã làm gì sai? Đung Bạn không cần để tận dụng tên của cô. DAVID J. Malan: Vâng tôi vốn tên của mình, nhưng cô ấy thực sự username-- tôi thực hiện một vài sai lầm, phải không? Một, tên người dùng của cô là zamyla, chữ thường Z, và tên cột là tên người dùng, không tên, vì vậy hãy làm điều này một lần nữa. Hãy để tôi đi trước và xóa từ những người dùng nơi Tên truy nhập bằng quote unquote "Zamyla". Tất cả phải không? Vì vậy, điều này có vẻ tốt hơn một chút, chúng ta hãy tôi đi di chuyển xuống và bấm Go. Nó vẫn sẽ la tôi để đảm bảo. Tôi bấm Yes, và bây giờ chúng ta thấy, thẳng thắn điều này xảy ra, thực sự nhanh chóng, ít hơn một thứ hai chắc chắn, điều này chính là truy vấn đã thực hiện. Để xác nhận, hãy để tôi nhấp người dùng và thực tế hiện nay Zamyla đã biến mất. Bây giờ chúng ta hãy làm điều ngược lại. Giả sử rằng Gabe muốn đăng ký cho trang web. Truy vấn SQL là gì, những gì là lệnh tôi có thể gõ thêm Gabe? Vâng đó là khá dễ dàng. Chèn vào người sử dụng, và bây giờ nó được một chút khó hiểu. Tôi cần phải xác định, đến máy chủ, những lĩnh vực tôi muốn chỉ định. Tôi không thực sự quan tâm những gì ID của Gabe Số là, vì vậy tôi sẽ bỏ qua. Tôi thay vì sẽ nói Tên truy nhập, băm, và sau đó các giá trị tôi muốn đặt có là có được Gabe. Và sau đó băm của mình, tôi không biết. Vì vậy, bây giờ, tôi sẽ rời khỏi đó như là một lớn để làm. Chúng tôi sẽ trở lại rằng trong vấn đề thiết lập thông số như thế nào bạn thực sự làm điều đó. Vì vậy, nhận thấy, một lần nữa, cú pháp. Chèn vào bảng tên, sau đó một danh sách trong ngoặc đơn của các lĩnh vực, các cột bạn muốn thêm giá trị đến, và sau đó chỉ cần Trật tự chính xác cùng còn lại để bên phải của giá trị mà bạn muốn thêm vào, và nó chỉ gói bởi vì văn bản là một ít lâu. Vì vậy, bây giờ để tôi nhấn Go. Một dòng. Và bây giờ nếu tôi trở lại người sử dụng, những gì là thú vị là không chỉ là Gabe bây giờ trong cơ sở dữ liệu, những gì là rõ ràng ID của mình? Vâng đó là bảy. Tại sao nó bảy khi tôi không thêm nó? Vì vậy, đây cũng là một trong những các tính năng bạn có được cơ sở dữ liệu. Rất nhiều được xây dựng trong chức năng. Nó chỉ ra rằng khi tạo ra bảng này, Tôi cấu hình sẵn đó là tự động gán một ID theo cách như vậy rằng nó increments. Vì vậy, nếu bạn đã từng chọc xung quanh, và nhìn vào Facebook ID những gì bạn Số là, những ngày này nó không thực sự một điều để làm, nhưng Facebook như là một API, Application Programming Interface, nhờ đó mà bạn có thể quay lại một bó toàn bộ các dữ liệu về mình, về bạn bè của bạn, và các kết nối của bạn. Và những gì được sử dụng để loại mát mẻ, trở lại trong ngày, là để tìm kiếm những gì bạn Facebook là số ID. Mark Zuckerberg của, ví dụ, là ba kể từ khi ông là tác giả của trang web. Và như câu chuyện đi, ông đã tạo ra hai tài khoản thử nghiệm, người dùng có một và hai, mà sau đó ông đã bị xóa. Và như vậy, Zuck, như là tên người dùng của mình trên Facebook, là ID thứ ba, và tất cả chúng ta có số lượng nhiều lớn hơn ba những ngày này. Trong thực tế, tại một số điểm Facebook chuyển đi từ thậm chí sử dụng một int, mà là một giá trị 32-bit, để sử dụng bước tiếp theo, cơ bản là một quá lâu dài rằng họ có thể chứa thậm chí nhiều người dùng đăng ký. Vì vậy, một chút thực tế lịch sử thú vị. Vì vậy, đó chỉ là Cú pháp cơ bản mà chúng ta có thể thực hiện một vài truy vấn, nhưng chúng ta có thể thực sự làm những điều một bó hơn với SQL. Và bạn sẽ thấy, cuối cùng, trong vấn đề thiết lập bảy mà bạn phải thực hiện một số quyết định thiết kế, trong số đó là có được những loại dữ liệu để sử dụng. Vì vậy, giống như trong C, có dữ liệu loại trong một cơ sở dữ liệu, như MySQL, và các loại dữ liệu bạn có để lựa chọn từ bao gồm các lĩnh vực này ở đây. Char, varchar, Int, lớn int, số thập phân và thời gian ngày, và nhiều người khác. Vì vậy, hãy thực sự làm điều này. Hãy giả sử rằng chúng tôi đã không tay bạn bảng của người dùng này và cho tôi đi trước và tạo ra, cho bản thân mình, trong các bài giảng database-- thực sự cho tôi đi trước và xóa bảng tôi có ở đây đã để chúng tôi thực sự có thể tạo ra điều này. Lỗi chính. Tôi sẽ thả này bảng, và bây giờ tôi sẽ đi một lần nữa để bài giảng cơ sở dữ liệu trên đây, Tôi sẽ tạo ra một bảng gọi là người sử dụng và chúng ta hãy chỉ cần làm ba cột ban đầu và nhấn Go. Bây giờ, đối với hầu hết các phần, một lần nữa, điều này chỉ là sử dụng công cụ đồ họa này được gọi là phpMyAdmin, và những gì chúng tôi đang làm bây giờ đang tạo ra một bảng. Vì vậy, đây cũng giống như đi File, New, và tạo ra một tập tin Excel mới. Vì vậy, nó hỏi tôi một vài câu hỏi, từ trái sang phải, tên của cột đầu tiên là những gì, và sau đó tên của cột thứ hai, và tên của người thứ ba. Vì vậy, hãy tái tạo này. ID, và sau đó là một tên, và sau đó băm là khác. Vì vậy, những gì nên các kiểu dữ liệu là bây giờ cho một lĩnh vực như ID? Dưới đây là toàn bộ danh sách các kiểu dữ liệu sẵn cho bạn trong một cơ sở dữ liệu, và bây giờ bạn chỉ cần đi với int. Giá trị 32-bit, tôi không nghĩ rằng thực tế tôi sẽ có hơn 4 tỷ người sử dụng trong tài khoản của tôi, trong dịch vụ của tôi, vì vậy tôi sẽ tiếp tục di chuyển vào câu hỏi tiếp theo. Tôi sẽ không xác định chiều dài hoặc giá trị, nó không áp dụng ở đây cho một int, mỗi se. Và bây giờ tôi có thể xác định, rõ ràng, một mặc định giá trị, mà tôi sẽ không chỉ định. Một collation, tôi không biết đó là những gì. Một thuộc tính. Bây giờ chúng ta thực sự làm có một quyết định thiết kế. Vì vậy, có một vài lĩnh vực ở đây, không phải tất cả trong đó có thể áp dụng, nhưng không dấu chỉ có nghĩa là gì? Đó là int phải? Chỉ cần không âm. Vì vậy, nó có phải là 0 trở lên. Không, tôi sẽ không để kiểm tra vì Tôi muốn mọi người sử dụng để có một ID, nó không thể là null. Và sau đó, chúng tôi nhận được một số chi tiết quyết định thiết kế thú vị như thế này. Chúng tôi sẽ trở lại vấn đề này trong một thời điểm, nhưng những gì một tính năng của cơ sở dữ liệu là, là bạn có thể nói các máy chủ cơ sở dữ liệu đi trước và tối ưu hóa chính mình, của bạn RAM và không gian đĩa cứng của bạn, để lựa chọn, và chèn, và xóa, và cập nhật thực sự nhanh chóng. Ngược lại điều này với pset5. Nếu bạn muốn tìm kiếm một cái gì đó trong bảng băm của bạn, bạn nghĩ đến như là một cơ sở dữ liệu, những người đã phải làm tất cả những làm việc để làm cho bảng băm của bạn nhanh chóng. Nó giống như, rõ ràng, bạn. Phải không? Bạn có để đưa vào tất cả các thời gian tốt điều chỉnh mọi thứ, nhận được một hàm băm phải, để tìm ra cách nhiều xô nước để có. Nhưng những gì là tốt đẹp, một lần nữa, về một cơ sở dữ liệu bạn chỉ đá trái banh tất cả này cho người khác người có suy nghĩ này thông qua cho bạn, và những gì Tôi sẽ nói ở đây theo chỉ số là lĩnh vực ID của tôi sẽ là con đường chính của xác định người sử dụng trong cơ sở dữ liệu này. Tôi sẽ không suy nghĩ của Zamyla như Zamyla, Tôi sẽ nghĩ về mình là số 6. Tại sao nó, có lẽ, tốt hơn trực giác để suy nghĩ và mô hình mỗi hàng cá nhân của bạn bằng cách sử dụng một số thay vì một cái gì đó giống như một chuỗi, giống như Zamyla hoặc Gabe hoặc chuỗi dài hơn vẫn còn? Yeah? Đung Một ID là duy nhất? DAVID J. Malan: Nói một lần nữa? Đung Một ID là duy nhất? DAVID J. Malan: Một ID là duy nhất, nhưng suppose-- như trường hợp nói chung với tên người dùng, giả sử Tôi cũng đã nói chỉ có thể có một Zamyla trên thế giới, và chỉ có một Gabe. Tôi có thể áp đặt sự độc đáo hạn chế trên dây, cũng vậy, nếu tôi muốn. Vì vậy, không phải là một tư tưởng xấu. Đung an toàn hơn. DAVID J. Malan: an toàn hơn, tại sao? Đung Bạn không thể nói trong đó, như người sử dụng. DAVID J. Malan: OK, bạn không thể nói mà người sử dụng mà là vì vậy có một khía cạnh bảo mật cho nó, đặc biệt là nếu các ID có thể xuất hiện trong URL. Vì vậy, chắc chắn, rằng có thể loại công việc, quá. Suy nghĩ khác? Yeah? Đung Nó dễ dàng hơn để thực hiện các hoạt động trên một int. DAVID J. Malan: Đó là kicker thực. Nó chỉ hiệu quả hơn, hoặc dễ dàng hơn cho máy tính, để thực hiện các hoạt động trên một số nguyên. Phải không? Một int được đảm bảo là 32-bit, trong khi Zamyla dài một vài ký tự, Gabriel dài thêm một vài ký tự, Davenport là thực sự lâu dài, và vì vậy nó không đặc biệt hiệu quả sử dụng chuỗi giá trị để so sánh và tìm cho các lĩnh vực, và các lĩnh vực cập nhật, nếu bạn có thể đi chỉ với một số nguyên. Chỉ cần 32 bit. Vì vậy, tên người dùng, quá, bằng cách này, không phải là duy nhất, mặc dù họ có lẽ nên được, và thậm chí theo cách này quá một người sử dụng có thể được phép thay đổi tên của mình. Vì vậy, bây giờ chúng ta lại điều này như là phương tiện chính để xác định người sử dụng. Đây là nói cho các cơ sở dữ liệu đi trước và tối ưu hóa chính mình để up nhìn vào ID là siêu nhanh. AI, khủng khiếp có tên, chỉ có nghĩa là Auto Increment, và điều này là kiểm tra hộp chúng ta cần phải kiểm tra để xác định rằng lĩnh vực ID để được tự động cập nhật cho tôi, và sau đó tôi sẽ di chuyển sang phải ở đây và thẳng thắn Tôi không thực sự quan tâm trong bất kỳ chi tiết của các trường này. Chắc chắn không phải ngày hôm nay. Vì vậy, tôi sẽ quay trở lại đây, để cột đầu tiên, nơi Tôi cần phải xác định tên và băm, và chúng ta hãy ít nhất tập trung vào các thứ hai cho bây giờ. Int có lẽ không phải gọi đúng, vì vậy những gì có ý nghĩa hơn có lẽ? Đung Text. DAVID J. Malan: Nói một lần nữa? Đung Text. DAVID J. Malan: Văn bản? OK, tôi nghe văn bản. Những gì khác? Chúng tôi loại có một loạt các lựa chọn đó là văn bản trong tự nhiên. Vì vậy, khi nào, và tại sao, làm bạn sử dụng một số trong những? Vâng char, trái với những gì bạn có thể nghĩ, không phải là một nhân vật duy nhất. Đó là một số cụ thể của nhân vật. Vì vậy, nếu chúng ta biết rằng tất cả các tên người dùng phải giống như tám ký tự, như được sử dụng rất phổ biến ở cũ hệ thống máy tính, tôi có thể nói char và sau đó tôi có thể nói 8 ở đây. Đó là khi cột thứ ba trở thành áp dụng khi tạo ra một bảng. Nhưng đó là loại gây phiền nhiễu bởi vì một số người có thể muốn có một tên người dùng còn hơn tám ký tự, một số người có thể muốn có một tên người dùng ngắn hơn, vậy tại sao cam kết bản thân mình để một số cụ thể? Tại sao không có một biến số ký tự và chỉ nói rằng chiều dài tối đa của một tên là, tôi không biết, như 64 ký tự. Tôi không thể nghĩ ra bất kỳ người bạn có tên dài hơn 64 ký tự, và thậm chí nếu đó là quá ngắn bạn có thể chắc chắn bump nó lên tùy tiện. Vì vậy, varchar là một biến số ký tự. Văn bản không phải là một bản năng xấu, và thẳng thắn rằng loại những gì nó nói, nhưng một trường văn bản có thể như 65.000 byte ít nhất. Đó có thể là quá mức cần thiết cho một lĩnh vực, và trong thực tế, yup, 65.535. Đó có thể là quá mức cần thiết cho một tên, vì vậy chúng tôi sẽ dính, thông thường, với varchars cho văn bản lĩnh vực và băm, quá. Hash, nó quay ra, chúng tôi có thể làm một varchar cũng hay như thế, nhưng chúng tôi sẽ không tập trung ngày hôm nay trên mật mã đó và những con số rằng chúng ta có thể thực sự muốn sử dụng cho chiều dài của nó. Nhưng hãy để tôi di chuyển xuống bên phải. Bạn chỉ có thể có một chỉ số chính cho một bảng, nhưng tôi muốn áp dụng bất kỳ trong số này, bây giờ, để tên người dùng, bạn sẽ nói gì? Những gì cần username được dựa trên một mơ hồ sự hiểu biết của bốn tùy chọn này? Chỉ cần bằng tên của họ? Đung độc đáo. DAVID J. Malan: Vì vậy, độc đáo, phải không? Vì vậy, nó chỉ ra rằng không chỉ có thể bạn nói với một cơ sở dữ liệu, trước, đây là cách chính xác định các lĩnh vực. Bạn cũng có thể nói đây là sẽ là một lĩnh vực duy nhất. Nó sẽ không được điều tôi dựa vào, nhưng tôi muốn các cơ sở dữ liệu về cơ bản có rằng nếu điều kiện, vì vậy rằng nếu tôi cố gắng để đăng ký hai người sử dụng có cùng tên, phẳng cơ sở dữ liệu ra sẽ không để cho tôi. Tôi có thể có một số mã bổ sung trong PHP có thể ngăn chặn càng nhiều, nhưng cơ sở dữ liệu, cũng có thể đảm bảo rằng sẽ không bao giờ xảy ra. Bây giờ, khi một sang một bên, đặc biệt là bạn nghĩ về dự án cuối cùng, giữ trong tâm trí nó chỉ mục và đầy đủ văn bản là thực tế khá hữu ích. Nếu bạn có một cơ sở dữ liệu lớn hơn, không phải với hàng chục, nhưng với hàng trăm hoặc hàng ngàn hoặc thậm chí hàng triệu đồng, bạn có thể cũng cho biết cơ sở dữ liệu trước đây là một lĩnh vực tôi sẽ được tìm kiếm trên rất nhiều. Có lẽ tên của nó, có lẽ đó là sinh học, nếu bạn làm cho một trang web Facebook như thế có đoạn văn mà người sử dụng đã cho phép để tiết kiệm, và nếu bạn muốn cho cơ sở dữ liệu trước Tôi sẽ được tìm kiếm trên lĩnh vực này rất nhiều, nhưng nó không nhất thiết phải độc đáo, bạn có thể chỉ tạo cho tôi một chỉ số. Hoặc, bạn có thể nói cũng cho phép tôi làm loại tìm kiếm tùy ý như lệnh hoặc Control F, giống như bạn có thể trong một bộ xử lý Word, vì vậy bạn có thể nhìn chuỗi tùy ý hoặc chuỗi con trong lĩnh vực này. Nói cách khác, chúng ta đang nhận được đến điểm trong học kỳ nơi mà bạn không phải lo lắng về làm thế nào để thực hiện việc hiệu quả. Bạn chỉ cần biết về những gì quyết định thiết kế để làm sao cho bạn sử dụng các công cụ thích hợp cho các thương mại để tận dụng các tính năng mà người khác đã được xây dựng cho bạn. Vì vậy, tóm lại, chính chỉ nên có, bạn chỉ có thể có một, và đó là điều bạn đang cam kết sử dụng để xác định các lĩnh vực duy nhất. Duy nhất chỉ là tinh thần tương tự, nhưng bạn có thể chỉ thỉnh thoảng sử dụng nó, nhưng bạn muốn cơ sở dữ liệu để áp đặt nó. Index chỉ có nghĩa là đánh phủ đầu tốc độ lên trong tương lai vì vậy mà tôi có thể tìm kiếm điều trong lĩnh vực này. Và sau đó toàn văn nói chung là cho đoạn văn, hoặc bài tiểu luận, hoặc các cơ quan lớn của văn bản mà bạn cũng có thể muốn có thẻ hoang dã như tương đương với sao. Phải. Vì vậy, đó là loại rất nhiều để tất cả cùng một lúc. Hãy xem nếu chúng ta không thể chưng cất một vài các tính năng và sau đó xây dựng một cái gì đó khá đơn giản, nhưng mạnh mẽ. Vì vậy, một trong những khác quyết định thiết kế bạn cuối cùng sẽ có được cùng các dòng công cụ lưu trữ. Và hãy để tôi chỉ cần thực hiện đề cập đến này với dự đoán của các dự án cuối cùng, và dự đoán cho phép của say-- không chúng ta hãy làm điều này. Hãy xây dựng nhỏ này ứng dụng đầu tiên. Tôi sẽ đi vào thiết bị đầu cuối của tôi cửa sổ, và ở đây không phải là chỉ counter.php, mà bây giờ chúng ta sẽ để thoát khỏi như không còn Gecman, nhưng chúng tôi có cả một bó và thư mục này sẽ là rất tinh thần tương tự với những gì bạn sẽ thấy trong vấn đề thiết lập bảy. Vì vậy, chúng tôi có ba thư mục bao gồm công cộng và các mẫu, mà là chính xác nơi chúng tôi rời đi vào Thứ hai với toàn bộ mô hình MVC của chúng tôi. Và tóm lại, ở nơi công cộng sẽ đi bất kỳ tập tin mà tôi muốn người dùng thực sự v có thể truy cập vào trình duyệt của họ thông qua URL. Mẫu. Chúng tôi đã đưa thông tin gì trong các mẫu? Những loại công cụ? Không có nhiều nhưng một cặp vợ chồng các tập tin ít nhất vào thứ hai. Yeah. Đung Header và Footer? DAVID J. Malan: Header và Footer. Vì vậy, chúng tôi có một cái gì đó tương tự như ngày hôm nay, quá. Chúng tôi đã có một vài tập tin hơn nhưng Footer tôi thấy, Header tôi thấy, và sau đó một loạt các tập tin khác. Vì vậy, đây là tương đương của quan điểm V MVC, trong đó, một lần nữa, sẽ có nhiều hơn một chút rõ ràng trong vấn đề thiết lập bảy, nhưng điều này chỉ là một thư mục tôi đặt rất nhiều tính thẩm mỹ của tôi. Rất nhiều HTML của tôi, rất nhiều hình thức của tôi. Trong khi đó, bao gồm, là một thư mục đó có ba file và chúng ta hãy nhìn qua những. Tôi sẽ đi trước và mở config.php. Khi nó quay ra, nhiều như trước đó trong thời hạn, bạn sắc nét bao gồm CS50 dot h với pset7. Trong ví dụ ngày hôm nay, bạn sẽ để làm tương đương với đó với một tuyên bố yêu cầu mà hiệu quả bao gồm các nhiều dòng. Vì vậy, để được rõ ràng, đây là một tập tin gọi là config.php. Và hãy chú ý những gì nó làm. Nó dường như làm điều gì đó khó hiểu, bật thông báo lỗi để bạn có thể nhìn thấy chúng trong trình duyệt. Đó là, sau đó, rõ ràng yêu cầu hai tập tin khác vì vậy đây là giống như #include trong C, và sau đó một này, chúng ta đã thấy, và chúng tôi đã dựa vào, lượt về rằng giỏ mua hàng như chức năng. Điều này có nghĩa một cookie sẽ được gửi qua lại. Vì vậy, tại sao điều này là thú vị? Vâng, nếu chúng ta trở lại này thư mục và mở lên, ví dụ, constance.php. Chú ý rằng PHP không hằng số hỗ trợ, nó không hoàn toàn giống như # define trong C. Thay vào đó, bạn có nghĩa nói được xác định, và thông báo mà tôi đã được lưu trữ trước bốn hằng số trong tập tin này. Một cơ sở dữ liệu cho ngày hôm nay, cho mật khẩu, tên người dùng của tôi, và cho tên của máy chủ. Vì vậy, đây thực sự sẽ là khá tương tự trong vấn đề thiết lập bảy. Và cuối cùng, và đây là nơi mà tôi sẽ nhận được một số chức năng đẹp từ các nhân viên, trong functions.php là một loạt các mã chúng tôi đã viết, và tôi đã đánh cắp một số điều này từ vấn đề thiết lập bảy cho ngày hôm nay, mà không một bó của những thứ và chúng ta chỉ cần nhìn vào một trong số họ nói riêng. Chức năng này ở đây, truy vấn, là có được chức năng PHP chúng ta gọi để thực hiện SQL. Một lúc trước, chúng tôi đã sử dụng phpMyAdmin, nhưng đó chỉ là cho các loại mục đích học tập và mục đích chẩn đoán và quên thiết lập cơ sở dữ liệu của bạn. Khi bạn thực sự sử dụng của bạn cơ sở dữ liệu, bạn, con người, rõ ràng là sẽ không được kéo lên một trang web trang mỗi khi ai đó đăng ký. Bạn sẽ viết mã thêm và xóa người sử dụng theo yêu cầu, và chúng ta sẽ làm điều này bằng cách của các chức năng truy vấn. Nếu bây giờ tôi di chuyển xuống, có sẽ là một vài tính năng. Redirect sẽ là một chức năng chúng tôi đã viết cho bạn, cho phép bạn gửi người dùng đến một URL khác, và đưa ra là một chức năng, khá giống như chúng ta đã thấy hôm thứ hai, mà thực sự làm cho một mẫu, nhưng nhiều hơn về những trong hình thức đi bộ riêng pset7 qua. Để bây giờ, chúng ta hãy đi trước và làm điều này. Hãy để tôi đi vào bảng bài giảng của tôi và thấy rằng có hiện nay không có gì ở đây chỉ nêu ra, và hãy để tôi cũng đi vào thư mục công cộng của tôi, nơi đó chỉ là một tập tin, index.php. Tập tin này dường như là siêu đơn giản tại thời điểm này, nó trông giống như thế này. Rất giống như cách chúng tôi rời đi vào thứ hai. Tôi yêu cầu tập tin này, config.php, mà là ở bao gồm một thư mục, mà là trong dot dot, cha mẹ tôi, và sau đó nó chỉ render tập tin này. Vì vậy, tập tin này là gì? Hãy mở ra trong các mẫu của tôi form.php, và chúng ta sẽ thấy điều này. Siêu đơn giản, rõ ràng hình thức này là sẽ nộp bởi một $ _GET hoặc $ _POST. Kiểm tra sự tỉnh táo nhanh chóng. Nghĩa là trực quan tìm kiếm các tập tin. Phương pháp bằng bài. Vì vậy, nó sẽ không sử dụng các URL, giống như Google không, nó sẽ sắp xếp trốn các thông tin đằng sau hậu trường và đó là sẽ gửi đến một tập tin gọi là register.php, và đó là các tập tin chúng tôi đã chưa viết nhưng điều này đang xảy ra để trông giống như là thế này. Nếu tôi đi đến một trang riêng này những gì localhost / index.php như thế nào. Và một lần nữa, các máy chủ của chỉ là giả định index.php. Enter. Vì vậy, đó là nơi chúng tôi tại, và những gì tôi muốn làm là có thể loại điều giống như David, và sau đó số điện thoại của tôi, mà sẽ nói 617-555-1212 bây giờ, đăng ký và bây giờ register.php không được tìm thấy. Vì vậy, tôi cần phải thực hiện điều này. Vì vậy, hãy nhanh chóng whip một cái gì đó giống như lên này. Hãy để tôi đi vào thư mục công cộng của tôi và làm gedit của register.php, và bây giờ tôi sẽ đi trước và bắt đầu chế độ PHP, như chúng tôi đã làm vào thứ hai, và tag đóng của PHP, và chúng ta hãy làm một vài điều. Vì vậy, một, tôi biết, từ đã được viết dưới hình thức đó, mà tôi muốn kiểm tra cho sau này. Nếu nó là trống rỗng, bất cứ điều gì người sử dụng gõ vào trường tên, sau đó Tôi sẽ nói điều gì đó như xin lỗi thiếu tên. Xin lỗi, trong khi đó, không được xây dựng trong PHP điều, đó là một chức năng chúng tôi đã viết trong functions.php cho pset7 để bạn có thể truy cập nó. Khác nếu các lĩnh vực khác là trống rỗng, số lượng, sau đó tôi sẽ xin lỗi người sử dụng và nói số còn thiếu. Lưu tập tin này. Bây giờ chúng ta hãy quay trở lại trình duyệt của tôi, quay trở lại diễn đàn thử lại. Đăng ký. OK. Không có gì xảy ra, đó là tốt. Tôi đã không nhận được một thông báo lỗi. Nhưng nếu thay vào đó, hãy tải lại này trang, và không cung cấp bất cứ điều gì. Chết tiệt. Làm điều đó. Đăng ký. Tôi đã làm gì sai? Nếu trống, tên $ _POST. Nói một lần nữa? Oh, tất nhiên. Tôi quên phần quan trọng nhất, mà là yêu cầu ("../ includes / config.php."). Tôi cần phải có quyền truy cập vào xin lỗi chức năng, mà là lý do tại sao không có gì đã xảy ra. Các chức năng không thực sự tồn tại. Vì vậy, hãy cố gắng này một lần nữa. Hãy tải lại của trang, nhấp vào Đăng ký. OK. Có nó là. Vì vậy, sản lượng chúng tôi nhìn thấy ở đây là kết quả kêu gọi một lời xin lỗi chức năng, siêu đơn giản, và nó chỉ in ra bất cứ điều gì Tôi cho nó như một tham số. Tất cả các bên phải, vì vậy chúng ta hãy hợp tác. Hãy cung cấp tên của tôi giống như David, đăng ký, thiếu số lượng cho phép của OK cung cấp cho rằng, quá. 617-555-1212. Đăng ký. OK. Vì vậy, tất cả là tốt bây giờ, chỉ là không có gì thú vị đang xảy ra. Vì vậy bây giờ chúng ta hãy làm một cái gì đó nhiều hơn thú vị xảy ra như thế này. Hãy để tôi đi vào phpMyAdmin, và chúng ta hãy thực sự tạo ra một bảng gọi là người sử dụng, Tôi sẽ để cho nó ba cột, và tôi sẽ nhanh chóng tạo ID, và sau đó tên, và sau đó số lượng, và các lĩnh vực ID tôi sẽ để lại như một int. Trường tên tôi sẽ để lại như một varchar, và chúng tôi sẽ nói 64, có phần tùy tiện. Số tôi sẽ để thực hiện, bạn biết những gì? Chúng tôi đang đi vào hỗ trợ số Mỹ ở đây, vì vậy tôi sẽ làm điều gì đó như char và sau đó 10 ký tự tối đa cho một mã vùng và sau đó bảy chữ số. Và sau đó ở đây, tôi sẽ xác định tự động tăng lĩnh vực này, thực hiện điều này một khóa chính, và Tôi sẽ đi trước và không kiểm tra bất kỳ các hộp khác. Vì vậy, khi tôi bây giờ cuối cùng nhấn Save, và tôi quay trở lại bảng người dùng của tôi, đây là những gì nó trông giống như nếu tôi Bây giờ bấm vào một cấu trúc New Tab. Vì vậy, đây, để được rõ ràng, chỉ là cách phpMyAdmin của nói bảng cơ sở dữ liệu của bạn có một ID, một tên, và một số với những cấu hình đặc biệt và chúng tôi sẽ bỏ qua phần còn lại của lĩnh vực có cho bây giờ. Vì vậy, bây giờ những gì tôi muốn làm gì? Vì vậy, nếu tôi đi bây giờ vào của tôi mã nguồn, nếu tất cả là tốt Tôi muốn thực hiện các truy vấn sau đây. Chèn vào, và tôi có thể chỉ nói rằng người dùng tôi làm không đúng cần những người trở lại ve nếu nó không phải là một từ nguy hiểm như người sử dụng. Tôi sẽ nói tên, số, và sau đó ở đây tôi sẽ không cứng mã chữ số của các giá trị được nêu ra. Tôi sẽ đặt hai dấu hỏi. Và đây là một quy ước trong nhiều ngôn ngữ theo đó nếu bạn muốn có một giữ chỗ cho một chuỗi bạn sẽ sử dụng các câu hỏi nhãn hiệu, vì những lý do chúng tôi sẽ trở lại để trò chuyện về an ninh, và ở đây Tôi sẽ vượt qua trong những hai lĩnh vực đăng tên, và sau đó gửi số, và bây giờ lưu tập tin. Và bây giờ tôi sẽ đi xuống ở đây là một siêu chỉ đơn giản nói rendersuccess.php, mà là có được mẫu khác. Tôi sẽ tạo ra rất nhanh. Geditsuccess.php và tôi chỉ cần đi nói H1 thành công trong tập tin đó. Được rồi. Vì vậy, bây giờ, chúng ta hãy quay trở lại trình duyệt, nơi mà tôi đã đến thăm trước đó. Chúng ta hãy đi trước và xác nhận tôi đã viết David, tôi đã viết trong một số điện thoại, đăng ký. Chết tiệt. Tôi đã làm gì sai? Vì vậy, tôi đang nhìn thấy một lỗi ở đây, bạn có một lỗi trong cú pháp SQL của bạn. Hãy để tôi nhảy trở lại gedit, chúng ta hãy tôi quay lại với register.php, và tôi đã bỏ qua những gì mà là quan trọng thời gian qua không? Tôi cần điều này. Bạn muốn biết điều đó khác hơn là từ có nhận thấy trước, nhưng tôi cần điều này. Vì vậy, bây giờ hãy quay trở lại, và điều này là hữu ích để xem trong trình duyệt và đó là lý do tại sao trong config.php chúng tôi nhổ ra lỗi. Chúng ta hãy đi trước và tải lại, bấm Tiếp tục, thành công. Vì vậy, bây giờ để tôi đi qua tôi cơ sở dữ liệu ở đây và bấm vào Users, và trình duyệt, và nhận thấy tôi bây giờ David có trong cơ sở dữ liệu của tôi ở đây. Bây giờ kỹ thuật trang web này chưa trên internet công cộng, vì vậy tôi không thể có khác người trong việc đưa đây, nhưng nếu bây giờ tôi muốn, cho Ví dụ, gửi cho mình một tin nhắn văn bản. Hãy đi ra ngoài cánh một ở đây và xem nếu điều này thực sự hoạt động. Tôi sẽ đi trước và xoá hàng này và chúng tôi sẽ làm mờ này ra trong đoạn video sau vì vậy chúng tôi không có toàn bộ internet nhắn tin cho tôi, và bây giờ chúng tôi sẽ đi lên trình duyệt và chúng tôi sẽ đi qua giảng dạy và chúng tôi sẽ gõ khác nhau số ở đây, đăng ký, thành công. Vì vậy, bây giờ, số lượng của riêng tôi là có lẽ trong cơ sở dữ liệu, và bây giờ là phần thú vị. Hãy thực sự sử dụng PHP để làm một cái gì đó lập trình, hoặc từ lệnh dòng hoặc từ các nơi khác, và bây giờ tôi chỉ sẽ giữ nó đơn giản và tôi sẽ đi vào của tôi thư mục ở đây và làm như sau. Gedit kịch bản giả, chúng tôi sẽ gọi nó là văn bản, #! / người dùng / bin / env PHP, như chúng ta đã thấy thời gian qua. PHP. Bây giờ tôi sẽ không yêu cầu bao gồm config.php, mặc dù sức mạnh này gây ra một lỗi nhỏ. Và bây giờ tôi sẽ đi trước và nói hàng, truy vấn, chọn ngôi sao từ người dùng, và bây giờ ở đây tôi sẽ làm một kỹ thuật từ lần cuối cùng cho mỗi hàng như hàng. Và tôi sẽ làm một cái gì đó đơn giản. Printf hãy nói tên là này, và số lượng là điều này, dấu gạch chéo ngược n. Và bây giờ tôi sẽ vượt qua trong dòng trích dẫn tên unquote, và số lượng hàng quote unquote, và bây giờ chúng ta hãy đi trước và cửa sổ thiết bị đầu cuối của tôi chmod a + x này để làm cho kịch bản này được gọi là văn bản thực thi. Và bây giờ hãy chạy văn bản. OK, vì vậy tiến bộ. Vì vậy, bây giờ tôi đã viết một dòng kịch bản lệnh, trong một ngôn ngữ được gọi là PHP, mà, vì lý do đó đòi hỏi phải có đường, có quyền truy cập vào tất cả các cấu hình hằng số mà tôi đã chỉ định. Tên của cơ sở dữ liệu và vv. Trong thực tế, chỉ để được rõ ràng rằng đây không phải là sự may mắn, hãy để tôi đi trước và đăng ký, thực sự nhanh chóng, người khác như Rob và sẽ cho anh ta số 555-1212. Và bây giờ, nếu tôi chạy kịch bản một lần nữa, nhận thấy sức mạnh những gì chúng ta đang làm với cơ sở dữ liệu. Bây giờ tôi đã ngay lập tức nhìn thấy những gì hai hàng khác nằm trong cơ sở dữ liệu của tôi. Vì vậy, bây giờ hãy cố gắng làm một cái gì đó thậm chí còn sành điệu bên trong, và đây là phần chúng tôi đã không kiểm tra trước, vì vậy thời gian qua tôi đã làm điều này mọi thứ đã đi méo kinh dị, chúng tôi có video để có hiệu lực đó. Trên thực tế, yeah, vui sang một bên. Vì vậy, thời gian qua, trong một giảng dạy như hai năm trước đây, chúng tôi quyết định, tôi quyết định, để được tất cả điều này sẽ là một ý tưởng tuyệt vời tự động tạo ra các email trong lớp, sử dụng toàn bộ cơ sở dữ liệu CS50 sinh viên, những người đã cho chúng tôi số điện thoại của họ và các hãng điện thoại di động của họ mà bạn có thể nhớ lại từ pset0, làm thế nào để lý do, nó quay ra Tôi đã có một lỗi nhỏ trong chương trình của tôi và đã làm một vài sai lầm trong năm 2012, tôi nghĩ. Theo đó, một tôi đã cho vòng lặp đã làm chính xác loại điều, iterating trên cơ sở dữ liệu, nhận được một tên từ cơ sở dữ liệu, tên từ cơ sở dữ liệu, và sau đó trên mỗi lặp đi lặp lại của vòng lặp đó tôi đã gửi một email. Nhưng thay vì gửi một email, tôi gửi một email lặp đầu tiên, và hai email một lần lặp thứ hai, gửi ba email một sự lặp lại lần thứ hai, như bạn có thể nhớ lại từ chúng tôi thảo luận về các ký hiệu tiệm cận O này lớn xấu, như n bình phương là bao nhiêu tin nhắn tôi gửi đi, nhưng nó thậm chí còn không email đó là tin nhắn văn bản. Và như bạn đã biết, tham dự không phải là siêu cao vào cuối học kỳ và vì vậy tôi nghĩ rằng nó sẽ dễ thương thời gian để nói, "Tại sao không phải là bạn học?" Trong các tin nhắn văn bản tôi gửi cho cả lớp, và nó đã được vui thích 50% lớp, nhưng 50%, một số người trong số họ hơi bối rối, tôi đã gửi vô cùng ghi chú ngọt ngào xin lỗi cho các nhân viên xin lỗi vì đã bỏ lỡ bài giảng chỉ điều này một lần, phải không? Vì vậy, đó sẽ méo kinh dị. Vì vậy, trong tinh thần đó, chúng ta hãy cố gắng này một lần nữa nhưng chỉ với số của tôi. Trước, trong functions.php, Tôi đã viết chức năng này tại đây. Nó được gọi là văn bản, và nó mất trong ba đối số. Một số, một tàu sân bay, và một tin nhắn. Tôi đang sử dụng một tuyên bố chuyển đổi, mà tuyệt vời PHP có dây, không chỉ số nguyên, và tôi đã không thực hiện tất cả các hỗ trợ này chưa, Tôi vừa mới thực hiện AT & T và Verizon. Bởi vì nó quay ra rằng với những tàu sân bay họ có email đến cổng SMS, nhờ đó mà bạn có thể thực sự gửi một email đến một địa chỉ như số điện thoại tại vtext.com và nếu người dùng đã không bị chặn các thông điệp, nó sẽ đi qua là một tin nhắn văn bản. Bây giờ để làm điều này, tôi sẽ có thêm một lĩnh vực thực sự nhanh đến cơ sở dữ liệu của tôi. Tôi sẽ đi vào cơ cấu của tôi, và tôi sẽ đi trước và thêm một lĩnh vực vào cuối của bảng. Hãy nhấp vào Go, và tôi sẽ gọi cho nhà cung cấp này và bây giờ tôi sẽ để điều này như một văn bản thanh, nhưng chúng ta có thể sành điệu trong tương lai. Tôi sẽ nhanh chóng đi vào bàn của tôi, và tôi đi để thoát khỏi Rob, bởi vì đó là một số giả, Tôi sẽ đi vào chỉnh sửa ở đây và tôi sẽ thay đổi nhà cung cấp của tôi bằng tay là Verizon, mà nó là, và bây giờ ở đây. Hãy làm một kiểm tra sự tỉnh táo nhanh chóng. Hãy mở ra kịch bản văn bản của chúng tôi, trông như thế này, tàu sân bay là% s. Chúng tôi đang làm một lỗi rất nhiều kiểm tra hơn tôi đã làm trong năm 2012, tàu sân bay. Và bây giờ, tôi sẽ đi phía trước và chạy lại kịch bản. OK. Carrier là Verizon, có nghĩa là Bây giờ hy vọng tôi có thể làm chỉ này. Một cách chính xác trong năm nay, hy vọng, ở đây chúng tôi đi. Vì vậy, bên trong này cho vòng lặp, tôi sẽ không chỉ có printf này, Tôi cũng sẽ gọi cho văn bản và việc sử dụng các chức năng thu hồi này đã phải mất một số, một tàu sân bay, và một tin nhắn. Vì vậy, chúng ta hãy xem, con số này sẽ có hàng quote unquote "số" hàng quote unquote "tàu sân bay" và cuối cùng là thông điệp. Đừng vít lên trong năm nay, dấu chấm phẩy. OK. Ngón tay vượt qua. Hãy xem nếu công trình này. Tất cả các bên phải, như vậy. Ở đây chúng ta đi. Hãy mở khóa điện thoại, chéo ngón tay của bạn, chết tiệt. Không xác định may-- biến oh chờ đợi, chờ đợi, chờ đợi, thật nhanh. Thật nhanh, thật nhanh. Điều này là hoàn toàn xứng đáng. Hãy để tôi lấy, hãy để tôi lấy, uh-oh. Cảm ơn bạn, các văn bản có bắt đầu từ một người khác. Hãy để tôi đi trước và mở thực nhanh chóng, dropbox.php / mail tại đây. Standby. Hoàn toàn xứng đáng. Downloads. OK, nguồn src8m. OK. Cần thêm một dòng ở đây. Oh có nó, đó là trong Frosh Tin nhắn tức thì, đó là trong sổ đăng ký tại ba. Oh hello, Margo, cảm ơn bạn rất nhiều. OK, và tôi đã mất tích dòng này ở đây. Vì vậy, hãy để tôi nhanh chóng lấy dòng mã này, trong đó bao gồm các mail hoặc thư viện mà tôi thực sự muốn sử dụng, Tôi sẽ nhanh chóng quay trở lại chức năng, Tôi sẽ đi đến đầu này nộp và yêu cầu tập tin này là tốt, và bây giờ tôi sẽ thực sự vượt qua của tôi ngón tay khi tôi quay trở lại lệnh kịch bản dòng, mà là bên trong của thư mục chủ của địa phương hiện nay. Văn bản chạy. Enter. Mail. Standby. Standby. Mail. Oh, OK. Ở đây chúng ta đi. Thư mới được PHP bưu phẩm. Tôi đã làm điều này phải không? Chết tiệt. Với: oh, chờ đợi, chờ đợi, chờ đợi. Stand by. Tôi hứa, đây là sẽ là như vậy giá trị nó. Địa chỉ. Đây là lý do tại sao tôi không làm cho ví dụ ngay trước lớp. Ugh. Những người nhận sau thất bại. Hãy thử một điều cuối cùng. SMTP thiết lập từ, thêm địa chỉ, địa chỉ thực sự là. Hãy thử phần này cuối cùng trong địa chỉ. Aw, tôi thực sự buồn ngay bây giờ. Cám ơn. Nhưng tôi thực sự đánh giá cao tất cả các văn bản bạn đã được gửi. Bạn đã có David này. Bạn đang thổi nó. Hãy để nó ở đó và chúng tôi sẽ sửa chữa vào ngày thứ Hai. Xem bạn sau đó. DAVEN Farnham: Và bây giờ sâu Suy nghĩ của Daven Farnham. Nếu một cây nhị phân rơi vào một khu rừng và không có ai xung quanh để C it-- [cười khúc khích].