1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Tuần 8, Tiếp tục] 2 00:00:02,000 --> 00:00:04,000 [David J. Malan] [Đại học Harvard] 3 00:00:04,000 --> 00:00:08,000 [Đây là CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:13,000 >> Đây là CS50, do đó, đây là kết thúc của Tuần 8 ở đây. 5 00:00:13,000 --> 00:00:16,000 Chúng tôi tất nhiên đã có một chút của một cơn bão đầu tuần này, 6 00:00:16,000 --> 00:00:19,000 vậy ngay bây giờ nó thực sự chỉ là bạn và tôi trong giảng đường này, 7 00:00:19,000 --> 00:00:22,000 nhưng hôm nay chúng tôi tiếp tục cuộc trò chuyện của chúng tôi về PHP 8 00:00:22,000 --> 00:00:25,000 và về lập trình web nói chung, chúng tôi cũng giới thiệu ý tưởng 9 00:00:25,000 --> 00:00:29,000 cơ sở dữ liệu, đặc biệt được gọi là MySQL, mà là khá phổ biến những ngày, 10 00:00:29,000 --> 00:00:34,000 một phần lớn vì khả năng mở rộng của nó cũng như bởi vì nó là miễn phí và mã nguồn mở. 11 00:00:34,000 --> 00:00:37,000 >> Nhưng trước tiên, nhìn vào nơi chúng tôi rời đi thời gian qua. 12 00:00:37,000 --> 00:00:40,000 Nhớ lại rằng chúng tôi đang tìm kiếm tại một số Frosh ví dụ tin nhắn tức thì, 13 00:00:40,000 --> 00:00:44,000 và đây là hình thức ghê gớm mà tôi đã đưa ra một số 15 năm trước 14 00:00:44,000 --> 00:00:49,000 để có học sinh đăng ký trường cho các môn thể thao sinh viên năm thứ nhất trong thành 15 00:00:49,000 --> 00:00:52,000 mà không thực sự phải đi bộ nữa trên sân để Wigglesworth 16 00:00:52,000 --> 00:00:56,000 để trượt một mảnh giấy vật lý của bên dưới cánh cửa của một số giám thị. 17 00:00:56,000 --> 00:00:59,000 Thay vào đó, chúng tôi di chuyển tất cả mọi thứ trực tuyến, nhưng để làm điều đó chúng tôi cần thiết để làm cho việc sử dụng 18 00:00:59,000 --> 00:01:03,000 của một vài công nghệ, vì vậy, chúng tôi cần HTML, ngôn ngữ đánh dấu siêu văn bản, 19 00:01:03,000 --> 00:01:07,000 mà lại là ngôn ngữ đánh dấu mà bạn thực hiện trang web cấu trúc. 20 00:01:07,000 --> 00:01:10,000 >> Sử dụng một chút CSS những ngày này, cascading style sheets, 21 00:01:10,000 --> 00:01:16,000 nhờ đó chúng ta sử dụng stylizations của trang web bằng cách sử dụng một cú pháp hơi khác nhau, 22 00:01:16,000 --> 00:01:19,000 trong khi HTML là tất cả về cấu trúc của nó. 23 00:01:19,000 --> 00:01:21,000 Chúng tôi cũng cần phải giới thiệu một ngôn ngữ lập trình web. 24 00:01:21,000 --> 00:01:25,000 Trong trường hợp này, chúng tôi sẽ sử dụng PHP, và PHP sẽ cho phép chúng tôi 25 00:01:25,000 --> 00:01:28,000 xuất nội dung ra tự động cũng như làm những chương trình như 26 00:01:28,000 --> 00:01:33,000 gửi email, cũng như các trường hợp trên lưu ý chúng tôi rời khỏi tuần trước. 27 00:01:33,000 --> 00:01:35,000 >> Nhớ lại rằng mã cho điều này là trong 2 phần. 28 00:01:35,000 --> 00:01:38,000 Một, chúng tôi đã có froshims3.php, 29 00:01:38,000 --> 00:01:42,000 và điều này phần lớn là đánh dấu với một hình thức HTML bên trong của nó, 30 00:01:42,000 --> 00:01:45,000 một chút nhỏ bé của CSS lên ở đây trong các thuộc tính phong cách 31 00:01:45,000 --> 00:01:48,000 để các mẫu tự sẽ được tập trung trên trang, nhưng ngoài ra 32 00:01:48,000 --> 00:01:51,000 chúng tôi đã có đầu vào một số hình thức đại diện, một trường văn bản, một hộp kiểm, 33 00:01:51,000 --> 00:01:55,000 một số nút radio, một menu lựa chọn, và một nút submit. 34 00:01:55,000 --> 00:02:01,000 Và thông qua hình thức này, chúng tôi gửi vào một tập tin đã được rõ ràng register3.php gọi là, 35 00:02:01,000 --> 00:02:04,000 mà bản thân nó nhìn một chút gì đó như thế này. 36 00:02:04,000 --> 00:02:08,000 Bây giờ, hầu hết các mã ở register3.php, thu hồi, là tất cả về email. 37 00:02:08,000 --> 00:02:11,000 Nó đã làm một chút xác nhận của các hình thức đã được gửi để đảm bảo 38 00:02:11,000 --> 00:02:14,000 rằng các trường đã thực sự cung cấp đã được dự kiến. 39 00:02:14,000 --> 00:02:18,000 Sau đó, chúng tôi gọi là một số chức năng PHP bằng cách sử dụng hơi cú pháp mới, 40 00:02:18,000 --> 00:02:20,000 mặc dù nó vay từ C. 41 00:02:20,000 --> 00:02:24,000 >> Mũi tên điều hành này cho phép chúng ta sử dụng một cái gì đó được gọi là lập trình hướng đối tượng. 42 00:02:24,000 --> 00:02:27,000 Chúng tôi sẽ không đi vào đó trong bất kỳ chi tiết ở đây, nhưng biết bây giờ 43 00:02:27,000 --> 00:02:31,000 đó là một cách có chức năng liên kết với các đối tượng, 44 00:02:31,000 --> 00:02:34,000 mà là một loại đặc biệt của cấu trúc, như chúng ta đã thấy trong C. 45 00:02:34,000 --> 00:02:37,000 Nhưng hiện nay, chỉ cần mang về đức tin rằng đây là cú pháp đúng để sử dụng 46 00:02:37,000 --> 00:02:41,000 khi sử dụng một thư viện như thư viện này PHPMailer. 47 00:02:41,000 --> 00:02:44,000 Và sau đó vào cuối của tập tin này, chúng tôi đã tự động tạo ra một email 48 00:02:44,000 --> 00:02:47,000 đã gửi vào tài khoản jharvard@cs50.net của tôi 49 00:02:47,000 --> 00:02:50,000 từ tài khoản jharvard@cs50.net của tôi, 50 00:02:50,000 --> 00:02:54,000 và chúng tôi thông báo cho người sử dụng cho phù hợp rằng họ đã được đăng ký cho môn thể thao này. 51 00:02:54,000 --> 00:02:57,000 Đó là khá nhiều Frosh tin nhắn tức thì trang web đã làm tất cả những năm trước đây 52 00:02:57,000 --> 00:03:00,000 khi tôi thực hiện nó, được cấp, trong một ngôn ngữ khác nhau, 53 00:03:00,000 --> 00:03:02,000 nhưng nó cho thấy bạn có lẽ sức mạnh mà bạn có 54 00:03:02,000 --> 00:03:05,000 bây giờ mà bạn có thể thể hiện bản thân không chỉ lập trình 55 00:03:05,000 --> 00:03:08,000 ở mức thấp trong một ngôn ngữ như C, nhưng ở một mức độ cao hơn nhiều 56 00:03:08,000 --> 00:03:11,000 với những ứng dụng rất thực tế trên thế giới như email thực sự giải quyết 57 00:03:11,000 --> 00:03:13,000 một số vấn đề thế giới thực. 58 00:03:13,000 --> 00:03:16,000 >> Bây giờ, tất nhiên, ngay cả khi tôi sử dụng kịch bản này để tạo ra một số 59 00:03:16,000 --> 00:03:20,000 email tự động từ jharvard@cs50.net, mà thực sự là một tài khoản 60 00:03:20,000 --> 00:03:23,000 mà tôi có thể truy cập, không thể khá cẩn thận để gửi 61 00:03:23,000 --> 00:03:26,000 gửi chỉ từ tài khoản thực sự của riêng bạn, 62 00:03:26,000 --> 00:03:30,000 vì sợ rằng những thứ có được trong một chút nước nóng trong cuộc sống. 63 00:03:30,000 --> 00:03:35,000 Với mà nói, Bây giờ chúng ta hãy chuyển sang giải quyết một vấn đề hoàn toàn khác nhau, 64 00:03:35,000 --> 00:03:37,000 của các quốc gia giữ lại. 65 00:03:37,000 --> 00:03:39,000 Bây giờ, điều này không những gì thực sự có nghĩa là gì? 66 00:03:39,000 --> 00:03:42,000 HTTP, giao thức truyền siêu văn bản này, 67 00:03:42,000 --> 00:03:45,000 thực sự là một giao thức không quốc tịch, và điều này có nghĩa là 68 00:03:45,000 --> 00:03:48,000 khi bạn kéo lên một cái gì đó giống như Google.com và sau đó nhấn Enter 69 00:03:48,000 --> 00:03:51,000 thường trình duyệt của bạn có một số loại biểu tượng quay mà sau đó 70 00:03:51,000 --> 00:03:54,000 kết quả trong một số trang web đang được tải về, 71 00:03:54,000 --> 00:03:57,000 và sau đó là biểu tượng nhỏ ngừng quay, và đó thực sự cho thấy 72 00:03:57,000 --> 00:04:02,000 HTTP đã hoàn thành một số loại kết nối đến máy chủ và đó là nó. 73 00:04:02,000 --> 00:04:05,000 HTTP là quốc tịch trong ý nghĩa rằng nó không duy trì 74 00:04:05,000 --> 00:04:08,000 một kết nối liên tục đến máy chủ trong Skype theo cùng một cách không 75 00:04:08,000 --> 00:04:11,000 hoặc Gchat không bởi vì với HTTP 76 00:04:11,000 --> 00:04:15,000 giả định là một khi bạn đã lấy một trang web đó là nó. 77 00:04:15,000 --> 00:04:18,000 >> Bây giờ, trong thực tế những ngày này trên các trang web như Facebook và Google Maps 78 00:04:18,000 --> 00:04:21,000 và Twitter và như thế có rất nhiều tính năng động, theo đó 79 00:04:21,000 --> 00:04:25,000 ngay cả sau khi biểu tượng đó ngừng quay trong thực tế, có thể nhận được cập nhật nhiều hơn 80 00:04:25,000 --> 00:04:29,000 từ máy chủ, tweet của quý vị nhiều hơn nữa, cập nhật trạng thái trên Facebook và các loại tương tự. 81 00:04:29,000 --> 00:04:33,000 Nhưng ngay cả khi đó là sử dụng một kỹ thuật mà chúng tôi sẽ nói về trong một hoặc hai tuần 82 00:04:33,000 --> 00:04:36,000 được biết đến như Ajax bằng cách sử dụng một ngôn ngữ được gọi là JavaScript, 83 00:04:36,000 --> 00:04:38,000 nhưng vào cuối ngày, HTTP là vẫn còn quốc tịch. 84 00:04:38,000 --> 00:04:42,000 Và nếu bạn muốn bằng cách nào đó nhớ lại những gì về người sử dụng 85 00:04:42,000 --> 00:04:44,000 ngay cả sau khi họ đã bị ngắt kết nối từ máy chủ của bạn 86 00:04:44,000 --> 00:04:47,000 PHP không đủ khả năng cho bạn một phương tiện để làm điều này 87 00:04:47,000 --> 00:04:52,000 bởi vì, như chúng ta đã thấy thời gian qua, PHP có một số superglobals, 88 00:04:52,000 --> 00:04:55,000 và superglobal một là, một lần nữa, một biến toàn cầu đặc biệt 89 00:04:55,000 --> 00:04:59,000 đó là giao cho bạn bởi các máy chủ web và PHP chính nó. 90 00:04:59,000 --> 00:05:02,000 >> Bạn không phải làm bất cứ điều gì để đưa giá trị trong nó, 91 00:05:02,000 --> 00:05:05,000 và giữa các superglobals chúng tôi đã nhìn thấy vậy, đến nay được nhận và đăng, 92 00:05:05,000 --> 00:05:08,000 đó là nơi mà các trường mẫu được đặt tự động cho bạn, 93 00:05:08,000 --> 00:05:11,000 cũng như một vài người khác mà chúng tôi đã không nhìn thấy. 94 00:05:11,000 --> 00:05:17,000 Bên trong của $ _SERVER một số biến đặc biệt liên quan đến máy chủ riêng của mình. 95 00:05:17,000 --> 00:05:22,000 Địa chỉ IP, giao thức HTTP hoặc HTTPS bạn đã sử dụng là gì, 96 00:05:22,000 --> 00:05:25,000 yêu cầu phương pháp sử dụng và như thế, vì vậy có thú vị một số, 97 00:05:25,000 --> 00:05:29,000 ngon ngọt thông tin chi tiết về máy chủ, và trên thực tế, người sử dụng trong đó là tốt. 98 00:05:29,000 --> 00:05:33,000 Có $ _cookie, đó là nơi mà những điều được gọi là cookie được lưu trữ. 99 00:05:33,000 --> 00:05:36,000 Chúng tôi sẽ không dành nhiều thời gian về các cookie tự ngày hôm nay, 100 00:05:36,000 --> 00:05:40,000 nhưng biết bây giờ mà một cookie chỉ là một mảnh nhỏ của thông tin 101 00:05:40,000 --> 00:05:43,000 rằng một máy chủ web có thể trồng trên một trình duyệt web 102 00:05:43,000 --> 00:05:46,000 và lần lượt RAM hoặc ổ cứng của máy tính của mình 103 00:05:46,000 --> 00:05:49,000 để lưu trữ thông tin về người sử dụng, ví dụ, tên người dùng của họ 104 00:05:49,000 --> 00:05:52,000 để họ không cần phải gõ nó mỗi khi họ đăng nhập vào hoặc một số 105 00:05:52,000 --> 00:05:55,000 số duy nhất hoặc định danh cho người dùng 106 00:05:55,000 --> 00:05:58,000 do đó bạn không có sự chấp thuận của họ với các loại cùng một câu hỏi về 107 00:05:58,000 --> 00:06:00,000 ưu đãi trong tương lai, nhưng hầu hết quan tâm 108 00:06:00,000 --> 00:06:02,000 ngay bây giờ là $ _SESSION. 109 00:06:02,000 --> 00:06:07,000 >> Superglobal đó, như những người khác, được giao cho bạn tự động bằng PHP 110 00:06:07,000 --> 00:06:10,000 khi bạn đang viết các trang web dựa trên PHP 111 00:06:10,000 --> 00:06:13,000 có thể lưu trữ bất cứ điều gì bạn muốn, chuỗi, số nguyên, 112 00:06:13,000 --> 00:06:16,000 nổi điểm, giá trị, mảng, đối tượng, 113 00:06:16,000 --> 00:06:20,000 thực sự bất cứ điều gì mà bạn muốn, và nó cho phép bạn lưu trữ nó trong một cách 114 00:06:20,000 --> 00:06:23,000 rằng ngay cả khi người dùng truy cập bạn bây giờ và sau đó 115 00:06:23,000 --> 00:06:26,000 trở lại một phút từ bây giờ hoặc 5 phút từ bây giờ bởi vì 116 00:06:26,000 --> 00:06:28,000 họ mất thời gian của họ trước khi nhấp vào một số liên kết khác 117 00:06:28,000 --> 00:06:32,000 PHP sẽ đảm bảo rằng bất cứ điều gì bạn đặt trong đó superglobal phiên 118 00:06:32,000 --> 00:06:37,000 phút hoặc 5 phút trước đây vẫn sẽ ở đó khi người sử dụng trở lại. 119 00:06:37,000 --> 00:06:40,000 Và bên dưới mui xe superglobal này được thực hiện bằng cách 120 00:06:40,000 --> 00:06:44,000 những điều được gọi là cookies, nhưng bây giờ, nó chỉ là một khái niệm trừu tượng 121 00:06:44,000 --> 00:06:47,000 theo đó nó là loại tương đương với chương trình của một giỏ mua hàng. 122 00:06:47,000 --> 00:06:50,000 Dù bạn, các lập trình viên, trong đó 123 00:06:50,000 --> 00:06:53,000 superglobal mảng kết hợp sẽ có một số số phút sau 124 00:06:53,000 --> 00:06:59,000 cho đến khi bạn xóa nó hoặc cho đến khi người dùng bỏ hoàn toàn trình duyệt của mình. 125 00:06:59,000 --> 00:07:02,000 >> Chúng ta hãy xem xét một ví dụ về làm thế nào điều này là thực sự được sử dụng. 126 00:07:02,000 --> 00:07:07,000 Trong counter.php giữa các miếng ngày hôm nay của mã 127 00:07:07,000 --> 00:07:09,000 chúng tôi có dòng sau. 128 00:07:09,000 --> 00:07:13,000 Vào lúc bắt đầu của tập tin này, chúng tôi có một loạt các ý kiến ​​màu xanh, được không thú vị cho bây giờ. 129 00:07:13,000 --> 00:07:15,000 Nhưng trong dòng 13, chúng tôi có một dòng mới, 130 00:07:15,000 --> 00:07:18,000 session_start, và thực hiện chính xác những gì nó nói. 131 00:07:18,000 --> 00:07:20,000 Nó bắt đầu phiên. 132 00:07:20,000 --> 00:07:25,000 Nó cho phép bạn sử dụng là lớn superglobal $ _SESSION, và nó đơn giản như vậy. 133 00:07:25,000 --> 00:07:30,000 Bây giờ, nếu chúng ta tiếp tục nhìn vào dòng 16, chúng ta hãy cố gắng tìm ra những gì trang web này là sẽ làm. 134 00:07:30,000 --> 00:07:35,000 If (isset ($ _SESSION ["counter"]) sau đó đi trước 135 00:07:35,000 --> 00:07:39,000 và lưu trữ trong biến đếm, chữ thường truy cập, 136 00:07:39,000 --> 00:07:42,000 $ _SESSION ["Counter"]. 137 00:07:42,000 --> 00:07:45,000 Điều này dường như được khai báo một biến địa phương gọi là truy cập 138 00:07:45,000 --> 00:07:48,000 bên trong đó đặt một bản sao của bất cứ điều gì là bên trong của các superglobal 139 00:07:48,000 --> 00:07:52,000 được gọi là phiên họp tại địa điểm "phản". 140 00:07:52,000 --> 00:07:56,000 Khác, rõ ràng, địa phương truy cập biến này, được khởi tạo là 0. 141 00:07:56,000 --> 00:08:01,000 >> Tuy nhiên, sau đó một vài dòng sau trong 26 thông báo rằng bản sao của phiên truy cập, 142 00:08:01,000 --> 00:08:06,000 chính của nó, có gán giá trị mới là giá trị hiện tại của nó cộng thêm 1. 143 00:08:06,000 --> 00:08:09,000 Trong ngắn hạn, tập tin này có vẻ được cập nhật 144 00:08:09,000 --> 00:08:13,000 một truy cập được lưu trữ bên trong của superglobal phiên 145 00:08:13,000 --> 00:08:16,000 bằng cách tăng 1, nhưng lần đầu tiên giữ lại một bản sao của giá trị trước đó 146 00:08:16,000 --> 00:08:20,000 bằng cách lưu trữ nó trong một biến địa phương được gọi là $ truy cập, 147 00:08:20,000 --> 00:08:22,000 và sau đó xuống đây chúng ta hãy xem những gì còn lại. 148 00:08:22,000 --> 00:08:24,000 Hóa ra đó là khá nhiều chỉ là HTML. 149 00:08:24,000 --> 00:08:29,000 Ở dưới cùng của trang này, chúng tôi nhìn thấy trong dòng 37 mà tôi đã truy cập trang web 150 00:08:29,000 --> 00:08:33,000 số lần truy cập, do đó, có một vài tính năng thú vị ở đây. 151 00:08:33,000 --> 00:08:36,000 Một, điều này rõ ràng là một biến, nhưng nó không đủ để chỉ cần đặt 152 00:08:36,000 --> 00:08:39,000 $ Truy cập trong cơ thể của HTML của bạn bởi vì tất nhiên 153 00:08:39,000 --> 00:08:43,000 nếu nó chỉ có trong PHP HTML của bạn sẽ cho rằng chỉ là HTML. 154 00:08:43,000 --> 00:08:48,000 Bạn có nghĩa là muốn $ truy cập được in trên màn hình. 155 00:08:48,000 --> 00:08:51,000 >> Nhưng thay vào đó bằng cách thả vào PHP chế độ 156 00:08:51,000 --> 00:08:55,000 với phần này của cú pháp, chúng tôi tự động có thể chèn một giá trị ở đây 157 00:08:55,000 --> 00:08:58,000 tinh thần tương tự với những gì chúng tôi đã làm thời gian qua với 158 00:08:58,000 --> 00:09:00,000 chèn các giá trị thành chuỗi. 159 00:09:00,000 --> 00:09:04,000 Trong thực tế, điều này chỉ là một ký hiệu viết tắt cho nói một cái gì đó như thế này theo nghĩa đen, 160 00:09:04,000 --> 00:09:12,000 in (truy cập) hoặc thậm chí một cái gì đó như printf (% s, truy cập), 161 00:09:12,000 --> 00:09:14,000 hoặc thậm chí, như bạn có thể nhìn thấy trực tuyến hoặc trong sách giáo khoa, 162 00:09:14,000 --> 00:09:17,000 có một chức năng trong PHP gọi là tiếng vọng 163 00:09:17,000 --> 00:09:20,000 mà không điều tương tự, và tất cả những cách chỉ còn hơi 164 00:09:20,000 --> 00:09:25,000 nói <=. 165 00:09:25,000 --> 00:09:28,000 Trong một trường hợp này, bạn không cần phải đặt 166 00:09:28,000 --> 00:09:30,000 PHP từ sau dấu chấm hỏi. 167 00:09:30,000 --> 00:09:34,000 Đây là ký hiệu viết tắt, một lần nữa, những gì chúng ta chỉ thấy một chút thời gian trước 168 00:09:34,000 --> 00:09:37,000 được lặp lại một số giá trị. 169 00:09:37,000 --> 00:09:39,000 >> Hãy xem những gì kết quả cuối cùng của việc này thực sự là. 170 00:09:39,000 --> 00:09:43,000 Hãy để tôi đi qua vào tập tin counter.php của chúng tôi, 171 00:09:43,000 --> 00:09:47,000 và chúng ta sẽ thấy rằng David chỉ cần thực hiện một sai lầm bằng cách chơi với các mã có. 172 00:09:47,000 --> 00:09:50,000 Chúng ta hãy đi sửa chữa bất cứ điều gì ông hơi say lên, 173 00:09:50,000 --> 00:09:54,000 và lỗi dường như có mặt ở đó đã biến mất, trên dòng 37. 174 00:09:54,000 --> 00:09:59,000 Theo đầu trang này, tôi đã truy cập trang web này 0 lần. 175 00:09:59,000 --> 00:10:02,000 Vâng, chúng ta đi trước bây giờ, và ở trên cùng của trình duyệt bấm vào 176 00:10:02,000 --> 00:10:05,000 tải lại biểu tượng, và tôi nhấp vào tải lại, 177 00:10:05,000 --> 00:10:12,000 và bây giờ tôi đã truy cập các trang web 1 lần, 2, 3, 4, 5, 6, 7, 8. 178 00:10:12,000 --> 00:10:16,000 Và quả thực, nếu chúng ta nhìn vào mã nguồn của trang này mã nguồn thực tế đang thay đổi, 179 00:10:16,000 --> 00:10:19,000 và nhận thấy sự vắng mặt hoàn toàn của PHP nào, và đó là bởi vì 180 00:10:19,000 --> 00:10:23,000 Mã PHP được đánh giá hay giải thích phía máy chủ, 181 00:10:23,000 --> 00:10:27,000 và do đó có nghĩa là đầu ra của kịch bản PHP là những gì cuối cùng gửi đến trình duyệt, 182 00:10:27,000 --> 00:10:31,000 trong trường hợp này là một số mã HTML và một số văn bản thô. 183 00:10:31,000 --> 00:10:33,000 Điều gì đang xảy ra ở đây? 184 00:10:33,000 --> 00:10:37,000 >> Vâng, với dòng tương đối ít mã tôi có thể để lưu trữ 185 00:10:37,000 --> 00:10:40,000 liên tục trong quá trình của một vài giây, hoặc nếu chúng tôi chờ đợi đủ lâu, 186 00:10:40,000 --> 00:10:44,000 phút, thậm chí vài giờ, một số giá trị trong một cách mà làm cho HTTP 187 00:10:44,000 --> 00:10:47,000 stateful có vẻ như là mặc dù chúng tôi đã giữ lại 188 00:10:47,000 --> 00:10:51,000 kết nối đến máy chủ, và nó chỉ là ghi nhớ những gì tôi đã nói với nó thời gian qua, 189 00:10:51,000 --> 00:10:55,000 nhưng trong thực tế có một bó toàn bộ phức tạp xảy ra bên dưới mui xe 190 00:10:55,000 --> 00:10:59,000 liên quan đến các tập tin cookie mà cho phép PHP để cho tôi ảo tưởng này 191 00:10:59,000 --> 00:11:02,000 giỏ mua hàng này giống như tính năng này. 192 00:11:02,000 --> 00:11:05,000 Để bây giờ, một ví dụ nhỏ, nơi chúng tôi đang chỉ lưu trữ một số nguyên, 193 00:11:05,000 --> 00:11:08,000 nhưng đó tính năng này sẽ trở lại có giá trị lớn 194 00:11:08,000 --> 00:11:10,000 khi chúng tôi bắt đầu nói chuyện về các dự án phức tạp hơn, 195 00:11:10,000 --> 00:11:12,000 trong đó có vấn đề thiết lập 7. 196 00:11:12,000 --> 00:11:16,000 Đây là vấn đề của bạn cuối cùng trong CS50. 197 00:11:16,000 --> 00:11:19,000 Tôi biết, nó rất buồn, nhưng những gì bạn sẽ tìm thấy là chúng ta sẽ kết luận 198 00:11:19,000 --> 00:11:22,000 phần này của học kỳ bằng cách thực sự chuyển đổi 199 00:11:22,000 --> 00:11:25,000 từ bối cảnh của C chắc chắn với bối cảnh của PHP 200 00:11:25,000 --> 00:11:27,000 nhưng trong khi sử dụng một số nguyên tắc cơ bản rất giống nhau 201 00:11:27,000 --> 00:11:29,000 chúng tôi đã nói chuyện về một thời gian. 202 00:11:29,000 --> 00:11:33,000 >> Mục tiêu với pset 7 là thực hiện CS50 Tài chính, 203 00:11:33,000 --> 00:11:37,000 mà là phiên bản của riêng bạn của Yahoo Tài chính hoặc Google Finance 204 00:11:37,000 --> 00:11:40,000 hoặc thậm chí Etrade.com nhờ đó mà bạn có khả năng 205 00:11:40,000 --> 00:11:43,000 nhìn lên giá cổ phiếu cho các ký hiệu nhất định, nhưng thậm chí còn nhiều hơn thế 206 00:11:43,000 --> 00:11:48,000 bạn có khả năng để "mua" và "bán" cổ phiếu 207 00:11:48,000 --> 00:11:51,000 được giao dịch trên thị trường chứng khoán khác nhau bởi vì như trang chủ 208 00:11:51,000 --> 00:11:55,000 ở đây, mà thực sự là mức độ mà chúng tôi đã bắt đầu 209 00:11:55,000 --> 00:11:59,000 đặt vấn đề cho bạn, bạn có một hình thức đăng nhập mà yêu cầu một tên người dùng và mật khẩu. 210 00:11:59,000 --> 00:12:03,000 Nó có một nút submit, nhưng sau đó, khi chúng ta cuối cùng sẽ thấy, 211 00:12:03,000 --> 00:12:06,000 không có gì thực sự xảy ra bên dưới mui xe nhưng vì nó 212 00:12:06,000 --> 00:12:09,000 còn lại dành cho bạn để thực hiện các khả năng để đăng ký người dùng mới, 213 00:12:09,000 --> 00:12:12,000 khả năng để mua cổ phiếu, bán cổ phiếu, 214 00:12:12,000 --> 00:12:14,000 để thực sự tìm kiếm giá cổ phiếu hiện tại. 215 00:12:14,000 --> 00:12:17,000 >> Và quả thực, điều này sẽ được như thế giới thực càng tốt bởi vì chúng tôi đã làm 216 00:12:17,000 --> 00:12:20,000 bao gồm một chút mã mà sẽ cho phép bạn với một chức năng duy nhất 217 00:12:20,000 --> 00:12:25,000 truy vấn Yahoo Tài chính, tuyệt vời làm cho dữ liệu có sẵn miễn phí 218 00:12:25,000 --> 00:12:31,000 nhìn lên giá cổ phiếu dựa trên các biểu tượng cổ phiếu hoặc biểu tượng ticker, 219 00:12:31,000 --> 00:12:34,000 và bạn nhận được giá cổ phiếu hiện tại của ngày. 220 00:12:34,000 --> 00:12:37,000 Các dữ liệu bạn đang thực sự nhìn thấy này pset cụ thể sẽ được 221 00:12:37,000 --> 00:12:40,000 như thế giới thực, vì nó có thể nhận được như vậy mà bạn đang thực sự interfacing 222 00:12:40,000 --> 00:12:43,000 với cổ phiếu thế giới thực, giá thế giới thực, 223 00:12:43,000 --> 00:12:47,000 và chúng ta sẽ thấy bạn có thể làm có lẽ bao nhiêu tiền 224 00:12:47,000 --> 00:12:51,000 trong vài ngày tiếp theo chơi với bộ vấn đề của bạn. 225 00:12:51,000 --> 00:12:55,000 >> Nhưng chúng ta hãy lần đầu tiên thiết lập các giai đoạn cho làm thế nào để thiết kế một cái gì đó chắc chắn phức tạp hơn 226 00:12:55,000 --> 00:12:59,000 hơn counter.php, đó là phức tạp hơn so với bất kỳ tin nhắn tức thì ví dụ Frosh vậy, đến nay, 227 00:12:59,000 --> 00:13:02,000 và chúng ta hãy cố gắng để giới thiệu một mô hình ở đây cho phép chúng tôi 228 00:13:02,000 --> 00:13:06,000 cho cả pset 7 và có thể cho dự án cuối cùng của bạn nếu bạn làm web cái gì đó dựa 229 00:13:06,000 --> 00:13:11,000 để giữ mã của bạn được tổ chức tốt, để giữ cho mình tỉnh táo, 230 00:13:11,000 --> 00:13:15,000 và để có một bước tiến tới hợp tác, cho dù trong dự án cuối cùng của CS50 231 00:13:15,000 --> 00:13:18,000 hoặc xa hơn nếu bạn tiếp tục chương trình một cái gì đó trong tương lai. 232 00:13:18,000 --> 00:13:21,000 Có mô hình thiết kế tổng thể 233 00:13:21,000 --> 00:13:24,000 khoa học máy tính và phát triển phần mềm nói chung 234 00:13:24,000 --> 00:13:27,000 được biết đến như MVC, xem mô hình điều khiển, 235 00:13:27,000 --> 00:13:30,000 và đây là một từ viết tắt ngớ ngẩn mô tả một ý tưởng rất tốt đẹp, 236 00:13:30,000 --> 00:13:34,000 đó là sự tách biệt của các khía cạnh khác nhau của một chương trình, 237 00:13:34,000 --> 00:13:39,000 đặc biệt giữ riêng biệt logic hay là logic kinh doanh của một trang web 238 00:13:39,000 --> 00:13:42,000 do đó, rằng bất cứ điều gì có liên quan đến những thứ như 239 00:13:42,000 --> 00:13:45,000 gọi chức năng và truy vấn cơ sở dữ liệu và các loại tương tự 240 00:13:45,000 --> 00:13:48,000 xảy ra không nằm trong số HTML của bạn 241 00:13:48,000 --> 00:13:51,000 mà đúng hơn là trong các tập tin riêng biệt, và thực sự, có một tập tin này 242 00:13:51,000 --> 00:13:54,000 thường mà bạn đã gọi là bộ điều khiển 243 00:13:54,000 --> 00:13:56,000 đó thực sự là bộ não đằng sau hoạt động, và chúng tôi sẽ xem một ví dụ 244 00:13:56,000 --> 00:13:58,000 điều này trong thời điểm này chỉ là một. 245 00:13:58,000 --> 00:14:01,000 >> Có một mô hình được lập trình mã 246 00:14:01,000 --> 00:14:05,000 mà không nói chuyện với cơ sở dữ liệu của bạn, nói chuyện với Yahoo Tài chính và các loại tương tự, 247 00:14:05,000 --> 00:14:08,000 và sau đó có V trong MVC, các quan điểm, 248 00:14:08,000 --> 00:14:11,000 tất cả các công cụ liên quan đến thẩm mỹ, các tập tin mà thực sự có chứa 249 00:14:11,000 --> 00:14:14,000 HTML của bạn, có thể CSS của bạn và như thế. 250 00:14:14,000 --> 00:14:17,000 Ý tưởng ở đây, như hình ảnh này cho thấy, là bộ điều khiển 251 00:14:17,000 --> 00:14:21,000 là các tập tin, như chúng ta sẽ sớm thấy như bạn đặc biệt sẽ thấy trong pset 7, 252 00:14:21,000 --> 00:14:24,000 rằng thế giới nói chuyện với thông qua trình duyệt web của họ. 253 00:14:24,000 --> 00:14:27,000 Đó là tập tin được truy cập trên internet công cộng, 254 00:14:27,000 --> 00:14:30,000 nhưng bộ điều khiển nói chuyện với một mô hình có khả năng, 255 00:14:30,000 --> 00:14:34,000 đó là một hoặc nhiều tập tin khác có chứa mã liên quan đến dữ liệu, 256 00:14:34,000 --> 00:14:37,000 code liên quan đến cơ sở dữ liệu và các loại tương tự, và sau đó nó nói đến 257 00:14:37,000 --> 00:14:40,000 bộ điều khiển một hoặc nhiều các tập tin khác, được biết đến như quan điểm, 258 00:14:40,000 --> 00:14:43,000 đó là tính thẩm mỹ của một trang web, các mẫu của các loại, 259 00:14:43,000 --> 00:14:47,000 mà có thể mất một số dữ liệu như là đầu vào, nhưng vào cuối ngày 260 00:14:47,000 --> 00:14:50,000 logic chỉ bên trong của một cái nhìn nên thể hiện các dữ liệu đó, 261 00:14:50,000 --> 00:14:53,000 iterating trên một vòng lặp và thực sự phun ra một số 262 00:14:53,000 --> 00:14:56,000 HTML dựa trên rendition hoặc thậm chí một cái gì đó giống như một PDF. 263 00:14:56,000 --> 00:14:59,000 >> Gì tốt đẹp về MVC là bạn có thể có quan điểm khác nhau 264 00:14:59,000 --> 00:15:02,000 dựa vào loại thiết bị này, dựa vào loại định dạng tập tin mà bạn thực sự 265 00:15:02,000 --> 00:15:04,000 muốn hiển thị cho người dùng. 266 00:15:04,000 --> 00:15:10,000 Chúng ta hãy xem xét một vài ví dụ dần dần phức tạp hơn và cũng được thiết kế 267 00:15:10,000 --> 00:15:13,000 bằng cách bắt đầu từ đầu tiên với phiên bản 0 ở đây. 268 00:15:13,000 --> 00:15:16,000 Hãy để tôi đi trước và mở trong thư mục MVC của chúng tôi ngày hôm nay 269 00:15:16,000 --> 00:15:21,000 một file có tên index.php trong thư mục 0. 270 00:15:21,000 --> 00:15:26,000 Thông báo này là một trang web siêu đơn giản và rất underwhelming 271 00:15:26,000 --> 00:15:29,000 đó là sắp xếp của phiên bản 0 của trang chủ CS50 272 00:15:29,000 --> 00:15:32,000 và nhận thấy làm thế nào chúng ta có một liên kết đến bài giảng, chúng tôi có một liên kết đến Giáo trình, 273 00:15:32,000 --> 00:15:35,000 và nếu tôi làm theo các liên kết đến các bài giảng thông báo rằng URL 274 00:15:35,000 --> 00:15:39,000 lên hàng đầu sẽ thay đổi lectures.php. 275 00:15:39,000 --> 00:15:44,000 Nếu tôi sau đó thực hiện theo các liên kết 1 Tuần thông báo rằng các thay đổi URL đến week1.php. 276 00:15:44,000 --> 00:15:46,000 Có vẻ như là một thứ bậc cấu trúc khá đơn giản ở đây. 277 00:15:46,000 --> 00:15:49,000 >> Hãy có một cái nhìn nhanh chóng bên dưới mui xe như thế nào được đặt ra, 278 00:15:49,000 --> 00:15:53,000 và quả thật, nếu tôi nhìn vào index.php nó khá đơn giản. 279 00:15:53,000 --> 00:15:57,000 Trong thực tế, mặc dù tôi được gọi là một tập tin PHP không có mã chương trình thực tế. 280 00:15:57,000 --> 00:16:01,000 Có một nhận xét mà tôi đã viết ở đây trong PHP chỉ để người dùng không nhìn thấy nó. 281 00:16:01,000 --> 00:16:05,000 Tất nhiên, như trước, bất cứ điều gì đó là trong giữa các thẻ PHP 282 00:16:05,000 --> 00:16:08,000 được giải thích, thậm chí nếu đó là một lời nhận xét, và giải thích một lời nhận xét 283 00:16:08,000 --> 00:16:11,000 có nghĩa là chỉ để vứt nó đi vào cuối ngày và không thực sự 284 00:16:11,000 --> 00:16:15,000 gửi nó vào trình duyệt, do đó, tất cả mọi thứ ở đây là chỉ là thẩm mỹ. 285 00:16:15,000 --> 00:16:20,000 Nếu tôi mở tương tự như lectures.php này quá chỉ là một tập tin được mã hóa cứng. 286 00:16:20,000 --> 00:16:23,000 Nó xảy ra để được gọi là một cái gì đó. Php, 287 00:16:23,000 --> 00:16:27,000 nhưng nó thực sự chỉ là html, và week1.php, week2.php 288 00:16:27,000 --> 00:16:31,000 tương tự như vậy chỉ là đánh dấu, do đó, có một loạt các thiếu sót của thiết kế này. 289 00:16:31,000 --> 00:16:33,000 Một, đó là một số lượng lớn các sao chép / dán. 290 00:16:33,000 --> 00:16:37,000 Mặc dù điều duy nhất mà thay đổi trong số những tập tin này là danh sách không có thứ tự, 291 00:16:37,000 --> 00:16:41,000 các thẻ li, tôi dù sao cũng có loại doc, HTML, người đứng đầu, 292 00:16:41,000 --> 00:16:44,000 tiêu đề, cơ thể gần, gần HTML và nhiều hơn nữa 293 00:16:44,000 --> 00:16:47,000 trong tất cả các tập tin duy nhất, có nghĩa là nếu tôi muốn tái cơ cấu 294 00:16:47,000 --> 00:16:50,000 trang web này hoặc restylize tôi phải đi vào và thay đổi 295 00:16:50,000 --> 00:16:54,000 tìm và thay thế tất cả các file bằng tay hoặc với một số lớn. 296 00:16:54,000 --> 00:17:01,000 >> Chúng ta hãy một bước tiến tới một thiết kế thông minh hơn, còn suy nghĩ trong phiên bản 1 ở đây 297 00:17:01,000 --> 00:17:04,000 theo đó theo đọc tôi rằng chúng tôi đã bao gồm để bạn có thể chơi cùng với 298 00:17:04,000 --> 00:17:07,000 những nhàn nhã hơn ở nhà thông báo rằng chúng tôi có ở đây 299 00:17:07,000 --> 00:17:10,000 một bản tóm tắt của các tập tin trong phiên bản 1 của trang web này, 300 00:17:10,000 --> 00:17:13,000 và có vẻ như là tôi đã lấy nó khi bản thân mình yếu tố ra 301 00:17:13,000 --> 00:17:17,000 một số mã thông thường, header.php và footer.php. 302 00:17:17,000 --> 00:17:20,000 Vâng, chúng ta hãy nhìn vào những gì bên trong đầu tiên của những người. 303 00:17:20,000 --> 00:17:23,000 Header.php có vẻ quen thuộc, 304 00:17:23,000 --> 00:17:26,000 nhưng nhận thấy nơi nào nó cắt? 305 00:17:26,000 --> 00:17:30,000 Ngay sau khi dòng 19, vì vậy đó là tất cả mọi thứ đã được phổ biến 306 00:17:30,000 --> 00:17:33,000 từ các tập tin index.php, lectures.php, 307 00:17:33,000 --> 00:17:36,000 Tuần 1 và week2.php từ ví dụ trước. 308 00:17:36,000 --> 00:17:40,000 Những gì tôi đã làm là sao chép và cắt tất cả mọi thứ đã được phổ biến cho tất cả các tập tin, 309 00:17:40,000 --> 00:17:44,000 đặt nó trong một file riêng, và tương tự trong footer.php 310 00:17:44,000 --> 00:17:48,000 Tôi đã áp dụng cùng một nguyên tắc theo đó chỉ thú vị dòng 311 00:17:48,000 --> 00:17:52,000 trong footer.php này, hai cơ thể và HTML gần gần. 312 00:17:52,000 --> 00:17:55,000 >> Nhưng điều này có nghĩa là bây giờ là trong phiên bản mới 313 00:17:55,000 --> 00:17:59,000 thông báo index.php nó có thể đơn giản hơn nhiều. 314 00:17:59,000 --> 00:18:02,000 Cấp, nhiều hơn một chút khó hiểu, một chút ít trực quan 315 00:18:02,000 --> 00:18:06,000 theo trên xuống dưới, nhưng Thiên Chúa của tôi, tất cả của sự dư thừa đó là bây giờ đi. 316 00:18:06,000 --> 00:18:10,000 Chúng tôi yêu cầu bằng cách sử dụng một chức năng PHP nghĩa đen được gọi là yêu cầu lên hàng đầu, 317 00:18:10,000 --> 00:18:15,000 đó là rất gợi nhớ, nhớ lại, C # bao gồm cơ chế. 318 00:18:15,000 --> 00:18:17,000 Chúng tôi yêu cầu header.php ở đầu trang. 319 00:18:17,000 --> 00:18:20,000 Chúng tôi yêu cầu footer.php ở phía dưới, và điều duy nhất mà là khác nhau 320 00:18:20,000 --> 00:18:25,000 đặc biệt về tập tin này là nội dung có nghĩa là phải duy nhất cho nó. 321 00:18:25,000 --> 00:18:29,000 Nếu tôi sau đó đi vào, nói, lectures.php, cùng một nguyên tắc được áp dụng. 322 00:18:29,000 --> 00:18:32,000 Một lần nữa, một số ý kiến ​​lên hàng đầu, nhưng sau đó tôi yêu cầu tiêu đề, yêu cầu chân trang, 323 00:18:32,000 --> 00:18:35,000 và ở giữa nó chỉ có các nội dung thực sự thay đổi. 324 00:18:35,000 --> 00:18:38,000 Và nếu chúng ta nhìn vào tuần 1 và tuần 2, chúng tôi muốn nhìn thấy 325 00:18:38,000 --> 00:18:42,000 cùng một nguyên tắc đã được áp dụng ở đó. 326 00:18:42,000 --> 00:18:44,000 Vâng, chúng tôi đang không hoàn toàn thực hiện ở đó. 327 00:18:44,000 --> 00:18:48,000 >> Chúng ta hãy xem xét phiên bản 2, trong đó có một cấu trúc tương tự, 328 00:18:48,000 --> 00:18:50,000 nhưng nhận thấy bây giờ tôi đã giới thiệu cái gì khác. 329 00:18:50,000 --> 00:18:53,000 Trong dòng 10, tôi đã giới thiệu helpers.php, 330 00:18:53,000 --> 00:18:55,000 mà dường như có chức năng trợ giúp. 331 00:18:55,000 --> 00:18:58,000 Một chức năng trợ giúp nói chung là một chức năng tương đối ngắn 332 00:18:58,000 --> 00:19:01,000 mà bạn viết để giúp bạn ra ở những nơi khác nhau, 333 00:19:01,000 --> 00:19:04,000 và chúng ta hãy xem những gì bên trong của helpers.php. 334 00:19:04,000 --> 00:19:07,000 Trong trường hợp này, có vẻ như nó có 2 chức năng. 335 00:19:07,000 --> 00:19:10,000 Nhớ lại từ ngày khác với ví dụ khối lập phương của chúng tôi 336 00:19:10,000 --> 00:19:13,000 bạn có thể xác định các chức năng của riêng bạn trong PHP, và những gì tôi đã làm bây giờ là tôi đã 337 00:19:13,000 --> 00:19:17,000 xác định chức năng được gọi là làm cho chân và làm cho tiêu đề, 338 00:19:17,000 --> 00:19:21,000 là người đầu tiên trong số đó có một tham số gọi là dữ liệu, 339 00:19:21,000 --> 00:19:25,000 có giá trị mặc định là một mảng trống rỗng, như đề nghị có, 340 00:19:25,000 --> 00:19:29,000 và chúng tôi thực sự có thể viết ngắn gọn hơn trong phiên bản mới nhất của PHP 341 00:19:29,000 --> 00:19:32,000 bằng cách nói mở khung hình vuông, đóng vuông khung. 342 00:19:32,000 --> 00:19:35,000 Điều đó có nghĩa là một mảng trống có kích thước 0 nhưng dù sao một mảng. 343 00:19:35,000 --> 00:19:38,000 >> Chức năng này chiết xuất là một chút đặc biệt trong đó 344 00:19:38,000 --> 00:19:41,000 những gì nó là nó mất như là đối số của nó một mảng kết hợp 345 00:19:41,000 --> 00:19:45,000 có 0 hoặc nhiều cặp giá trị quan trọng, và nếu bạn có một chìa khóa của foo 346 00:19:45,000 --> 00:19:48,000 và giá trị của thanh chức năng chiết xuất 347 00:19:48,000 --> 00:19:51,000 tạo ra một tình huống trong đó bây giờ, như dòng 11, 348 00:19:51,000 --> 00:19:57,000 bạn có một biến địa phương gọi là $ foo có giá trị thanh. 349 00:19:57,000 --> 00:19:59,000 Và nếu bạn có các phím và các giá trị trong mảng dữ liệu, 350 00:19:59,000 --> 00:20:03,000 tương tự như vậy họ sẽ được trích xuất vào phạm vi địa phương 351 00:20:03,000 --> 00:20:06,000 hoặc tên không gian để footer.php và 352 00:20:06,000 --> 00:20:09,000 cùng một ý tưởng xuống đây để header.php 353 00:20:09,000 --> 00:20:12,000 có quyền truy cập vào các biến. 354 00:20:12,000 --> 00:20:15,000 Trong thực tế, tôi mở ra một lần nữa header.php 355 00:20:15,000 --> 00:20:18,000 và thu hút sự chú ý bây giờ những gì nó trông giống như trong phiên bản này. 356 00:20:18,000 --> 00:20:22,000 >> Thay vì cứng mã hóa CS50 là tiêu đề cho mỗi trang duy nhất 357 00:20:22,000 --> 00:20:24,000 nhận thấy sự năng động đó là có thể bây giờ. 358 00:20:24,000 --> 00:20:29,000 Trong dòng 5 tôi nhắc lại một biến tiêu đề, 359 00:20:29,000 --> 00:20:34,000 nhưng đầu tiên tôi đi qua mà biến tiêu đề đến một chức năng được gọi là htmlspecialchars. 360 00:20:34,000 --> 00:20:38,000 Một tên ngu ngốc cho một chức năng, miễn là nó, nhưng nó thực sự những gì nó nói. 361 00:20:38,000 --> 00:20:41,000 Nó đảm bảo rằng bất kỳ ký tự đặc biệt 362 00:20:41,000 --> 00:20:46,000 trong chuỗi đó là được thông qua tại đúng cách trốn thoát HTML. 363 00:20:46,000 --> 00:20:49,000 Điều này thực sự là một cách để tránh một cái gì đó được gọi là một trang web qua kịch bản tấn công 364 00:20:49,000 --> 00:20:52,000 theo đó một người nào đó có thể độc hại hoặc vô tình 365 00:20:52,000 --> 00:20:55,000 tiêm HTML riêng của họ vào trang web của bạn 366 00:20:55,000 --> 00:20:59,000 bằng cách dán vào một số hình thức, ví dụ, 367 00:20:59,000 --> 00:21:02,000 một cái gì đó mà bạn không khá mong đợi, đặc biệt là mã JavaScript, 368 00:21:02,000 --> 00:21:05,000 như chúng ta sẽ nói về trong một tuần hoặc hai. 369 00:21:05,000 --> 00:21:08,000 >> Này header.php bây giờ, đó là một cái nhìn 370 00:21:08,000 --> 00:21:12,000 trong ý nghĩa rằng nó cho phép bạn xem thẩm mỹ nội dung của một số tập dữ liệu. 371 00:21:12,000 --> 00:21:14,000 Nhưng đặc biệt hơn, đó là một bản mẫu. 372 00:21:14,000 --> 00:21:19,000 Đây là loại của một kế hoạch chi tiết về những gì chúng ta muốn tiêu đề của mỗi trang để trông giống như, 373 00:21:19,000 --> 00:21:23,000 nhưng có một số tính năng động mà chúng tôi muốn tiêu đề để được tự động chèn 374 00:21:23,000 --> 00:21:26,000 dựa trên biến tiêu đề 375 00:21:26,000 --> 00:21:30,000 được chiết xuất khi chúng tôi gọi, một lần nữa, 376 00:21:30,000 --> 00:21:33,000 tiêu đề khiến chức năng. 377 00:21:33,000 --> 00:21:36,000 Bây giờ, nếu chúng ta nhìn ở chân render, có thực sự không có nhiều sử dụng mà ngay bây giờ 378 00:21:36,000 --> 00:21:40,000 bởi vì trong footer.php không có tính năng động nào. 379 00:21:40,000 --> 00:21:43,000 Có thể có, nhưng tại thời điểm đó là một danh sách cứng cũng là 2 thẻ, 380 00:21:43,000 --> 00:21:46,000 nhưng ý tưởng tương tự cũng được áp dụng, do đó, thực tế cho thấy lý do tại sao 381 00:21:46,000 --> 00:21:49,000 chúng ta đã lãng phí thời gian có một tiêu đề vẽ lại và vẽ lại một chức năng chân? 382 00:21:49,000 --> 00:21:52,000 Hãy để tôi đi thay vì vào phiên bản 3, 383 00:21:52,000 --> 00:21:56,000 và trong phiên bản 3 trong những người giúp đỡ, tôi đã quyết định để đơn giản hóa nó nhiều hơn. 384 00:21:56,000 --> 00:21:58,000 >> Hãy để tôi có một chức năng vẽ lại. 385 00:21:58,000 --> 00:22:02,000 Hãy để tôi phải mất một tham số khác, thời gian này được gọi là mẫu, 386 00:22:02,000 --> 00:22:05,000 đó là có nghĩa là tên của một mẫu, 387 00:22:05,000 --> 00:22:11,000 và sau đó tôi sẽ nối presumptuously php giá trị của biến đó. 388 00:22:11,000 --> 00:22:17,000 và sau đó nếu nó tồn tại foo.php, bar.php hoặc header.php và footer.php, 389 00:22:17,000 --> 00:22:20,000 sau đó tôi sẽ đi trước và trích xuất các dữ liệu biến 390 00:22:20,000 --> 00:22:23,000 và sau đó yêu cầu con đường đó. 391 00:22:23,000 --> 00:22:29,000 Nói cách khác, sử dụng này ngay bây giờ, nếu tôi mở index.php 392 00:22:29,000 --> 00:22:32,000 nhận thấy rằng tôi không gọi cho tiêu đề vẽ lại nữa. 393 00:22:32,000 --> 00:22:36,000 Tôi chỉ cần gọi render, nhưng tôi vượt qua trong một giá trị trích dẫn của tiêu đề 394 00:22:36,000 --> 00:22:39,000 để làm rõ mẫu tôi thực sự muốn để tải. 395 00:22:39,000 --> 00:22:41,000 >> Sau đó, ở đây nhận thấy những gì tôi đang làm. 396 00:22:41,000 --> 00:22:44,000 Tôi đang đi qua trong một chìa khóa tự động của tiêu đề, 397 00:22:44,000 --> 00:22:47,000 một giá trị CS50, và điều này quá, như chúng ta đã thấy trước đây, 398 00:22:47,000 --> 00:22:51,000 có thể được thực hiện gọn gàng hơn trong phiên bản mới nhất của PHP 399 00:22:51,000 --> 00:22:54,000 nơi tôi có thể thay thế chức năng mảng với dấu ngoặc vuông, 400 00:22:54,000 --> 00:22:57,000 mà tôi đề xuất là thậm chí còn dễ đọc hơn và chắc chắn 401 00:22:57,000 --> 00:22:59,000 một chút dễ dàng hơn để loại. 402 00:22:59,000 --> 00:23:02,000 Và tất nhiên, với các cuộc gọi vẽ lại chân ở phía dưới, 403 00:23:02,000 --> 00:23:05,000 chúng tôi không bận tâm đi qua trong một cuộc tranh luận thứ hai ở tất cả, không có mảng kết hợp, 404 00:23:05,000 --> 00:23:07,000 bởi vì có bên trong không có gì năng động của footer. 405 00:23:07,000 --> 00:23:10,000 Nó chỉ là một số thẻ gần gũi cho HTML. 406 00:23:10,000 --> 00:23:14,000 Tốt, chúng tôi đang thực hiện các bước theo hướng thực sự làm sạch mọi thứ ở đây, 407 00:23:14,000 --> 00:23:17,000 nhưng hãy để tôi mở ra 2 ví dụ thức. 408 00:23:17,000 --> 00:23:21,000 Điều này một, số 4, thông báo rằng tôi đã thực hiện một quyết định có ý thức 409 00:23:21,000 --> 00:23:26,000 cải tiến ví dụ trước bởi cuối cùng bằng cách sử dụng một số hệ thống phân cấp cho các tập tin của tôi. 410 00:23:26,000 --> 00:23:29,000 >> Chú ý rằng trong bản tóm tắt này, điều này đọc cho tôi, tôi đã giới thiệu 411 00:23:29,000 --> 00:23:32,000 một bao gồm các thư mục và thư mục một mẫu 412 00:23:32,000 --> 00:23:35,000 có nội dung đang có được những điều tôi muốn bao gồm 413 00:23:35,000 --> 00:23:38,000 và các mẫu mà tôi muốn làm, tương ứng. 414 00:23:38,000 --> 00:23:42,000 Điều này thực sự tôi là hậu môn và cố gắng để giữ cho mọi thứ gọn gàng, 415 00:23:42,000 --> 00:23:45,000 giữ các tập tin có liên quan với nhau, nhưng kết quả cuối cùng 416 00:23:45,000 --> 00:23:48,000 là bây giờ chúng ta có một thiết lập hơi ngăn nắp, nhưng chúng ta phải nhớ 417 00:23:48,000 --> 00:23:51,000 đến, ví dụ, index.php 418 00:23:51,000 --> 00:23:55,000 khi chúng tôi yêu cầu helpers.php tập tin 419 00:23:55,000 --> 00:24:01,000 bây giờ chúng ta phải yêu cầu nó thông qua bao gồm / helpers.php 420 00:24:01,000 --> 00:24:06,000 chứ không phải là chỉ nói helpers.php bởi vì bây giờ nó thực sự trong một thư mục phụ. 421 00:24:06,000 --> 00:24:09,000 Bây giờ, khi một sang một bên, bạn sẽ thấy trong các ví dụ và một số người khác 422 00:24:09,000 --> 00:24:11,000 các chức năng như yêu cầu, đòi hỏi một lần. 423 00:24:11,000 --> 00:24:15,000 Có thực sự là một chức năng được gọi là bao gồm, và họ đều có hành vi hơi khác nhau. 424 00:24:15,000 --> 00:24:18,000 Ở đây tôi nói yêu cầu một lần để làm cho siêu rõ ràng rằng tôi chỉ muốn những 425 00:24:18,000 --> 00:24:20,000 người giúp đỡ bao gồm trong dự án của tôi một lần. 426 00:24:20,000 --> 00:24:24,000 Nhưng nếu tôi cẩn thận và nếu tôi thực sự suy nghĩ thông qua logic của tôi đúng cách 427 00:24:24,000 --> 00:24:27,000 nó là đủ quá chỉ để nói yêu cầu lên hàng đầu 428 00:24:27,000 --> 00:24:31,000 chừng nào tôi còn bản thân mình không vô tình yêu cầu cùng một tập tin ở nơi khác. 429 00:24:31,000 --> 00:24:34,000 Trong thực tế, đây là một cách hiệu quả làm việc sau đó sử dụng nhiều hơn một chút 430 00:24:34,000 --> 00:24:38,000 yêu cầu một lần, vì vậy tôi sẽ cắt nó xuống chỉ yêu cầu. 431 00:24:38,000 --> 00:24:40,000 >> Chúng ta hãy thêm một bước nữa. 432 00:24:40,000 --> 00:24:46,000 Ví dụ cuối cùng bây giờ, phiên bản 5, có một hệ thống phân cấp thư mục thậm chí sạch hơn. 433 00:24:46,000 --> 00:24:50,000 Chú ý những gì tôi đã thực hiện ở đây mỗi đọc trong phiên bản cuối cùng 434 00:24:50,000 --> 00:24:54,000 bây giờ tôi có thư mục HTML của tôi, mà tôi đã có tất cả thời gian, 435 00:24:54,000 --> 00:24:58,000 nhưng bên trong đó bây giờ chỉ là lectures.php, index.php, 436 00:24:58,000 --> 00:25:01,000 week1.php và week2.php. 437 00:25:01,000 --> 00:25:05,000 Bao gồm các thư mục hiện đang sống cùng với các thư mục HTML, 438 00:25:05,000 --> 00:25:08,000 do đó, ở mức độ tương tự như người anh em, vậy để nói chuyện. 439 00:25:08,000 --> 00:25:10,000 Vì vậy, hiện thư mục mẫu. 440 00:25:10,000 --> 00:25:14,000 Takeaway quan trọng ở đây là tôi đã giới thiệu cấu trúc hơn một chút, 441 00:25:14,000 --> 00:25:17,000 nhưng tính năng quan trọng bây giờ là chỉ có các tập tin 442 00:25:17,000 --> 00:25:21,000 mà cần phải có trang web truy cập, công khai địa chỉ 443 00:25:21,000 --> 00:25:25,000 bởi một URL trên internet công cộng trong thư mục HTML của tôi. 444 00:25:25,000 --> 00:25:28,000 >> Trong khi đó, các tập tin khác, helpers.php, footer.php, 445 00:25:28,000 --> 00:25:32,000 header.php, được cho là có thể nhạy cảm hơn, 446 00:25:32,000 --> 00:25:35,000 có thể giúp đỡ thực sự có một số tên người dùng và mật khẩu hoặc một số trí tuệ 447 00:25:35,000 --> 00:25:39,000 tài sản của tôi, chức năng tôi thực sự không muốn thế giới nhìn thấy, ngay cả khi vô tình. 448 00:25:39,000 --> 00:25:45,000 Đó là thực hành tốt để giữ cho của thư mục công cộng HTML 449 00:25:45,000 --> 00:25:48,000 bất kỳ tập tin không cần mình phải được công khai. 450 00:25:48,000 --> 00:25:51,000 Tất cả những gì bạn phải làm trong trường hợp này khi nhìn vào, ví dụ, 451 00:25:51,000 --> 00:25:55,000 thư mục HTML của tập tin index.php, 452 00:25:55,000 --> 00:25:58,000 nhận thấy chúng ta chỉ có được một chút cẩn thận hơn khi yêu cầu 453 00:25:58,000 --> 00:26:00,000 hoặc yêu cầu một lần tập tin này. 454 00:26:00,000 --> 00:26:03,000 Tôi cần phải đầu tiên làm .. để đi đến thư mục cha, 455 00:26:03,000 --> 00:26:06,000 sau đó / bao gồm / helpers.php 456 00:26:06,000 --> 00:26:12,000 lặn quay trở lại để có được những tập tin mà tôi quan tâm. 457 00:26:12,000 --> 00:26:16,000 >> Bất kỳ câu hỏi sau đó trên MVC 458 00:26:16,000 --> 00:26:20,000 hoặc hiện thân tương đối đơn giản của chúng? 459 00:26:20,000 --> 00:26:23,000 Và hãy để tôi làm cho rõ ràng rằng, chúng tôi tập trung khá một chút về 460 00:26:23,000 --> 00:26:27,000 V ở đây, các quan điểm và bao thanh toán của các mẫu này. 461 00:26:27,000 --> 00:26:30,000 Chúng tôi đã không thực sự phân biệt M từ C chỉ được nêu ra. 462 00:26:30,000 --> 00:26:33,000 Trong thực tế, có thực sự là không có M ở đây, và ngay cả C của chúng tôi, 463 00:26:33,000 --> 00:26:36,000 điều khiển, không thực sự làm tất cả những gì nhiều, nhưng bạn sẽ nhận được nhiều hơn nữa 464 00:26:36,000 --> 00:26:39,000 quen thuộc với cả hai những 2 chữ cái từ MVC, 465 00:26:39,000 --> 00:26:43,000 hay đúng hơn, bạn sẽ nhận được nhiều quen thuộc hơn với C 466 00:26:43,000 --> 00:26:49,000 trong MVC cho 7 bộ vấn đề, do đó, có nhiều trên đường chân trời. 467 00:26:49,000 --> 00:26:51,000 Câu hỏi? 468 00:26:51,000 --> 00:26:53,000 Có thực sự là không có ai ở đây. 469 00:26:53,000 --> 00:26:57,000 >> Được rồi, Bây giờ chúng ta hãy di chuyển đến chủ đề thứ hai và cũng là cuối cùng cho ngày hôm nay. 470 00:26:57,000 --> 00:27:00,000 Đó là sự ra đời của một cơ sở dữ liệu. 471 00:27:00,000 --> 00:27:03,000 Cho đến thời điểm này, chúng tôi đã có một vài cách để lưu trữ dữ liệu. 472 00:27:03,000 --> 00:27:05,000 Chúng tôi đã sử dụng các biến. 473 00:27:05,000 --> 00:27:08,000 Trở lại trong tập tin C của chúng tôi, I / O thảo luận chúng tôi bắt đầu bằng cách sử dụng các tập tin văn bản 474 00:27:08,000 --> 00:27:11,000 và sử dụng các tập tin như fprintf, và sau đó chúng tôi thậm chí bắt đầu 475 00:27:11,000 --> 00:27:14,000 nói về CSV tập tin một chút, giá trị được tách nhau bằng dấu phẩy, 476 00:27:14,000 --> 00:27:17,000 do đó, tất cả trong số này cho phép chúng ta có được dữ liệu lưu trữ 477 00:27:17,000 --> 00:27:19,000 hoặc không liên tục hoặc liên tục. 478 00:27:19,000 --> 00:27:23,000 Nhưng ngay cả CSVs là không thực sự thuận lợi để tìm kiếm 479 00:27:23,000 --> 00:27:25,000 và chèn và xoá. 480 00:27:25,000 --> 00:27:28,000 Nó thực sự chỉ là một tập tin văn bản ngu ngốc cách nhau bằng dấu phẩy 481 00:27:28,000 --> 00:27:30,000 từng hàng từng hàng, vì vậy nếu bạn muốn 482 00:27:30,000 --> 00:27:32,000 tìm kiếm tập tin đó là tốt nhất bạn có thể làm thực sự là tuyến tính tìm kiếm. 483 00:27:32,000 --> 00:27:34,000 Bạn phải bắt đầu ở đầu của tập tin, đọc toàn bộ điều trong, 484 00:27:34,000 --> 00:27:36,000 và tìm kiếm một số giá trị quan tâm. 485 00:27:36,000 --> 00:27:39,000 Nếu bạn muốn chèn vào nó, bạn phải làm điều tương tự, 486 00:27:39,000 --> 00:27:41,000 iterating trên nó và chèn vào một nơi cụ thể, 487 00:27:41,000 --> 00:27:45,000 và trong thực tế, bạn có để làm tất cả của logic tìm kiếm chính mình. 488 00:27:45,000 --> 00:27:49,000 >> Bạn không thể làm mô hình thông minh kết hợp vào một tập tin CSV trừ khi bạn viết mã. 489 00:27:49,000 --> 00:27:51,000 Bạn không thể làm lọc của một tập tin CSV 490 00:27:51,000 --> 00:27:53,000 trừ khi bạn viết mã. 491 00:27:53,000 --> 00:27:56,000 Nó sẽ không được tốt đẹp nếu một người nào khác trong tất cả các nỗ lực 492 00:27:56,000 --> 00:27:59,000 để thực sự làm cho việc tìm kiếm dễ dàng và chèn dễ dàng 493 00:27:59,000 --> 00:28:01,000 và xóa và cập nhật và vv? 494 00:28:01,000 --> 00:28:04,000 Đó là chính xác những gì là một cơ sở dữ liệu. 495 00:28:04,000 --> 00:28:07,000 SQL, ngôn ngữ truy vấn có cấu trúc, là một ngôn ngữ khác 496 00:28:07,000 --> 00:28:10,000 mà chúng tôi đang giới thiệu ở đây ngày hôm nay, nhưng điều này là khá dễ tiếp cận, 497 00:28:10,000 --> 00:28:13,000 và những gì chúng tôi đang thực sự sẽ làm là chỉ cần nhổ ra khỏi nó một số nổi bật nhất 498 00:28:13,000 --> 00:28:16,000 đặc điểm để cho pset 7, và nếu bạn làm web cái gì đó dựa, 499 00:28:16,000 --> 00:28:19,000 dự án cuối cùng của bạn, bạn có khả năng để thể hiện chính mình 500 00:28:19,000 --> 00:28:22,000 về các truy vấn dữ liệu. 501 00:28:22,000 --> 00:28:25,000 Bạn có khả năng lưu trữ một chút hoặc rất nhiều dữ liệu 502 00:28:25,000 --> 00:28:28,000 một cách có cấu trúc hơn vào cuối ngày 503 00:28:28,000 --> 00:28:32,000 làm cho cuộc sống của bạn dễ dàng hơn bởi vì với SQL bạn có thể thể hiện chính mình 504 00:28:32,000 --> 00:28:35,000 chính xác hơn rất nhiều, nhiều hơn nữa phương pháp để 505 00:28:35,000 --> 00:28:40,000 lấy lại một số tập hợp dữ liệu từ một ngữ liệu lớn dữ liệu. 506 00:28:40,000 --> 00:28:45,000 >> Bạn có thể suy nghĩ của một cơ sở dữ liệu, trong trường hợp này, một cơ sở dữ liệu SQL, thực sự như Excel 507 00:28:45,000 --> 00:28:48,000 hoặc số nơi nó là một bảng tính, 508 00:28:48,000 --> 00:28:50,000 hoặc có thể nhiều bảng tính và bảng tính, tất nhiên, 509 00:28:50,000 --> 00:28:53,000 có hàng và cột, và đó là bởi vì 510 00:28:53,000 --> 00:28:56,000 SQL cơ sở dữ liệu quan hệ, quan hệ trong ý nghĩa 511 00:28:56,000 --> 00:28:59,000 mà họ lưu trữ dữ liệu trong các điều khoản của các bảng, 512 00:28:59,000 --> 00:29:01,000 hàng và cột. 513 00:29:01,000 --> 00:29:03,000 Họ thực hiện cao hơn so với một cái gì đó giống như một bảng tính, 514 00:29:03,000 --> 00:29:05,000 và một bảng tính có nghĩa là để được sử dụng bởi một con người. 515 00:29:05,000 --> 00:29:08,000 Một cơ sở dữ liệu có nghĩa là để được sử dụng bởi một lập trình viên 516 00:29:08,000 --> 00:29:12,000 viết mã chống lại nó, do đó, các hóa thân của một cơ sở dữ liệu 517 00:29:12,000 --> 00:29:14,000 là có được một trong hai dòng lệnh. 518 00:29:14,000 --> 00:29:18,000 >> Một trong những cơ sở dữ liệu quan hệ phổ biến nhất hiện có, một lần nữa, MySQL, 519 00:29:18,000 --> 00:29:22,000 đó là miễn phí tuyệt vời, hiệu suất rất cao, và đây là những gì 520 00:29:22,000 --> 00:29:24,000 Facebook được sử dụng từ rất sớm và đến một mức độ nào đó ngày nay vẫn còn 521 00:29:24,000 --> 00:29:27,000 để lưu trữ rất nhiều dữ liệu của nó, và chúng ta sẽ thấy trong một thời điểm 522 00:29:27,000 --> 00:29:30,000 rằng bằng cách sử dụng các lệnh tương đối đơn giản 523 00:29:30,000 --> 00:29:33,000 chúng ta có thể chọn dữ liệu, dữ liệu chèn, cập nhật dữ liệu, 524 00:29:33,000 --> 00:29:37,000 xóa dữ liệu và như thế, nhưng may mắn thay, có một người sử dụng giao diện thân thiện hơn 525 00:29:37,000 --> 00:29:39,000 hơn là chỉ cần gõ tại dấu nhắc màu đen và trắng ở đây. 526 00:29:39,000 --> 00:29:43,000 Chúng tôi sẽ sử dụng cho pset 7 và vượt ra ngoài một công cụ miễn phí được gọi là phpMyAdmin. 527 00:29:43,000 --> 00:29:45,000 Tên là sự trùng hợp ngẫu nhiên. 528 00:29:45,000 --> 00:29:47,000 Công cụ này xảy ra để được thực hiện trong PHP, 529 00:29:47,000 --> 00:29:49,000 nhưng đó là về cơ bản không liên quan. 530 00:29:49,000 --> 00:29:53,000 Gì hữu ích về phpMyAdmin là nó là một tiện ích dựa trên web. 531 00:29:53,000 --> 00:29:55,000 Chúng tôi đã cài đặt sẵn trong thiết bị này cho bạn, 532 00:29:55,000 --> 00:29:58,000 và với nó, bạn có thể tạo bảng trong một cơ sở dữ liệu, 533 00:29:58,000 --> 00:30:01,000 bạn có thể chèn dữ liệu, xóa dữ liệu, và thường thấy 534 00:30:01,000 --> 00:30:04,000 dữ liệu của bạn trong một môi trường thân thiện với người sử dụng một cách công bằng. 535 00:30:04,000 --> 00:30:07,000 Người dùng của bạn sẽ không sử dụng phpMyAdmin. 536 00:30:07,000 --> 00:30:09,000 >> Điều này thực sự chỉ là một công cụ hành chính hoặc nhà phát triển 537 00:30:09,000 --> 00:30:12,000 để xem và poke xung quanh dữ liệu của bạn và tìm ra làm thế nào để cấu trúc nó, 538 00:30:12,000 --> 00:30:15,000 giống như bạn có thể sử dụng Excel hoặc số, 539 00:30:15,000 --> 00:30:19,000 nhưng nó sẽ là một cách tuyệt vời của hình dung những gì đang xảy ra bên dưới mui xe 540 00:30:19,000 --> 00:30:22,000 để bạn có thể tập trung vào giải quyết vấn đề thú vị và không quá nhiều 541 00:30:22,000 --> 00:30:25,000 vào các câu lệnh phức tạp. 542 00:30:25,000 --> 00:30:28,000 Chúng ta hãy xem xét một ví dụ về dữ liệu có thể được lưu trữ tabularly 543 00:30:28,000 --> 00:30:30,000 trong một cơ sở dữ liệu quan hệ. 544 00:30:30,000 --> 00:30:32,000 Dưới đây là một ví dụ. 545 00:30:32,000 --> 00:30:35,000 Bây giờ, thật không may, phpMyAdmin sai lầm ở phía bên đường ném quá nhiều từ 546 00:30:35,000 --> 00:30:38,000 và đồ họa ở bạn, nhưng nếu bạn trau dồi tại chỉ trên 547 00:30:38,000 --> 00:30:42,000 ID cột, cột tên người dùng, và cột băm, 548 00:30:42,000 --> 00:30:45,000 điều này là có hiệu quả một bảng tính, nhưng nó sẽ xảy ra một đoạn 549 00:30:45,000 --> 00:30:49,000 của một bên trong bảng thiết bị 550 00:30:49,000 --> 00:30:53,000 bằng cách sử dụng một tập tin mà chúng tôi cung cấp cho bạn trong vấn đề bộ 7. 551 00:30:53,000 --> 00:30:57,000 >> Đặc biệt, chúng tôi cung cấp cho bạn một tập tin đại diện cho 552 00:30:57,000 --> 00:31:01,000 một bảng của người dùng, do đó, một bảng tính có chứa người sử dụng với 3 cột, 553 00:31:01,000 --> 00:31:05,000 một trong số đó là một ID duy nhất bắt đầu từ 1 và được tăng lên sau đó. 554 00:31:05,000 --> 00:31:08,000 Cột thứ hai là một tên người dùng, và những người bạn của những người đã làm Hacker, 555 00:31:08,000 --> 00:31:12,000 phiên bản Hacker cho pset 2, có thể nhận ra một số các tên người sử dụng ít nhất. 556 00:31:12,000 --> 00:31:16,000 Ở phía bên tay phải là mật khẩu, nhưng chúng không phải là mật khẩu theo nghĩa đen. 557 00:31:16,000 --> 00:31:19,000 Chúng băm của nó, do đó, nó quay ra 558 00:31:19,000 --> 00:31:22,000 lưu trữ mật khẩu trong một cơ sở dữ liệu là một ý tưởng thực sự tồi tệ. 559 00:31:22,000 --> 00:31:25,000 Bạn đã có thể đọc tại một số điểm của một số trang web 560 00:31:25,000 --> 00:31:28,000 hoặc cơ sở dữ liệu của một số công ty bị xâm phạm, và sau đó bạn phải 561 00:31:28,000 --> 00:31:31,000 thay đổi mật khẩu của bạn, bạn cần phải nhận được hoàn lại tiền vào những thứ 562 00:31:31,000 --> 00:31:34,000 bởi vì một số kẻ xấu đã đột nhập vào tài khoản của bạn như vậy. 563 00:31:34,000 --> 00:31:38,000 >> Lưu trữ mật khẩu trong văn bản rõ ràng, không được mã hóa trong một cơ sở dữ liệu 564 00:31:38,000 --> 00:31:41,000 là hoàn toàn ngu si, nhưng nó rất thú vị 565 00:31:41,000 --> 00:31:44,000 sau đó để đọc về một số công ty rất nổi tiếng 566 00:31:44,000 --> 00:31:47,000 đôi khi trên báo chí có cơ sở dữ liệu đang bị tổn hại, 567 00:31:47,000 --> 00:31:50,000 và phần đó không phải là buồn cười, nhưng thực tế là các cơ sở dữ liệu có chứa không được mã hóa 568 00:31:50,000 --> 00:31:53,000 mật khẩu là vô lý vì theo nghĩa đen với một dòng mã 569 00:31:53,000 --> 00:31:57,000 bạn có thể bảo vệ chống lại mối đe dọa cụ thể, và đó là những gì chúng tôi đã thực hiện ở đây. 570 00:31:57,000 --> 00:32:00,000 Ngay cả đối với phiên bản giả ít CS50 Tài chính của chúng tôi 571 00:32:00,000 --> 00:32:03,000 chúng tôi mã hóa mật khẩu cho các biện pháp tốt, và thực tế là 572 00:32:03,000 --> 00:32:07,000 tất cả các mật khẩu bắt đầu với $ 1 $ chỉ là quy ước. 573 00:32:07,000 --> 00:32:10,000 Điều đó chỉ có nghĩa là họ đã được mã hóa hoặc thực sự băm, 574 00:32:10,000 --> 00:32:13,000 mà là giống như một chức năng mã hóa một chiều 575 00:32:13,000 --> 00:32:17,000 nhờ đó mà bạn không thể đảo ngược tác dụng của nó với một cái gì đó gọi là MD5. 576 00:32:17,000 --> 00:32:21,000 >> Thực tế là 50 là sau đó có nghĩa là một giá trị muối 577 00:32:21,000 --> 00:32:24,000 số 50 đã được sử dụng cho băm tất cả các mật khẩu, ngoại trừ một. 578 00:32:24,000 --> 00:32:27,000 Mine, tất nhiên, như bạn có thể nhìn thấy ở đó, HA, 579 00:32:27,000 --> 00:32:30,000 bằng cách sử dụng một muối khác nhau, do đó, những người bạn của những người đã hơi vấp 580 00:32:30,000 --> 00:32:33,000 có thể trong Hacker 2, mà có thể có được kết quả có của chúng tôi được sử dụng 581 00:32:33,000 --> 00:32:36,000 băm khác nhau hơn so với những người khác bởi vì mật khẩu của tôi thực sự là như nhau 582 00:32:36,000 --> 00:32:38,000 như một số người sử dụng khác lên đó. 583 00:32:38,000 --> 00:32:41,000 Trong thực tế, nếu bạn đã chờ đợi tất cả những tuần lễ để tìm hiểu 584 00:32:41,000 --> 00:32:44,000 những gì các mật khẩu đã được ở đây là mật khẩu mà bạn đã thách thức 585 00:32:44,000 --> 00:32:48,000 để crack trong ấn bản Hacker của 2 bộ vấn đề, do đó, không quá khó khăn. 586 00:32:48,000 --> 00:32:50,000 Trong thực tế, Malan là giống như jharvard, 587 00:32:50,000 --> 00:32:54,000 nhưng nếu chúng ta quay trở lại họ nhìn khác nhau. 588 00:32:54,000 --> 00:32:58,000 >> Tập trung vào jharvard trong màu đỏ thẫm bởi vì họ đã được ướp muối khác nhau. 589 00:32:58,000 --> 00:33:01,000 Thuật toán được bị nhiễu loạn theo một cách mà các 590 00:33:01,000 --> 00:33:05,000 giá trị băm, giá trị mã hóa hơi khác một chút 591 00:33:05,000 --> 00:33:08,000 bởi vì các yếu tố đầu vào là hơi khác nhau, nhưng mật khẩu bên dưới mui xe 592 00:33:08,000 --> 00:33:10,000 vẫn còn cuối cùng là màu đỏ thẫm. 593 00:33:10,000 --> 00:33:12,000 Bây giờ, những người quan tâm về điều này? 594 00:33:12,000 --> 00:33:15,000 Vâng, chúng tôi đang cung cấp với người sử dụng mẫu, mẫu tên người dùng 595 00:33:15,000 --> 00:33:18,000 và băm các mật khẩu của họ, do đó mà bạn thực sự có một số 596 00:33:18,000 --> 00:33:23,000 khách hàng cho CS50 Tài chính khi bạn lần đầu tiên có được khỏi mặt đất với mã của bạn. 597 00:33:23,000 --> 00:33:27,000 Bạn sẽ phải thực hiện thêm bảng biểu bên trong MySQL, bên trong cơ sở dữ liệu. 598 00:33:27,000 --> 00:33:30,000 Bạn sẽ phải tạo các bảng tính nhiều hơn, có hiệu quả, nhưng chúng tôi đã quyết định cung cấp cho bạn một trong những điều này 599 00:33:30,000 --> 00:33:33,000 để giúp bạn bắt đầu, và bạn sẽ thấy rằng các thiết lập vấn đề đặc điểm kỹ thuật 600 00:33:33,000 --> 00:33:37,000 bạn đi qua quá trình nhập khẩu bảng này 601 00:33:37,000 --> 00:33:39,000 và cũng có thể giải thích những gì một số đặc điểm, 602 00:33:39,000 --> 00:33:41,000 và bạn cũng sẽ thấy rằng chúng tôi cung cấp cho bạn mã 603 00:33:41,000 --> 00:33:44,000 để xử lý các băm hoặc mã hóa các mật khẩu, 604 00:33:44,000 --> 00:33:49,000 do đó bạn không cần phải lo lắng quá nhiều về những gì MD5 hoặc như thế thực sự là tất cả về. 605 00:33:49,000 --> 00:33:53,000 >> Vì vậy, SQL, cấu trúc ngôn ngữ truy vấn. 606 00:33:53,000 --> 00:33:56,000 Điều này là khá đơn giản, ngôn ngữ chúng tôi về để bắt đầu sử dụng trong pset 7 607 00:33:56,000 --> 00:34:01,000 và có lẽ vượt quá yêu cầu dữ liệu từ cơ sở dữ liệu một số. 608 00:34:01,000 --> 00:34:06,000 Dữ liệu được, một lần nữa, được lưu trữ tabularly trong các bảng quan hệ, cột, và các hàng, 609 00:34:06,000 --> 00:34:09,000 nhưng bằng cách sử dụng một số cú pháp tương đối đơn giản như xóa, 610 00:34:09,000 --> 00:34:12,000 chèn, cập nhật và chọn, chúng ta có thể làm chính xác điều đó. 611 00:34:12,000 --> 00:34:15,000 Chúng tôi có thể xóa từ cơ sở dữ liệu, chèn, 612 00:34:15,000 --> 00:34:19,000 cập nhật dữ liệu, cũng như lựa chọn, đó là, lấy dữ liệu từ cơ sở dữ liệu. 613 00:34:19,000 --> 00:34:21,000 Làm thế nào để chúng tôi đi về việc này? 614 00:34:21,000 --> 00:34:23,000 Hãy để tôi đi trước vào thiết bị. 615 00:34:23,000 --> 00:34:28,000 Hãy để tôi kéo lên http://localhost, 616 00:34:28,000 --> 00:34:30,000 , một lần nữa, bản thân thiết bị địa phương. 617 00:34:30,000 --> 00:34:32,000 Đó là biệt danh của nó mặc định. 618 00:34:32,000 --> 00:34:35,000 Và hãy để tôi đi đến / phpmyadmin. 619 00:34:35,000 --> 00:34:39,000 Điều này xảy ra là một URL đặc biệt mà thiết bị này là cấu hình sẵn để hiểu 620 00:34:39,000 --> 00:34:42,000 mà ngay lập tức sẽ nhắc tôi cho một tên người dùng và mật khẩu. 621 00:34:42,000 --> 00:34:46,000 >> Như thường lệ, tôi sẽ gõ jharvard và crimson, 622 00:34:46,000 --> 00:34:48,000 nhưng nhận ra đó là tài khoản quản trị viên trên máy tính. 623 00:34:48,000 --> 00:34:53,000 Nó chỉ là một sự trùng hợp ngẫu nhiên cũng có một jharvard đăng ký CS50 Tài chính. 624 00:34:53,000 --> 00:34:56,000 Jharvard, đỏ thẫm, bạn nhập mang lại cho tôi giao diện người dùng mà chúng ta đã thấy 625 00:34:56,000 --> 00:34:59,000 một cái nhìn thoáng qua của thời điểm trước đây, và đó là một chút áp đảo lúc đầu, 626 00:34:59,000 --> 00:35:02,000 nhưng yên tâm, bạn sẽ không bao giờ sẽ phải bấm vào hầu hết các liên kết trong công cụ này. 627 00:35:02,000 --> 00:35:05,000 Bạn sẽ kết thúc bằng cách sử dụng một tập hợp con nhỏ là siêu hữu ích, 628 00:35:05,000 --> 00:35:08,000 là người đầu tiên trong số đó là cơ sở dữ liệu ở đây. 629 00:35:08,000 --> 00:35:11,000 Nếu tôi đi đến cơ sở dữ liệu, thông báo rằng tôi đang nhắc nhở để tạo ra một cơ sở dữ liệu. 630 00:35:11,000 --> 00:35:14,000 Điều này giống như tạo ra một file Excel mới, có hiệu quả. 631 00:35:14,000 --> 00:35:18,000 Tôi sẽ đi trước và gọi đây là bài giảng, và tôi chỉ cần đi để bỏ qua các lĩnh vực có, đối chiếu. 632 00:35:18,000 --> 00:35:20,000 Nó có để làm với các đại diện của dữ liệu trong đó, 633 00:35:20,000 --> 00:35:24,000 và tôi sẽ nhấp chuột tạo ra, và bây giờ nhận thấy như tôi hãy đi tạo 634 00:35:24,000 --> 00:35:27,000 ở phía bên trái, nơi nó nói cơ sở dữ liệu không 635 00:35:27,000 --> 00:35:30,000 Tôi cần sớm nhìn thấy cơ sở dữ liệu bài giảng. 636 00:35:30,000 --> 00:35:32,000 >> Nếu bây giờ tôi bấm vào ở phía bên tay trái, cơ sở dữ liệu bài giảng, 637 00:35:32,000 --> 00:35:34,000 nhận thấy tab của tôi thay đổi một chút. 638 00:35:34,000 --> 00:35:38,000 Tôi đã có cấu trúc, SQL, xuất khẩu, nhập khẩu và một số thứ khác. 639 00:35:38,000 --> 00:35:40,000 Cấu trúc là khá nhiều trống. 640 00:35:40,000 --> 00:35:43,000 Không có bảng nào được tìm thấy trong cơ sở dữ liệu, như nó nói ở đây, 641 00:35:43,000 --> 00:35:47,000 do đó, chúng ta hãy tạo một bảng, và chúng ta hãy đi trước và tạo ra một bảng 642 00:35:47,000 --> 00:35:53,000 như học sinh, và chúng ta muốn có bao nhiêu cột? 643 00:35:53,000 --> 00:35:55,000 Hãy giữ cho đơn giản này, và hãy ghi lại cho mỗi học sinh 644 00:35:55,000 --> 00:35:58,000 một số ID, tên, và địa chỉ email. 645 00:35:58,000 --> 00:36:02,000 >> Chúng tôi sẽ giữ nó đơn giản như thế, do đó, 3 cột, đi. 646 00:36:02,000 --> 00:36:05,000 Các hình thức mà bạn nhìn thấy ở đây là một chút lộn xộn và áp đảo, 647 00:36:05,000 --> 00:36:08,000 nhưng chúng tôi chỉ cần có để đi qua nó hàng bởi hàng, do đó, thực sự nhanh chóng hãy cho 648 00:36:08,000 --> 00:36:14,000 cột đầu tiên trong cơ sở dữ liệu này một tên ID cho các định danh duy nhất. 649 00:36:14,000 --> 00:36:17,000 Nó sẽ là một số nguyên. Tôi thực sự có thể bỏ qua chiều dài và giá trị. 650 00:36:17,000 --> 00:36:21,000 Một int là có được 32 bit không có vấn đề gì bạn gõ vào đó, vì vậy hãy để trống. 651 00:36:21,000 --> 00:36:24,000 Giá trị mặc định, tôi có thể làm cho nó vô giá trị, theo định nghĩa. 652 00:36:24,000 --> 00:36:27,000 Tôi sẽ để lại đó một mình. Hãy để không phải lo lắng về các giá trị mặc định. 653 00:36:27,000 --> 00:36:29,000 Hãy di chuyển trên đây, thuộc tính bên phải. 654 00:36:29,000 --> 00:36:31,000 Điều này là thú vị. 655 00:36:31,000 --> 00:36:33,000 Hãy đi trước và phần nào tùy tiện nói rằng ID phải là unsigned. 656 00:36:33,000 --> 00:36:35,000 Hãy để không lãng phí bất kỳ số âm. 657 00:36:35,000 --> 00:36:37,000 >> Hãy đi 0 đến 4 tỷ đồng, cho hay phải mất, 658 00:36:37,000 --> 00:36:40,000 và sau đó chúng ta không chạm vào bất kỳ của các trường này chỉ được nêu ra ở đó, 659 00:36:40,000 --> 00:36:43,000 nhưng sau đó cho tôi gõ tên xuống đây, 660 00:36:43,000 --> 00:36:46,000 và sau đó là email, do đó nắm bắt được email 661 00:36:46,000 --> 00:36:50,000 và tên, rõ ràng không phải số nguyên, vì vậy chúng ta hãy thay đổi các lĩnh vực khác nhau. 662 00:36:50,000 --> 00:36:53,000 Hóa ra varchar, chiều dài thay đổi char, 663 00:36:53,000 --> 00:36:56,000 giống như một chuỗi trong một cơ sở dữ liệu SQL 664 00:36:56,000 --> 00:36:59,000 nhưng có chiều dài biến, và bạn thực sự phải nói cho nó trước 665 00:36:59,000 --> 00:37:02,000 chiều dài tối đa của chuỗi, vì vậy tôi sẽ để phần nào tùy tiện 666 00:37:02,000 --> 00:37:05,000 theo quy ước loại 255 ký tự. 667 00:37:05,000 --> 00:37:08,000 Tôi hoàn toàn có thể nói 32. Tôi có thể nói 1.000. 668 00:37:08,000 --> 00:37:11,000 Loại cần tự quyết định dựa trên nhân khẩu học của những gì là 669 00:37:11,000 --> 00:37:14,000 Tên học sinh dài nhất và đi với con số đó lớn hơn một chút, 670 00:37:14,000 --> 00:37:17,000 nhưng những gì tốt đẹp về một varchar là nó sẽ không để lãng phí 671 00:37:17,000 --> 00:37:19,000 255 byte trên tên của mỗi học sinh. 672 00:37:19,000 --> 00:37:23,000 Nếu đó là DAVID nó sẽ không sử dụng 255 byte toàn bộ, 673 00:37:23,000 --> 00:37:26,000 nhưng đó là một trên ràng buộc, do đó, tôi sẽ đi với 255 chỉ theo quy ước, 674 00:37:26,000 --> 00:37:30,000 nhưng chúng ta có thể tranh luận rằng có một số giá trị thấp hơn, và cho địa chỉ email 675 00:37:30,000 --> 00:37:34,000 chỉ để phù hợp 255, nhưng một lần nữa, chúng ta có thể có các cuộc tranh luận tương tự. 676 00:37:34,000 --> 00:37:36,000 Nhưng tôi sẽ làm một việc khác ở đây ở phía bên tay phải. 677 00:37:36,000 --> 00:37:40,000 >> Mạnh mẽ về một cơ sở dữ liệu là nó có thể làm được rất nhiều nâng nặng 678 00:37:40,000 --> 00:37:42,000 hoặc phức tạp công việc cho bạn. 679 00:37:42,000 --> 00:37:46,000 Trong đó, tôi thực sự không quan tâm những gì số ID của học sinh của tôi. 680 00:37:46,000 --> 00:37:49,000 Nó chỉ có nghĩa là một định danh duy nhất trong cơ sở dữ liệu 681 00:37:49,000 --> 00:37:52,000 vì vậy tôi có một đại diện gọn gàng 32-bit của học sinh đó 682 00:37:52,000 --> 00:37:55,000 vì vậy mà tôi có một số cách duy nhất để phân biệt chúng 683 00:37:55,000 --> 00:37:58,000 vì sợ rằng có 2 Davids, ví dụ, trong một lớp học. 684 00:37:58,000 --> 00:38:01,000 Trong thực tế, tôi sẽ kiểm tra hộp này AI, tự động tăng, 685 00:38:01,000 --> 00:38:04,000 để các cơ sở dữ liệu, MySQL, con số ra 686 00:38:04,000 --> 00:38:08,000 mỗi học sinh mới được chèn vào ID là có được. 687 00:38:08,000 --> 00:38:11,000 Tôi thậm chí không cần phải quan tâm về điều đó trong mã của tôi, 688 00:38:11,000 --> 00:38:13,000 và tôi cũng sẽ chọn một cái gì đó dưới trình đơn chỉ mục. 689 00:38:13,000 --> 00:38:17,000 Chỉ số thả xuống ở đây đã tiểu học, độc đáo, 690 00:38:17,000 --> 00:38:19,000 chỉ số và văn bản đầy đủ. 691 00:38:19,000 --> 00:38:21,000 Bạn có thể có thể đoán những gì một vài những điều này, 692 00:38:21,000 --> 00:38:24,000 nhưng nó quay ra trong cơ sở dữ liệu quan hệ 693 00:38:24,000 --> 00:38:28,000 các lập trình viên hoặc quản trị viên cơ sở dữ liệu nhận được để preemptively 694 00:38:28,000 --> 00:38:32,000 đưa ra gợi ý vào cơ sở dữ liệu là những lĩnh vực 695 00:38:32,000 --> 00:38:34,000 trong một bảng là một chút đặc biệt. 696 00:38:34,000 --> 00:38:37,000 >> Ví dụ, trong trường hợp này tôi sẽ nói rằng ID 697 00:38:37,000 --> 00:38:42,000 là có được một chỉ số chính, nếu không được biết đến như một khóa chính. 698 00:38:42,000 --> 00:38:44,000 Điều này có nghĩa là theo định nghĩa là ID đó từ nay trở đi 699 00:38:44,000 --> 00:38:48,000 sẽ xác định duy nhất sinh viên trong bảng này. 700 00:38:48,000 --> 00:38:53,000 Không một học sinh sẽ có cùng một ID vì tôi đang áp đặt các hạn chế này, chỉ số này. 701 00:38:53,000 --> 00:38:55,000 Hơn nữa, điều này sẽ làm cho tôi là nó sẽ cho biết 702 00:38:55,000 --> 00:38:58,000 MySQL mà ID là đặc biệt. 703 00:38:58,000 --> 00:39:03,000 Tôi quan tâm đặc biệt về ID, nên đi trước và làm phép thuật ưa thích cấu trúc dữ liệu của bạn, 704 00:39:03,000 --> 00:39:05,000 xây dựng một số loại cây. 705 00:39:05,000 --> 00:39:08,000 Thông thường nó là một cái gì đó được gọi là B-cây, mà chúng ta không nhìn vào tuần trước, 706 00:39:08,000 --> 00:39:11,000 nhưng đó là một cấu trúc dữ liệu tinh thần tương tự như vậy với cây nhị phân 707 00:39:11,000 --> 00:39:15,000 và cố gắng mà chúng ta nhìn, nhưng nó sẽ nói 708 00:39:15,000 --> 00:39:18,000 cơ sở dữ liệu lĩnh vực này là rất quan trọng mà tôi có lẽ 709 00:39:18,000 --> 00:39:22,000 muốn để có thể tìm kiếm trên đó, đi trước và xây dựng một số ưa thích 710 00:39:22,000 --> 00:39:25,000 cấu trúc dữ liệu trong bộ nhớ để tiến hành tìm kiếm để lý tưởng 711 00:39:25,000 --> 00:39:28,000 họ hằng số thời gian hoặc ít nhất là gần đó là có thể 712 00:39:28,000 --> 00:39:32,000 để nó không devolve vào tìm kiếm tuyến tính, mà không được 713 00:39:32,000 --> 00:39:34,000 cao nhất thực hiện phương pháp tiếp cận. 714 00:39:34,000 --> 00:39:37,000 Ngược lại, địa chỉ email có thể có được một khóa chính. 715 00:39:37,000 --> 00:39:41,000 >> Về lý thuyết, địa chỉ email của tất cả mọi người là duy nhất, trừ khi bạn đang chia sẻ một số tài khoản, 716 00:39:41,000 --> 00:39:45,000 nhưng nói chung không tốt để sử dụng một cái gì đó giống như một chuỗi 717 00:39:45,000 --> 00:39:49,000 như một khóa chính bởi vì nếu mục đích của nó trong cuộc sống là để nhận diện 718 00:39:49,000 --> 00:39:55,000 hàng trong bảng của bạn không có lý do để sử dụng 255 byte tối đa 719 00:39:55,000 --> 00:39:58,000 để xác định một người nào đó nếu bạn có thể nhận được ngay với chỉ 4 byte 720 00:39:58,000 --> 00:40:00,000 hoặc một int 32-bit. 721 00:40:00,000 --> 00:40:03,000 Nói chung, một khóa chính nên ngắn gọn và súc tích 722 00:40:03,000 --> 00:40:07,000 và lý tưởng một cái gì đó giống như một số nguyên hoặc int a lớn, điều này sẽ xảy ra là 64 bit. 723 00:40:07,000 --> 00:40:11,000 Tuy nhiên, một địa chỉ email nên là duy nhất, và một trong các tính năng của một cơ sở dữ liệu 724 00:40:11,000 --> 00:40:14,000 là để thực thi duy nhất cho tôi. 725 00:40:14,000 --> 00:40:18,000 Bằng cách lựa chọn độc đáo ở đây bên cạnh email, mặc dù gửi email cho chính nó 726 00:40:18,000 --> 00:40:21,000 là cuộn ra khỏi màn hình, tôi đang nói đến cơ sở dữ liệu 727 00:40:21,000 --> 00:40:23,000 không tin tưởng tôi. 728 00:40:23,000 --> 00:40:26,000 Đừng để tôi chèn vào cơ sở dữ liệu 729 00:40:26,000 --> 00:40:29,000 cùng địa chỉ email hai lần, ngay cả khi tôi là một thằng ngốc và không phải là 730 00:40:29,000 --> 00:40:32,000 rất tốt với ifs và ifs khác và mã PHP thực tế 731 00:40:32,000 --> 00:40:37,000 và tôi vô tình cho phép người dùng đăng ký một địa chỉ email hiện có 732 00:40:37,000 --> 00:40:40,000 cơ sở dữ liệu là có một mức độ bảo vệ cho đúng đắn 733 00:40:40,000 --> 00:40:44,000 để đảm bảo rằng địa chỉ email trùng lặp không kết thúc trong bảng. 734 00:40:44,000 --> 00:40:49,000 >> Bây giờ, ngược lại, cho tên bạn có thể không muốn làm cho rằng độc đáo 735 00:40:49,000 --> 00:40:51,000 bởi vì sau đó không bao giờ có thể là 2 Davids hoặc 2 Mike Smiths, ví dụ, 736 00:40:51,000 --> 00:40:55,000 trong cơ sở dữ liệu của bạn, để chúng tôi sẽ chỉ để lại một mình. 737 00:40:55,000 --> 00:40:58,000 Tôi sẽ đi trước và bấm vào lưu ở góc dưới bên phải, 738 00:40:58,000 --> 00:41:02,000 và tất cả mọi thứ có vẻ tốt, nhưng nhận thấy ở đây 739 00:41:02,000 --> 00:41:04,000 đây là một phần rằng bây giờ chúng tôi sẽ không dành quá nhiều thời gian trên 740 00:41:04,000 --> 00:41:07,000 bởi vì cú pháp là một chút phức tạp, và chúng tôi không phải để tạo ra các bảng 741 00:41:07,000 --> 00:41:10,000 thường xuyên, nhưng SQL chính nó là một ngôn ngữ, 742 00:41:10,000 --> 00:41:13,000 cú pháp là quyền ở đây mà tôi đã nêu bật. 743 00:41:13,000 --> 00:41:18,000 PhpMyAdmin thực sự là nó tạo ra một giao diện dựa trên web cho bạn 744 00:41:18,000 --> 00:41:23,000 mà bạn có thể tiết kiệm thời gian và không phải tự loại ra 745 00:41:23,000 --> 00:41:26,000 một truy vấn SQL khá dài như thế. 746 00:41:26,000 --> 00:41:29,000 >> Nói cách khác, nếu bạn muốn tự tạo ra bảng này, 747 00:41:29,000 --> 00:41:32,000 vào lúc hoặc dấu nhắc rằng phpMyAdmin hoặc thậm chí trong màu đen và trắng 748 00:41:32,000 --> 00:41:35,000 bằng cách sử dụng tab này, SQL tab này, nơi bạn có thể gõ vào bất kỳ truy vấn SQL 749 00:41:35,000 --> 00:41:38,000 bạn muốn, thẳng thắn, điều này đã có thể lấy cho tôi một phút 750 00:41:38,000 --> 00:41:41,000 để thực sự nhớ cú pháp, và thậm chí sau đó, tôi có lẽ sẽ có 751 00:41:41,000 --> 00:41:45,000 thực hiện một số lỗi chính tả, do đó, công cụ này là hữu ích cho những thứ như thế, và nó cũng hướng dẫn. 752 00:41:45,000 --> 00:41:49,000 Bạn có thể bắt đầu để suy ra cú pháp là gì 753 00:41:49,000 --> 00:41:52,000 chỉ bằng cách mã hóa màu sắc đẹp mà phpMyAdmin được thêm 754 00:41:52,000 --> 00:41:54,000 để thuận tiện cho hình ảnh của chúng tôi. 755 00:41:54,000 --> 00:41:56,000 Nhưng bây giờ chúng ta hãy làm điều này thay vì. 756 00:41:56,000 --> 00:42:00,000 Hãy để tôi đi vào tab chèn ở đầu trang, và để cho tôi đi trước và chèn ví dụ 757 00:42:00,000 --> 00:42:04,000 một ID của chúng ta hãy nói rằng thực sự tôi không quan tâm. 758 00:42:04,000 --> 00:42:07,000 Nó sẽ tự động tăng. Tôi sẽ để cho các thỏa thuận cơ sở dữ liệu với điều này. 759 00:42:07,000 --> 00:42:11,000 Nhưng tôi được David, và email của tôi nên được malan@harvard.edu. 760 00:42:11,000 --> 00:42:16,000 >> Hãy đi trước đây và đưa vào Mike Smith là một số khác. 761 00:42:16,000 --> 00:42:18,000 Tôi sẽ cung cấp cho bản thân mình một tên cuối cùng là tốt, 762 00:42:18,000 --> 00:42:22,000 và chúng tôi sẽ có anh smith@example.com, 763 00:42:22,000 --> 00:42:24,000 và sau đó, nơi để tôi đi tiếp theo? 764 00:42:24,000 --> 00:42:27,000 Vâng, có vẻ như go là nút bấm, và thì đấy. 765 00:42:27,000 --> 00:42:30,000 Thông báo tại 2 hàng hàng đầu chèn. 766 00:42:30,000 --> 00:42:32,000 Đây là các truy vấn SQL thực tế. 767 00:42:32,000 --> 00:42:36,000 Đó là công cụ phpMyAdmin thực hiện cho tôi, 768 00:42:36,000 --> 00:42:40,000 nhưng kết quả cuối cùng, thông báo, nếu tôi đi đến tab trình duyệt, 769 00:42:40,000 --> 00:42:43,000 là để xem 2 dòng trong bảng này, rất gợi nhớ về mặt thẩm mỹ 770 00:42:43,000 --> 00:42:46,000 của bảng, chúng ta đã thấy cho người dùng của chúng tôi từ pset 7, 771 00:42:46,000 --> 00:42:51,000 một trong số đó là David Malan, một trong số đó là Mike Smith. 772 00:42:51,000 --> 00:42:54,000 Nhưng chỉ để được rõ ràng, tôi không cần phải sử dụng phpMyAdmin, 773 00:42:54,000 --> 00:42:56,000 và quả thật, bạn sẽ sớm được viết mã cho pset 7 774 00:42:56,000 --> 00:43:01,000 tự động hóa quá trình thêm hàng, xóa hàng, cập nhật hàng và các loại tương tự, 775 00:43:01,000 --> 00:43:04,000 vì vậy hãy để tôi thay vì đi vào tab SQL lên đây 776 00:43:04,000 --> 00:43:14,000 và gõ * lựa chọn từ các sinh viên nơi 777 00:43:14,000 --> 00:43:18,000 email = "malan@harvard.edu." 778 00:43:18,000 --> 00:43:21,000 >> Nói cách khác giả sử bây giờ bạn có 779 00:43:21,000 --> 00:43:26,000 một số hình thức HTML, và người dùng trong địa chỉ email của họ, trong số các lĩnh vực khác, 780 00:43:26,000 --> 00:43:29,000 và mục tiêu hiện nay là trong PHP trên mã kết thúc trở lại 781 00:43:29,000 --> 00:43:31,000 để thực sự tìm kiếm các chi tiết khác của người sử dụng. 782 00:43:31,000 --> 00:43:34,000 Tên đầy đủ của bạn là gì? Số ID của bạn là gì? 783 00:43:34,000 --> 00:43:37,000 Bạn có thể viết một truy vấn SQL như thế này, chọn * từ sinh viên 784 00:43:37,000 --> 00:43:40,000 nơi email = "malan@harvard.edu." 785 00:43:40,000 --> 00:43:46,000 Và nếu tôi sau đó nhấp vào đi, nhận thấy rằng tôi nên, và thực sự tôi, có được một hàng. 786 00:43:46,000 --> 00:43:50,000 Mike được bỏ qua từ này tập hợp kết quả, như là bộ sưu tập hàng 787 00:43:50,000 --> 00:43:53,000 thường được gọi là, bởi vì anh ta không có địa chỉ email giống như tôi. 788 00:43:53,000 --> 00:43:57,000 >> Bây giờ, một lần nữa, ở đây cho pset 7, bạn sẽ sử dụng phpMyAdmin là một công cụ hành chính 789 00:43:57,000 --> 00:44:00,000 và một công cụ sư phạm để tìm hiểu theo cách của bạn 790 00:44:00,000 --> 00:44:03,000 trên toàn thế giới của SQL, nhưng vào cuối ngày 791 00:44:03,000 --> 00:44:08,000 bạn sẽ được viết các truy vấn bên trong mã PHP thực tế, 792 00:44:08,000 --> 00:44:11,000 và do đó, tiếp tục theo dõi trong walkthrough Zamyla đặc biệt 793 00:44:11,000 --> 00:44:14,000 nơi bạn sẽ nhận được một tour du lịch của các mã phân phối cho tập hợp vấn đề 794 00:44:14,000 --> 00:44:18,000 nơi mà chúng tôi đã đưa cho bạn không chỉ có tính thẩm mỹ cho trang đăng nhập 795 00:44:18,000 --> 00:44:21,000 và tốt đẹp sexy biểu tượng nói CS50 Tài chính, nhưng chúng tôi cũng đã đưa cho bạn 796 00:44:21,000 --> 00:44:24,000 một loạt các chức năng mà sẽ làm cho cuộc sống của bạn dễ dàng hơn một chút. 797 00:44:24,000 --> 00:44:27,000 Chúng tôi cũng đã viết một phần của pset cho bạn, 798 00:44:27,000 --> 00:44:32,000 phần đăng nhập của nó đặc biệt, cung cấp cho bạn một cảm giác của một thiết kế đại diện 799 00:44:32,000 --> 00:44:36,000 mà thực sự sử dụng một bộ điều khiển, dụ, index.php, 800 00:44:36,000 --> 00:44:40,000 login.php và như thế, và sau đó bạn sẽ thấy pset cũng có một thư mục mẫu 801 00:44:40,000 --> 00:44:43,000 có tất cả các quan điểm của bạn, tất cả các tính thẩm mỹ. 802 00:44:43,000 --> 00:44:46,000 Và do đó, các quy trình làm việc chung trong pset 7 là có được mà 803 00:44:46,000 --> 00:44:49,000 người dùng của bạn truy cập vào một bộ điều khiển thông qua một URL trong trình duyệt. 804 00:44:49,000 --> 00:44:53,000 Bộ điều khiển có chứa mã PHP mà bạn đã viết, và bên trong mã PHP của bạn 805 00:44:53,000 --> 00:44:57,000 có thể được một số dòng của SQL lồng nhau ở giữa dấu ngoặc kép 806 00:44:57,000 --> 00:45:00,000 và được chuyển đến một chức năng, chúng tôi đã viết truy vấn được gọi là 807 00:45:00,000 --> 00:45:03,000 sẽ giúp bạn nói chuyện với cơ sở dữ liệu mà không cần sử dụng một cái gì đó như thế 808 00:45:03,000 --> 00:45:05,000 một công cụ hành chính như phpMyAdmin. 809 00:45:05,000 --> 00:45:08,000 >> Bạn sẽ có thể để viết câu lệnh SQL trong PHP code 810 00:45:08,000 --> 00:45:11,000 và nhận được trở lại một mảng PHP của tập kết quả, 811 00:45:11,000 --> 00:45:14,000 của các hàng mà thực sự phù hợp với truy vấn. 812 00:45:14,000 --> 00:45:18,000 Và tương tự như bạn sẽ có thể làm chèn hoặc xóa 813 00:45:18,000 --> 00:45:22,000 hoặc cập nhật hoặc các loại tương tự, cú pháp là tương đối giống nhau, 814 00:45:22,000 --> 00:45:25,000 và bạn sẽ thấy một số tài liệu tham khảo trực tuyến, từ các mã phân phối 815 00:45:25,000 --> 00:45:29,000 và từ pset các gói chính nó chính xác làm thế nào để đi về làm điều đó. 816 00:45:29,000 --> 00:45:33,000 Nhận ra cuối cùng chúng ta đang thực sự chỉ trầy xước bề mặt của SQL 817 00:45:33,000 --> 00:45:36,000 và MySQL, nhưng sức mạnh của nó thực sự là nó giải phóng bạn 818 00:45:36,000 --> 00:45:40,000 tập trung vào các vấn đề bạn muốn giải quyết, các trường hợp sử dụng, bạn muốn thực hiện 819 00:45:40,000 --> 00:45:43,000 mà không phải lo lắng khá nhiều, ít nhất là đầu vào, 820 00:45:43,000 --> 00:45:47,000 ở đâu và làm thế nào để lưu trữ và tìm kiếm cơ sở dữ liệu của bạn, 821 00:45:47,000 --> 00:45:50,000 và điều này là hoàn toàn theo nghĩa đen chính Facebook đã bắt đầu 822 00:45:50,000 --> 00:45:53,000 bằng cách sử dụng MySQL và sau đó bằng cách sử dụng nhiều máy chủ MySQL và sau đó MySQL máy chủ 823 00:45:53,000 --> 00:45:57,000 trước khi dài cho đến khi họ đã thực sự bắt đầu suy nghĩ khó khăn về việc làm thế nào để 824 00:45:57,000 --> 00:46:00,000 lưu trữ dữ liệu, làm thế nào để lưu trữ những thứ thậm chí còn hiệu quả hơn, 825 00:46:00,000 --> 00:46:04,000 do đó, mặc dù chúng tôi sẽ đưa cho các cấp thực tế mà chỉ số và ràng buộc duy nhất 826 00:46:04,000 --> 00:46:08,000 và vv chỉ làm việc có một cuộc trò chuyện rất thú vị 827 00:46:08,000 --> 00:46:12,000 rằng điều này có thể tất cả cuối cùng dẫn, do đó, nhận ra rằng chúng tôi chỉ trầy xước bề mặt 828 00:46:12,000 --> 00:46:17,000 những gì có thể cuối cùng cho bạn hoặc các dự án của bạn trở nên khá một chút dữ liệu lớn. 829 00:46:17,000 --> 00:46:22,000 >> Với mà nói, chúng ta hãy kết thúc ở đây, và chúng tôi sẽ nhìn thấy bạn trong tuần tới. 830 00:46:28,000 --> 00:46:30,000 [CS50.TV]