[Powered by Google Translate] [Tuần 8, Tiếp tục]
[David J. Malan] [Đại học Harvard]
[Đây là CS50.] [CS50.TV]
>> Đây là CS50, do đó, đây là kết thúc của Tuần 8 ở đây.
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,
vậy ngay bây giờ nó thực sự chỉ là bạn và tôi trong giảng đường này,
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
và về lập trình web nói chung, chúng tôi cũng giới thiệu ý tưởng
cơ sở dữ liệu, đặc biệt được gọi là MySQL, mà là khá phổ biến những ngày,
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ở.
>> Nhưng trước tiên, nhìn vào nơi chúng tôi rời đi thời gian qua.
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ì,
và đây là hình thức ghê gớm mà tôi đã đưa ra một số 15 năm trước
để 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
mà không thực sự phải đi bộ nữa trên sân để Wigglesworth
để 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ị.
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
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,
mà lại là ngôn ngữ đánh dấu mà bạn thực hiện trang web cấu trúc.
>> Sử dụng một chút CSS những ngày này, cascading style sheets,
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,
trong khi HTML là tất cả về cấu trúc của nó.
Chúng tôi cũng cần phải giới thiệu một ngôn ngữ lập trình web.
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
xuất nội dung ra tự động cũng như làm những chương trình như
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.
>> Nhớ lại rằng mã cho điều này là trong 2 phần.
Một, chúng tôi đã có froshims3.php,
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ó,
một chút nhỏ bé của CSS lên ở đây trong các thuộc tính phong cách
để các mẫu tự sẽ được tập trung trên trang, nhưng ngoài ra
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,
một số nút radio, một menu lựa chọn, và một nút submit.
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à,
mà bản thân nó nhìn một chút gì đó như thế này.
Bây giờ, hầu hết các mã ở register3.php, thu hồi, là tất cả về email.
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
rằng các trường đã thực sự cung cấp đã được dự kiến.
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,
mặc dù nó vay từ C.
>> 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.
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ờ
đó là một cách có chức năng liên kết với các đối tượng,
mà là một loại đặc biệt của cấu trúc, như chúng ta đã thấy trong C.
Nhưng hiện nay, chỉ cần mang về đức tin rằng đây là cú pháp đúng để sử dụng
khi sử dụng một thư viện như thư viện này PHPMailer.
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
đã gửi vào tài khoản jharvard@cs50.net của tôi
từ tài khoản jharvard@cs50.net của tôi,
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.
Đó 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
khi tôi thực hiện nó, được cấp, trong một ngôn ngữ khác nhau,
nhưng nó cho thấy bạn có lẽ sức mạnh mà bạn có
bây giờ mà bạn có thể thể hiện bản thân không chỉ lập trình
ở mức thấp trong một ngôn ngữ như C, nhưng ở một mức độ cao hơn nhiều
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
một số vấn đề thế giới thực.
>> 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ố
email tự động từ jharvard@cs50.net, mà thực sự là một tài khoản
mà tôi có thể truy cập, không thể khá cẩn thận để gửi
gửi chỉ từ tài khoản thực sự của riêng bạn,
vì sợ rằng những thứ có được trong một chút nước nóng trong cuộc sống.
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,
của các quốc gia giữ lại.
Bây giờ, điều này không những gì thực sự có nghĩa là gì?
HTTP, giao thức truyền siêu văn bản này,
thực sự là một giao thức không quốc tịch, và điều này có nghĩa là
khi bạn kéo lên một cái gì đó giống như Google.com và sau đó nhấn Enter
thường trình duyệt của bạn có một số loại biểu tượng quay mà sau đó
kết quả trong một số trang web đang được tải về,
và sau đó là biểu tượng nhỏ ngừng quay, và đó thực sự cho thấy
HTTP đã hoàn thành một số loại kết nối đến máy chủ và đó là nó.
HTTP là quốc tịch trong ý nghĩa rằng nó không duy trì
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
hoặc Gchat không bởi vì với HTTP
giả định là một khi bạn đã lấy một trang web đó là nó.
>> Bây giờ, trong thực tế những ngày này trên các trang web như Facebook và Google Maps
và Twitter và như thế có rất nhiều tính năng động, theo đó
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
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ự.
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
được biết đến như Ajax bằng cách sử dụng một ngôn ngữ được gọi là JavaScript,
nhưng vào cuối ngày, HTTP là vẫn còn quốc tịch.
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
ngay cả sau khi họ đã bị ngắt kết nối từ máy chủ của bạn
PHP không đủ khả năng cho bạn một phương tiện để làm điều này
bởi vì, như chúng ta đã thấy thời gian qua, PHP có một số superglobals,
và superglobal một là, một lần nữa, một biến toàn cầu đặc biệt
đó là giao cho bạn bởi các máy chủ web và PHP chính nó.
>> Bạn không phải làm bất cứ điều gì để đưa giá trị trong nó,
và giữa các superglobals chúng tôi đã nhìn thấy vậy, đến nay được nhận và đăng,
đó là nơi mà các trường mẫu được đặt tự động cho bạn,
cũng như một vài người khác mà chúng tôi đã không nhìn thấy.
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.
Địa chỉ IP, giao thức HTTP hoặc HTTPS bạn đã sử dụng là gì,
yêu cầu phương pháp sử dụng và như thế, vì vậy có thú vị một số,
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.
Có $ _cookie, đó là nơi mà những điều được gọi là cookie được lưu trữ.
Chúng tôi sẽ không dành nhiều thời gian về các cookie tự ngày hôm nay,
nhưng biết bây giờ mà một cookie chỉ là một mảnh nhỏ của thông tin
rằng một máy chủ web có thể trồng trên một trình duyệt web
và lần lượt RAM hoặc ổ cứng của máy tính của mình
để lưu trữ thông tin về người sử dụng, ví dụ, tên người dùng của họ
để họ không cần phải gõ nó mỗi khi họ đăng nhập vào hoặc một số
số duy nhất hoặc định danh cho người dùng
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ề
ưu đãi trong tương lai, nhưng hầu hết quan tâm
ngay bây giờ là $ _SESSION.
>> Superglobal đó, như những người khác, được giao cho bạn tự động bằng PHP
khi bạn đang viết các trang web dựa trên PHP
có thể lưu trữ bất cứ điều gì bạn muốn, chuỗi, số nguyên,
nổi điểm, giá trị, mảng, đối tượng,
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
rằng ngay cả khi người dùng truy cập bạn bây giờ và sau đó
trở lại một phút từ bây giờ hoặc 5 phút từ bây giờ bởi vì
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
PHP sẽ đảm bảo rằng bất cứ điều gì bạn đặt trong đó superglobal phiên
phút hoặc 5 phút trước đây vẫn sẽ ở đó khi người sử dụng trở lại.
Và bên dưới mui xe superglobal này được thực hiện bằng cách
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
theo đó nó là loại tương đương với chương trình của một giỏ mua hàng.
Dù bạn, các lập trình viên, trong đó
superglobal mảng kết hợp sẽ có một số số phút sau
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.
>> 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.
Trong counter.php giữa các miếng ngày hôm nay của mã
chúng tôi có dòng sau.
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ờ.
Nhưng trong dòng 13, chúng tôi có một dòng mới,
session_start, và thực hiện chính xác những gì nó nói.
Nó bắt đầu phiên.
Nó cho phép bạn sử dụng là lớn superglobal $ _SESSION, và nó đơn giản như vậy.
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.
If (isset ($ _SESSION ["counter"]) sau đó đi trước
và lưu trữ trong biến đếm, chữ thường truy cập,
$ _SESSION ["Counter"].
Điều này dường như được khai báo một biến địa phương gọi là truy cập
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
được gọi là phiên họp tại địa điểm "phản".
Khác, rõ ràng, địa phương truy cập biến này, được khởi tạo là 0.
>> 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,
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.
Trong ngắn hạn, tập tin này có vẻ được cập nhật
một truy cập được lưu trữ bên trong của superglobal phiên
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 đó
bằng cách lưu trữ nó trong một biến địa phương được gọi là $ truy cập,
và sau đó xuống đây chúng ta hãy xem những gì còn lại.
Hóa ra đó là khá nhiều chỉ là HTML.
Ở 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
số lần truy cập, do đó, có một vài tính năng thú vị ở đây.
Một, điều này rõ ràng là một biến, nhưng nó không đủ để chỉ cần đặt
$ Truy cập trong cơ thể của HTML của bạn bởi vì tất nhiên
nếu nó chỉ có trong PHP HTML của bạn sẽ cho rằng chỉ là HTML.
Bạn có nghĩa là muốn $ truy cập được in trên màn hình.
>> Nhưng thay vào đó bằng cách thả vào PHP chế độ
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
tinh thần tương tự với những gì chúng tôi đã làm thời gian qua với
chèn các giá trị thành chuỗi.
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,
in (truy cập) hoặc thậm chí một cái gì đó như printf (% s, truy cập),
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,
có một chức năng trong PHP gọi là tiếng vọng
mà không điều tương tự, và tất cả những cách chỉ còn hơi
nói <=.
Trong một trường hợp này, bạn không cần phải đặt
PHP từ sau dấu chấm hỏi.
Đâ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
được lặp lại một số giá trị.
>> Hãy xem những gì kết quả cuối cùng của việc này thực sự là.
Hãy để tôi đi qua vào tập tin counter.php của chúng tôi,
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ó.
Chúng ta hãy đi sửa chữa bất cứ điều gì ông hơi say lên,
và lỗi dường như có mặt ở đó đã biến mất, trên dòng 37.
Theo đầu trang này, tôi đã truy cập trang web này 0 lần.
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
tải lại biểu tượng, và tôi nhấp vào tải lại,
và bây giờ tôi đã truy cập các trang web 1 lần, 2, 3, 4, 5, 6, 7, 8.
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,
và nhận thấy sự vắng mặt hoàn toàn của PHP nào, và đó là bởi vì
Mã PHP được đánh giá hay giải thích phía máy chủ,
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,
trong trường hợp này là một số mã HTML và một số văn bản thô.
Điều gì đang xảy ra ở đây?
>> Vâng, với dòng tương đối ít mã tôi có thể để lưu trữ
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,
phút, thậm chí vài giờ, một số giá trị trong một cách mà làm cho HTTP
stateful có vẻ như là mặc dù chúng tôi đã giữ lại
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,
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
liên quan đến các tập tin cookie mà cho phép PHP để cho tôi ảo tưởng này
giỏ mua hàng này giống như tính năng này.
Để bây giờ, một ví dụ nhỏ, nơi chúng tôi đang chỉ lưu trữ một số nguyên,
nhưng đó tính năng này sẽ trở lại có giá trị lớn
khi chúng tôi bắt đầu nói chuyện về các dự án phức tạp hơn,
trong đó có vấn đề thiết lập 7.
Đây là vấn đề của bạn cuối cùng trong CS50.
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
phần này của học kỳ bằng cách thực sự chuyển đổi
từ bối cảnh của C chắc chắn với bối cảnh của PHP
nhưng trong khi sử dụng một số nguyên tắc cơ bản rất giống nhau
chúng tôi đã nói chuyện về một thời gian.
>> Mục tiêu với pset 7 là thực hiện CS50 Tài chính,
mà là phiên bản của riêng bạn của Yahoo Tài chính hoặc Google Finance
hoặc thậm chí Etrade.com nhờ đó mà bạn có khả năng
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ế
bạn có khả năng để "mua" và "bán" cổ phiếu
được giao dịch trên thị trường chứng khoán khác nhau bởi vì như trang chủ
ở đây, mà thực sự là mức độ mà chúng tôi đã bắt đầu
đặ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.
Nó có một nút submit, nhưng sau đó, khi chúng ta cuối cùng sẽ thấy,
không có gì thực sự xảy ra bên dưới mui xe nhưng vì nó
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,
khả năng để mua cổ phiếu, bán cổ phiếu,
để thực sự tìm kiếm giá cổ phiếu hiện tại.
>> 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
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
truy vấn Yahoo Tài chính, tuyệt vời làm cho dữ liệu có sẵn miễn phí
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,
và bạn nhận được giá cổ phiếu hiện tại của ngày.
Các dữ liệu bạn đang thực sự nhìn thấy này pset cụ thể sẽ được
như thế giới thực, vì nó có thể nhận được như vậy mà bạn đang thực sự interfacing
với cổ phiếu thế giới thực, giá thế giới thực,
và chúng ta sẽ thấy bạn có thể làm có lẽ bao nhiêu tiền
trong vài ngày tiếp theo chơi với bộ vấn đề của bạn.
>> 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
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,
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
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
để giữ mã của bạn được tổ chức tốt, để giữ cho mình tỉnh táo,
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
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.
Có mô hình thiết kế tổng thể
khoa học máy tính và phát triển phần mềm nói chung
được biết đến như MVC, xem mô hình điều khiển,
và đây là một từ viết tắt ngớ ngẩn mô tả một ý tưởng rất tốt đẹp,
đó 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,
đặc biệt giữ riêng biệt logic hay là logic kinh doanh của một trang web
do đó, rằng bất cứ điều gì có liên quan đến những thứ như
gọi chức năng và truy vấn cơ sở dữ liệu và các loại tương tự
xảy ra không nằm trong số HTML của bạn
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
thường mà bạn đã gọi là bộ điều khiển
đó thực sự là bộ não đằng sau hoạt động, và chúng tôi sẽ xem một ví dụ
điều này trong thời điểm này chỉ là một.
>> Có một mô hình được lập trình mã
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ự,
và sau đó có V trong MVC, các quan điểm,
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
HTML của bạn, có thể CSS của bạn và như thế.
Ý tưởng ở đây, như hình ảnh này cho thấy, là bộ điều khiển
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,
rằng thế giới nói chuyện với thông qua trình duyệt web của họ.
Đó là tập tin được truy cập trên internet công cộng,
nhưng bộ điều khiển nói chuyện với một mô hình có khả năng,
đó là một hoặc nhiều tập tin khác có chứa mã liên quan đến dữ liệu,
code liên quan đến cơ sở dữ liệu và các loại tương tự, và sau đó nó nói đến
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,
đó là tính thẩm mỹ của một trang web, các mẫu của các loại,
mà có thể mất một số dữ liệu như là đầu vào, nhưng vào cuối ngày
logic chỉ bên trong của một cái nhìn nên thể hiện các dữ liệu đó,
iterating trên một vòng lặp và thực sự phun ra một số
HTML dựa trên rendition hoặc thậm chí một cái gì đó giống như một PDF.
>> Gì tốt đẹp về MVC là bạn có thể có quan điểm khác nhau
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ự
muốn hiển thị cho người dùng.
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ế
bằng cách bắt đầu từ đầu tiên với phiên bản 0 ở đây.
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
một file có tên index.php trong thư mục 0.
Thông báo này là một trang web siêu đơn giản và rất underwhelming
đó là sắp xếp của phiên bản 0 của trang chủ CS50
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,
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
lên hàng đầu sẽ thay đổi lectures.php.
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.
Có vẻ như là một thứ bậc cấu trúc khá đơn giản ở đây.
>> 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,
và quả thật, nếu tôi nhìn vào index.php nó khá đơn giản.
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ế.
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ó.
Tất nhiên, như trước, bất cứ điều gì đó là trong giữa các thẻ PHP
đượ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
có nghĩa là chỉ để vứt nó đi vào cuối ngày và không thực sự
gửi nó vào trình duyệt, do đó, tất cả mọi thứ ở đây là chỉ là thẩm mỹ.
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.
Nó xảy ra để được gọi là một cái gì đó. Php,
nhưng nó thực sự chỉ là html, và week1.php, week2.php
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.
Một, đó là một số lượng lớn các sao chép / dán.
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ự,
các thẻ li, tôi dù sao cũng có loại doc, HTML, người đứng đầu,
tiêu đề, cơ thể gần, gần HTML và nhiều hơn nữa
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
trang web này hoặc restylize tôi phải đi vào và thay đổi
tìm và thay thế tất cả các file bằng tay hoặc với một số lớn.
>> 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
theo đó theo đọc tôi rằng chúng tôi đã bao gồm để bạn có thể chơi cùng với
những nhàn nhã hơn ở nhà thông báo rằng chúng tôi có ở đây
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,
và có vẻ như là tôi đã lấy nó khi bản thân mình yếu tố ra
một số mã thông thường, header.php và footer.php.
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.
Header.php có vẻ quen thuộc,
nhưng nhận thấy nơi nào nó cắt?
Ngay sau khi dòng 19, vì vậy đó là tất cả mọi thứ đã được phổ biến
từ các tập tin index.php, lectures.php,
Tuần 1 và week2.php từ ví dụ trước.
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,
đặt nó trong một file riêng, và tương tự trong footer.php
Tôi đã áp dụng cùng một nguyên tắc theo đó chỉ thú vị dòng
trong footer.php này, hai cơ thể và HTML gần gần.
>> Nhưng điều này có nghĩa là bây giờ là trong phiên bản mới
thông báo index.php nó có thể đơn giản hơn nhiều.
Cấp, nhiều hơn một chút khó hiểu, một chút ít trực quan
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.
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,
đó là rất gợi nhớ, nhớ lại, C # bao gồm cơ chế.
Chúng tôi yêu cầu header.php ở đầu trang.
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
đặc biệt về tập tin này là nội dung có nghĩa là phải duy nhất cho nó.
Nếu tôi sau đó đi vào, nói, lectures.php, cùng một nguyên tắc được áp dụng.
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,
và ở giữa nó chỉ có các nội dung thực sự thay đổi.
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
cùng một nguyên tắc đã được áp dụng ở đó.
Vâng, chúng tôi đang không hoàn toàn thực hiện ở đó.
>> Chúng ta hãy xem xét phiên bản 2, trong đó có một cấu trúc tương tự,
nhưng nhận thấy bây giờ tôi đã giới thiệu cái gì khác.
Trong dòng 10, tôi đã giới thiệu helpers.php,
mà dường như có chức năng trợ giúp.
Một chức năng trợ giúp nói chung là một chức năng tương đối ngắn
mà bạn viết để giúp bạn ra ở những nơi khác nhau,
và chúng ta hãy xem những gì bên trong của helpers.php.
Trong trường hợp này, có vẻ như nó có 2 chức năng.
Nhớ lại từ ngày khác với ví dụ khối lập phương của chúng tôi
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 đã
xác định chức năng được gọi là làm cho chân và làm cho tiêu đề,
là người đầu tiên trong số đó có một tham số gọi là dữ liệu,
có giá trị mặc định là một mảng trống rỗng, như đề nghị có,
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
bằng cách nói mở khung hình vuông, đóng vuông khung.
Đ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.
>> Chức năng này chiết xuất là một chút đặc biệt trong đó
những gì nó là nó mất như là đối số của nó một mảng kết hợp
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
và giá trị của thanh chức năng chiết xuất
tạo ra một tình huống trong đó bây giờ, như dòng 11,
bạn có một biến địa phương gọi là $ foo có giá trị thanh.
Và nếu bạn có các phím và các giá trị trong mảng dữ liệu,
tương tự như vậy họ sẽ được trích xuất vào phạm vi địa phương
hoặc tên không gian để footer.php và
cùng một ý tưởng xuống đây để header.php
có quyền truy cập vào các biến.
Trong thực tế, tôi mở ra một lần nữa header.php
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.
>> Thay vì cứng mã hóa CS50 là tiêu đề cho mỗi trang duy nhất
nhận thấy sự năng động đó là có thể bây giờ.
Trong dòng 5 tôi nhắc lại một biến tiêu đề,
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.
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.
Nó đảm bảo rằng bất kỳ ký tự đặc biệt
trong chuỗi đó là được thông qua tại đúng cách trốn thoát HTML.
Đ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
theo đó một người nào đó có thể độc hại hoặc vô tình
tiêm HTML riêng của họ vào trang web của bạn
bằng cách dán vào một số hình thức, ví dụ,
một cái gì đó mà bạn không khá mong đợi, đặc biệt là mã JavaScript,
như chúng ta sẽ nói về trong một tuần hoặc hai.
>> Này header.php bây giờ, đó là một cái nhìn
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.
Nhưng đặc biệt hơn, đó là một bản mẫu.
Đâ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ư,
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
dựa trên biến tiêu đề
được chiết xuất khi chúng tôi gọi, một lần nữa,
tiêu đề khiến chức năng.
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ờ
bởi vì trong footer.php không có tính năng động nào.
Có thể có, nhưng tại thời điểm đó là một danh sách cứng cũng là 2 thẻ,
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
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?
Hãy để tôi đi thay vì vào phiên bản 3,
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.
>> Hãy để tôi có một chức năng vẽ lại.
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,
đó là có nghĩa là tên của một mẫu,
và sau đó tôi sẽ nối presumptuously php giá trị của biến đó.
và sau đó nếu nó tồn tại foo.php, bar.php hoặc header.php và footer.php,
sau đó tôi sẽ đi trước và trích xuất các dữ liệu biến
và sau đó yêu cầu con đường đó.
Nói cách khác, sử dụng này ngay bây giờ, nếu tôi mở index.php
nhận thấy rằng tôi không gọi cho tiêu đề vẽ lại nữa.
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 đề
để làm rõ mẫu tôi thực sự muốn để tải.
>> Sau đó, ở đây nhận thấy những gì tôi đang làm.
Tôi đang đi qua trong một chìa khóa tự động của tiêu đề,
một giá trị CS50, và điều này quá, như chúng ta đã thấy trước đây,
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
nơi tôi có thể thay thế chức năng mảng với dấu ngoặc vuông,
mà tôi đề xuất là thậm chí còn dễ đọc hơn và chắc chắn
một chút dễ dàng hơn để loại.
Và tất nhiên, với các cuộc gọi vẽ lại chân ở phía dưới,
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,
bởi vì có bên trong không có gì năng động của footer.
Nó chỉ là một số thẻ gần gũi cho HTML.
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,
nhưng hãy để tôi mở ra 2 ví dụ thức.
Đ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
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.
>> 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
một bao gồm các thư mục và thư mục một mẫu
có nội dung đang có được những điều tôi muốn bao gồm
và các mẫu mà tôi muốn làm, tương ứng.
Đ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,
giữ các tập tin có liên quan với nhau, nhưng kết quả cuối cùng
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ớ
đến, ví dụ, index.php
khi chúng tôi yêu cầu helpers.php tập tin
bây giờ chúng ta phải yêu cầu nó thông qua bao gồm / helpers.php
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ụ.
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
các chức năng như yêu cầu, đòi hỏi một lần.
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.
Ở đâ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
người giúp đỡ bao gồm trong dự án của tôi một lần.
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
nó là đủ quá chỉ để nói yêu cầu lên hàng đầu
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.
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
yêu cầu một lần, vì vậy tôi sẽ cắt nó xuống chỉ yêu cầu.
>> Chúng ta hãy thêm một bước nữa.
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.
Chú ý những gì tôi đã thực hiện ở đây mỗi đọc trong phiên bản cuối cùng
bây giờ tôi có thư mục HTML của tôi, mà tôi đã có tất cả thời gian,
nhưng bên trong đó bây giờ chỉ là lectures.php, index.php,
week1.php và week2.php.
Bao gồm các thư mục hiện đang sống cùng với các thư mục HTML,
do đó, ở mức độ tương tự như người anh em, vậy để nói chuyện.
Vì vậy, hiện thư mục mẫu.
Takeaway quan trọng ở đây là tôi đã giới thiệu cấu trúc hơn một chút,
nhưng tính năng quan trọng bây giờ là chỉ có các tập tin
mà cần phải có trang web truy cập, công khai địa chỉ
bởi một URL trên internet công cộng trong thư mục HTML của tôi.
>> Trong khi đó, các tập tin khác, helpers.php, footer.php,
header.php, được cho là có thể nhạy cảm hơn,
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ệ
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.
Đó là thực hành tốt để giữ cho của thư mục công cộng HTML
bất kỳ tập tin không cần mình phải được công khai.
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ụ,
thư mục HTML của tập tin index.php,
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
hoặc yêu cầu một lần tập tin này.
Tôi cần phải đầu tiên làm .. để đi đến thư mục cha,
sau đó / bao gồm / helpers.php
lặn quay trở lại để có được những tập tin mà tôi quan tâm.
>> Bất kỳ câu hỏi sau đó trên MVC
hoặc hiện thân tương đối đơn giản của chúng?
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ề
V ở đây, các quan điểm và bao thanh toán của các mẫu này.
Chúng tôi đã không thực sự phân biệt M từ C chỉ được nêu ra.
Trong thực tế, có thực sự là không có M ở đây, và ngay cả C của chúng tôi,
đ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
quen thuộc với cả hai những 2 chữ cái từ MVC,
hay đúng hơn, bạn sẽ nhận được nhiều quen thuộc hơn với C
trong MVC cho 7 bộ vấn đề, do đó, có nhiều trên đường chân trời.
Câu hỏi?
Có thực sự là không có ai ở đây.
>> Đượ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.
Đó là sự ra đời của một cơ sở dữ liệu.
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.
Chúng tôi đã sử dụng các biến.
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
và sử dụng các tập tin như fprintf, và sau đó chúng tôi thậm chí bắt đầu
nói về CSV tập tin một chút, giá trị được tách nhau bằng dấu phẩy,
do đó, tất cả trong số này cho phép chúng ta có được dữ liệu lưu trữ
hoặc không liên tục hoặc liên tục.
Nhưng ngay cả CSVs là không thực sự thuận lợi để tìm kiếm
và chèn và xoá.
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
từng hàng từng hàng, vì vậy nếu bạn muốn
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.
Bạn phải bắt đầu ở đầu của tập tin, đọc toàn bộ điều trong,
và tìm kiếm một số giá trị quan tâm.
Nếu bạn muốn chèn vào nó, bạn phải làm điều tương tự,
iterating trên nó và chèn vào một nơi cụ thể,
và trong thực tế, bạn có để làm tất cả của logic tìm kiếm chính mình.
>> 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ã.
Bạn không thể làm lọc của một tập tin CSV
trừ khi bạn viết mã.
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
để thực sự làm cho việc tìm kiếm dễ dàng và chèn dễ dàng
và xóa và cập nhật và vv?
Đó là chính xác những gì là một cơ sở dữ liệu.
SQL, ngôn ngữ truy vấn có cấu trúc, là một ngôn ngữ khác
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,
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
đặc điểm để cho pset 7, và nếu bạn làm web cái gì đó dựa,
dự án cuối cùng của bạn, bạn có khả năng để thể hiện chính mình
về các truy vấn dữ liệu.
Bạn có khả năng lưu trữ một chút hoặc rất nhiều dữ liệu
một cách có cấu trúc hơn vào cuối ngày
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
chính xác hơn rất nhiều, nhiều hơn nữa phương pháp để
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.
>> 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
hoặc số nơi nó là một bảng tính,
hoặc có thể nhiều bảng tính và bảng tính, tất nhiên,
có hàng và cột, và đó là bởi vì
SQL cơ sở dữ liệu quan hệ, quan hệ trong ý nghĩa
mà họ lưu trữ dữ liệu trong các điều khoản của các bảng,
hàng và cột.
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,
và một bảng tính có nghĩa là để được sử dụng bởi một con người.
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
viết mã chống lại nó, do đó, các hóa thân của một cơ sở dữ liệu
là có được một trong hai dòng lệnh.
>> 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,
đó là miễn phí tuyệt vời, hiệu suất rất cao, và đây là những gì
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
để 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
rằng bằng cách sử dụng các lệnh tương đối đơn giản
chúng ta có thể chọn dữ liệu, dữ liệu chèn, cập nhật dữ liệu,
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
hơn là chỉ cần gõ tại dấu nhắc màu đen và trắng ở đây.
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.
Tên là sự trùng hợp ngẫu nhiên.
Công cụ này xảy ra để được thực hiện trong PHP,
nhưng đó là về cơ bản không liên quan.
Gì hữu ích về phpMyAdmin là nó là một tiện ích dựa trên web.
Chúng tôi đã cài đặt sẵn trong thiết bị này cho bạn,
và với nó, bạn có thể tạo bảng trong một cơ sở dữ liệu,
bạn có thể chèn dữ liệu, xóa dữ liệu, và thường thấy
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.
Người dùng của bạn sẽ không sử dụng phpMyAdmin.
>> Đ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
để 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ó,
giống như bạn có thể sử dụng Excel hoặc số,
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
để bạn có thể tập trung vào giải quyết vấn đề thú vị và không quá nhiều
vào các câu lệnh phức tạp.
Chúng ta hãy xem xét một ví dụ về dữ liệu có thể được lưu trữ tabularly
trong một cơ sở dữ liệu quan hệ.
Dưới đây là một ví dụ.
Bây giờ, thật không may, phpMyAdmin sai lầm ở phía bên đường ném quá nhiều từ
và đồ họa ở bạn, nhưng nếu bạn trau dồi tại chỉ trên
ID cột, cột tên người dùng, và cột băm,
đ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
của một bên trong bảng thiết bị
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.
>> Đặc biệt, chúng tôi cung cấp cho bạn một tập tin đại diện cho
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,
một trong số đó là một ID duy nhất bắt đầu từ 1 và được tăng lên sau đó.
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,
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.
Ở 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.
Chúng băm của nó, do đó, nó quay ra
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ệ.
Bạn đã có thể đọc tại một số điểm của một số trang web
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
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ứ
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.
>> 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
là hoàn toàn ngu si, nhưng nó rất thú vị
sau đó để đọc về một số công ty rất nổi tiếng
đôi khi trên báo chí có cơ sở dữ liệu đang bị tổn hại,
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
mật khẩu là vô lý vì theo nghĩa đen với một dòng mã
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.
Ngay cả đối với phiên bản giả ít CS50 Tài chính của chúng tôi
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à
tất cả các mật khẩu bắt đầu với $ 1 $ chỉ là quy ước.
Điều đó chỉ có nghĩa là họ đã được mã hóa hoặc thực sự băm,
mà là giống như một chức năng mã hóa một chiều
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.
>> Thực tế là 50 là sau đó có nghĩa là một giá trị muối
số 50 đã được sử dụng cho băm tất cả các mật khẩu, ngoại trừ một.
Mine, tất nhiên, như bạn có thể nhìn thấy ở đó, HA,
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
có thể trong Hacker 2, mà có thể có được kết quả có của chúng tôi được sử dụng
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
như một số người sử dụng khác lên đó.
Trong thực tế, nếu bạn đã chờ đợi tất cả những tuần lễ để tìm hiểu
những gì các mật khẩu đã được ở đây là mật khẩu mà bạn đã thách thức
để crack trong ấn bản Hacker của 2 bộ vấn đề, do đó, không quá khó khăn.
Trong thực tế, Malan là giống như jharvard,
nhưng nếu chúng ta quay trở lại họ nhìn khác nhau.
>> Tập trung vào jharvard trong màu đỏ thẫm bởi vì họ đã được ướp muối khác nhau.
Thuật toán được bị nhiễu loạn theo một cách mà các
giá trị băm, giá trị mã hóa hơi khác một chút
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
vẫn còn cuối cùng là màu đỏ thẫm.
Bây giờ, những người quan tâm về điều này?
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
và băm các mật khẩu của họ, do đó mà bạn thực sự có một số
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.
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.
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
để 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
bạn đi qua quá trình nhập khẩu bảng này
và cũng có thể giải thích những gì một số đặc điểm,
và bạn cũng sẽ thấy rằng chúng tôi cung cấp cho bạn mã
để xử lý các băm hoặc mã hóa các mật khẩu,
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ề.
>> Vì vậy, SQL, cấu trúc ngôn ngữ truy vấn.
Đ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
và có lẽ vượt quá yêu cầu dữ liệu từ cơ sở dữ liệu một số.
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,
nhưng bằng cách sử dụng một số cú pháp tương đối đơn giản như xóa,
chèn, cập nhật và chọn, chúng ta có thể làm chính xác điều đó.
Chúng tôi có thể xóa từ cơ sở dữ liệu, chèn,
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.
Làm thế nào để chúng tôi đi về việc này?
Hãy để tôi đi trước vào thiết bị.
Hãy để tôi kéo lên http://localhost,
, một lần nữa, bản thân thiết bị địa phương.
Đó là biệt danh của nó mặc định.
Và hãy để tôi đi đến / phpmyadmin.
Đ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
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.
>> Như thường lệ, tôi sẽ gõ jharvard và crimson,
nhưng nhận ra đó là tài khoản quản trị viên trên máy tính.
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.
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
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,
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.
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,
là người đầu tiên trong số đó là cơ sở dữ liệu ở đây.
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.
Điều này giống như tạo ra một file Excel mới, có hiệu quả.
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.
Nó có để làm với các đại diện của dữ liệu trong đó,
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
ở phía bên trái, nơi nó nói cơ sở dữ liệu không
Tôi cần sớm nhìn thấy cơ sở dữ liệu bài giảng.
>> 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,
nhận thấy tab của tôi thay đổi một chút.
Tôi đã có cấu trúc, SQL, xuất khẩu, nhập khẩu và một số thứ khác.
Cấu trúc là khá nhiều trống.
Không có bảng nào được tìm thấy trong cơ sở dữ liệu, như nó nói ở đây,
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
như học sinh, và chúng ta muốn có bao nhiêu cột?
Hãy giữ cho đơn giản này, và hãy ghi lại cho mỗi học sinh
một số ID, tên, và địa chỉ email.
>> Chúng tôi sẽ giữ nó đơn giản như thế, do đó, 3 cột, đi.
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,
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
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.
Nó sẽ là một số nguyên. Tôi thực sự có thể bỏ qua chiều dài và giá trị.
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.
Giá trị mặc định, tôi có thể làm cho nó vô giá trị, theo định nghĩa.
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.
Hãy di chuyển trên đây, thuộc tính bên phải.
Điều này là thú vị.
Hãy đi trước và phần nào tùy tiện nói rằng ID phải là unsigned.
Hãy để không lãng phí bất kỳ số âm.
>> Hãy đi 0 đến 4 tỷ đồng, cho hay phải mất,
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 ở đó,
nhưng sau đó cho tôi gõ tên xuống đây,
và sau đó là email, do đó nắm bắt được email
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.
Hóa ra varchar, chiều dài thay đổi char,
giống như một chuỗi trong một cơ sở dữ liệu SQL
nhưng có chiều dài biến, và bạn thực sự phải nói cho nó trước
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
theo quy ước loại 255 ký tự.
Tôi hoàn toàn có thể nói 32. Tôi có thể nói 1.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à
Tên học sinh dài nhất và đi với con số đó lớn hơn một chút,
nhưng những gì tốt đẹp về một varchar là nó sẽ không để lãng phí
255 byte trên tên của mỗi học sinh.
Nếu đó là DAVID nó sẽ không sử dụng 255 byte toàn bộ,
nhưng đó là một trên ràng buộc, do đó, tôi sẽ đi với 255 chỉ theo quy ước,
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
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ự.
Nhưng tôi sẽ làm một việc khác ở đây ở phía bên tay phải.
>> 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
hoặc phức tạp công việc cho bạn.
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.
Nó chỉ có nghĩa là một định danh duy nhất trong cơ sở dữ liệu
vì vậy tôi có một đại diện gọn gàng 32-bit của học sinh đó
vì vậy mà tôi có một số cách duy nhất để phân biệt chúng
vì sợ rằng có 2 Davids, ví dụ, trong một lớp học.
Trong thực tế, tôi sẽ kiểm tra hộp này AI, tự động tăng,
để các cơ sở dữ liệu, MySQL, con số ra
mỗi học sinh mới được chèn vào ID là có được.
Tôi thậm chí không cần phải quan tâm về điều đó trong mã của tôi,
và tôi cũng sẽ chọn một cái gì đó dưới trình đơn chỉ mục.
Chỉ số thả xuống ở đây đã tiểu học, độc đáo,
chỉ số và văn bản đầy đủ.
Bạn có thể có thể đoán những gì một vài những điều này,
nhưng nó quay ra trong cơ sở dữ liệu quan hệ
các lập trình viên hoặc quản trị viên cơ sở dữ liệu nhận được để preemptively
đưa ra gợi ý vào cơ sở dữ liệu là những lĩnh vực
trong một bảng là một chút đặc biệt.
>> Ví dụ, trong trường hợp này tôi sẽ nói rằng ID
là có được một chỉ số chính, nếu không được biết đến như một khóa chính.
Điều này có nghĩa là theo định nghĩa là ID đó từ nay trở đi
sẽ xác định duy nhất sinh viên trong bảng này.
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.
Hơn nữa, điều này sẽ làm cho tôi là nó sẽ cho biết
MySQL mà ID là đặc biệt.
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,
xây dựng một số loại cây.
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,
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
và cố gắng mà chúng ta nhìn, nhưng nó sẽ nói
cơ sở dữ liệu lĩnh vực này là rất quan trọng mà tôi có lẽ
muốn để có thể tìm kiếm trên đó, đi trước và xây dựng một số ưa thích
cấu trúc dữ liệu trong bộ nhớ để tiến hành tìm kiếm để lý tưởng
họ hằng số thời gian hoặc ít nhất là gần đó là có thể
để nó không devolve vào tìm kiếm tuyến tính, mà không được
cao nhất thực hiện phương pháp tiếp cận.
Ngược lại, địa chỉ email có thể có được một khóa chính.
>> 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,
nhưng nói chung không tốt để sử dụng một cái gì đó giống như một chuỗi
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
hàng trong bảng của bạn không có lý do để sử dụng 255 byte tối đa
để xác định một người nào đó nếu bạn có thể nhận được ngay với chỉ 4 byte
hoặc một int 32-bit.
Nói chung, một khóa chính nên ngắn gọn và súc tích
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.
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
là để thực thi duy nhất cho tôi.
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ó
là cuộn ra khỏi màn hình, tôi đang nói đến cơ sở dữ liệu
không tin tưởng tôi.
Đừng để tôi chèn vào cơ sở dữ liệu
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à
rất tốt với ifs và ifs khác và mã PHP thực tế
và tôi vô tình cho phép người dùng đăng ký một địa chỉ email hiện có
cơ sở dữ liệu là có một mức độ bảo vệ cho đúng đắn
để đảm bảo rằng địa chỉ email trùng lặp không kết thúc trong bảng.
>> 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
bởi vì sau đó không bao giờ có thể là 2 Davids hoặc 2 Mike Smiths, ví dụ,
trong cơ sở dữ liệu của bạn, để chúng tôi sẽ chỉ để lại một mình.
Tôi sẽ đi trước và bấm vào lưu ở góc dưới bên phải,
và tất cả mọi thứ có vẻ tốt, nhưng nhận thấy ở đây
đâ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
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
thường xuyên, nhưng SQL chính nó là một ngôn ngữ,
cú pháp là quyền ở đây mà tôi đã nêu bật.
PhpMyAdmin thực sự là nó tạo ra một giao diện dựa trên web cho bạn
mà bạn có thể tiết kiệm thời gian và không phải tự loại ra
một truy vấn SQL khá dài như thế.
>> Nói cách khác, nếu bạn muốn tự tạo ra bảng này,
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
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
bạn muốn, thẳng thắn, điều này đã có thể lấy cho tôi một phút
để thực sự nhớ cú pháp, và thậm chí sau đó, tôi có lẽ sẽ có
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.
Bạn có thể bắt đầu để suy ra cú pháp là gì
chỉ bằng cách mã hóa màu sắc đẹp mà phpMyAdmin được thêm
để thuận tiện cho hình ảnh của chúng tôi.
Nhưng bây giờ chúng ta hãy làm điều này thay vì.
Hãy để tôi đi vào tab chèn ở đầu trang, và để cho tôi đi trước và chèn ví dụ
một ID của chúng ta hãy nói rằng thực sự tôi không quan tâm.
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.
Nhưng tôi được David, và email của tôi nên được malan@harvard.edu.
>> Hãy đi trước đây và đưa vào Mike Smith là một số khác.
Tôi sẽ cung cấp cho bản thân mình một tên cuối cùng là tốt,
và chúng tôi sẽ có anh smith@example.com,
và sau đó, nơi để tôi đi tiếp theo?
Vâng, có vẻ như go là nút bấm, và thì đấy.
Thông báo tại 2 hàng hàng đầu chèn.
Đây là các truy vấn SQL thực tế.
Đó là công cụ phpMyAdmin thực hiện cho tôi,
nhưng kết quả cuối cùng, thông báo, nếu tôi đi đến tab trình duyệt,
là để xem 2 dòng trong bảng này, rất gợi nhớ về mặt thẩm mỹ
của bảng, chúng ta đã thấy cho người dùng của chúng tôi từ pset 7,
một trong số đó là David Malan, một trong số đó là Mike Smith.
Nhưng chỉ để được rõ ràng, tôi không cần phải sử dụng phpMyAdmin,
và quả thật, bạn sẽ sớm được viết mã cho pset 7
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ự,
vì vậy hãy để tôi thay vì đi vào tab SQL lên đây
và gõ * lựa chọn từ các sinh viên nơi
email = "malan@harvard.edu."
>> Nói cách khác giả sử bây giờ bạn có
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,
và mục tiêu hiện nay là trong PHP trên mã kết thúc trở lại
để thực sự tìm kiếm các chi tiết khác của người sử dụng.
Tên đầy đủ của bạn là gì? Số ID của bạn là gì?
Bạn có thể viết một truy vấn SQL như thế này, chọn * từ sinh viên
nơi email = "malan@harvard.edu."
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.
Mike được bỏ qua từ này tập hợp kết quả, như là bộ sưu tập hàng
thường được gọi là, bởi vì anh ta không có địa chỉ email giống như tôi.
>> 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
và một công cụ sư phạm để tìm hiểu theo cách của bạn
trên toàn thế giới của SQL, nhưng vào cuối ngày
bạn sẽ được viết các truy vấn bên trong mã PHP thực tế,
và do đó, tiếp tục theo dõi trong walkthrough Zamyla đặc biệt
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 đề
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
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
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.
Chúng tôi cũng đã viết một phần của pset cho bạn,
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
mà thực sự sử dụng một bộ điều khiển, dụ, index.php,
login.php và như thế, và sau đó bạn sẽ thấy pset cũng có một thư mục mẫu
có tất cả các quan điểm của bạn, tất cả các tính thẩm mỹ.
Và do đó, các quy trình làm việc chung trong pset 7 là có được mà
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.
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
có thể được một số dòng của SQL lồng nhau ở giữa dấu ngoặc kép
và được chuyển đến một chức năng, chúng tôi đã viết truy vấn được gọi là
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ế
một công cụ hành chính như phpMyAdmin.
>> Bạn sẽ có thể để viết câu lệnh SQL trong PHP code
và nhận được trở lại một mảng PHP của tập kết quả,
của các hàng mà thực sự phù hợp với truy vấn.
Và tương tự như bạn sẽ có thể làm chèn hoặc xóa
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,
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
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 đó.
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
và MySQL, nhưng sức mạnh của nó thực sự là nó giải phóng bạn
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
mà không phải lo lắng khá nhiều, ít nhất là đầu vào,
ở đâu và làm thế nào để lưu trữ và tìm kiếm cơ sở dữ liệu của bạn,
và điều này là hoàn toàn theo nghĩa đen chính Facebook đã bắt đầu
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ủ
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 để
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,
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
và vv chỉ làm việc có một cuộc trò chuyện rất thú vị
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
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.
>> 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.
[CS50.TV]