1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Minggu 8, Lanjutan] 2 00:00:02,000 --> 00:00:04,000 [David J. Malan] [Harvard University] 3 00:00:04,000 --> 00:00:08,000 [Ini adalah CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:13,000 >> Ini adalah CS50, jadi ini adalah akhir dari Minggu 8 di sini. 5 00:00:13,000 --> 00:00:16,000 Kami tentu memiliki sedikit badai awal pekan ini, 6 00:00:16,000 --> 00:00:19,000 jadi sekarang itu benar-benar hanya kau dan aku di ruang kuliah, 7 00:00:19,000 --> 00:00:22,000 tapi hari ini kita melanjutkan pembicaraan kita tentang PHP 8 00:00:22,000 --> 00:00:25,000 dan tentang pemrograman web lebih umum, dan kami juga memperkenalkan ide 9 00:00:25,000 --> 00:00:29,000 database, terutama satu disebut MySQL, yang cukup populer hari ini, 10 00:00:29,000 --> 00:00:34,000 sebagian besar karena dari skalabilitas serta karena yang menjadi sumber bebas dan terbuka. 11 00:00:34,000 --> 00:00:37,000 >> Tapi pertama-tama, melihat di mana kami tinggalkan terakhir kali. 12 00:00:37,000 --> 00:00:40,000 Ingatlah bahwa kita cari di IM beberapa contoh Frosh, 13 00:00:40,000 --> 00:00:44,000 dan ini adalah bentuk mengerikan yang saya datang dengan beberapa 15 + tahun yang lalu 14 00:00:44,000 --> 00:00:49,000 dalam rangka untuk memiliki mahasiswa di kampus mendaftar untuk olahraga mahasiswa intramural 15 00:00:49,000 --> 00:00:52,000 tanpa benar-benar harus perjalanan lagi melintasi halaman untuk Wigglesworth 16 00:00:52,000 --> 00:00:56,000 untuk geser sepotong fisik kertas di bawah pintu beberapa pengawas itu. 17 00:00:56,000 --> 00:00:59,000 Sebaliknya kami pindah segalanya secara online, tetapi untuk melakukan itu kita perlu memanfaatkan 18 00:00:59,000 --> 00:01:03,000 dari beberapa teknologi, jadi satu, kami membutuhkan HTML, hypertext markup language, 19 00:01:03,000 --> 00:01:07,000 yang sekali lagi merupakan bahasa markup dengan yang Anda membuat halaman web secara struktural. 20 00:01:07,000 --> 00:01:10,000 >> Menggunakan sedikit CSS hari ini, cascading style sheets, 21 00:01:10,000 --> 00:01:16,000 dimana kita menggunakan stilisasi dari halaman web menggunakan sintaks yang sedikit berbeda, 22 00:01:16,000 --> 00:01:19,000 sedangkan HTML adalah semua tentang struktur daripadanya. 23 00:01:19,000 --> 00:01:21,000 Kita juga perlu untuk memperkenalkan bahasa pemrograman web. 24 00:01:21,000 --> 00:01:25,000 Dalam kasus ini, kita akan menggunakan PHP, dan PHP akan memungkinkan kita 25 00:01:25,000 --> 00:01:28,000 konten keluaran dinamis serta melakukan hal-hal seperti program 26 00:01:28,000 --> 00:01:33,000 mengirim email, seperti yang terjadi pada catatan kami meninggalkan pekan lalu. 27 00:01:33,000 --> 00:01:35,000 >> Ingat bahwa kode untuk ini adalah dalam 2 bagian. 28 00:01:35,000 --> 00:01:38,000 Satu, kami memiliki froshims3.php, 29 00:01:38,000 --> 00:01:42,000 dan ini adalah sebagian besar markup dengan bentuk HTML di dalamnya, 30 00:01:42,000 --> 00:01:45,000 sedikit kecil CSS di sini dalam gaya atribut 31 00:01:45,000 --> 00:01:48,000 sehingga bentuk itu sendiri akan berpusat pada halaman, tapi di luar itu 32 00:01:48,000 --> 00:01:51,000 kami memiliki beberapa masukan bentuk representatif, kolom teks, kotak centang, 33 00:01:51,000 --> 00:01:55,000 beberapa tombol radio, menu pilih, dan tombol kirim. 34 00:01:55,000 --> 00:02:01,000 Dan melalui formulir ini, kami ajukan ke sebuah file yang ternyata disebut register3.php, 35 00:02:01,000 --> 00:02:04,000 yang itu sendiri tampak sedikit sesuatu seperti ini. 36 00:02:04,000 --> 00:02:08,000 Sekarang, sebagian besar kode di register3.php, ingat, itu semua tentang email. 37 00:02:08,000 --> 00:02:11,000 Itu sedikit validasi dari bentuk yang diajukan untuk memastikan 38 00:02:11,000 --> 00:02:14,000 bahwa bidang yang benar-benar memberikan yang diharapkan. 39 00:02:14,000 --> 00:02:18,000 Kemudian kami disebut beberapa fungsi PHP menggunakan sedikit sintaks baru, 40 00:02:18,000 --> 00:02:20,000 meskipun itu dipinjam dari C. 41 00:02:20,000 --> 00:02:24,000 >> Ini Operator panah memungkinkan kita untuk menggunakan sesuatu yang disebut pemrograman berorientasi obyek. 42 00:02:24,000 --> 00:02:27,000 Kami tidak akan masuk ke bahwa dalam setiap rinci di sini, tapi tahu untuk saat ini 43 00:02:27,000 --> 00:02:31,000 itu adalah cara memiliki fungsi yang terkait dengan benda-benda, 44 00:02:31,000 --> 00:02:34,000 yang merupakan jenis khusus dari struktur, seperti yang kita lihat di C. 45 00:02:34,000 --> 00:02:37,000 Tapi untuk saat ini, hanya mengambil pada iman bahwa ini adalah sintaks yang benar untuk menggunakan 46 00:02:37,000 --> 00:02:41,000 ketika menggunakan perpustakaan seperti ini perpustakaan PHPMailer. 47 00:02:41,000 --> 00:02:44,000 Dan kemudian pada akhir file ini kita telah dihasilkan secara dinamis email 48 00:02:44,000 --> 00:02:47,000 yang harus dikirim ke akun saya jharvard@cs50.net 49 00:02:47,000 --> 00:02:50,000 dari rekening jharvard@cs50.net saya, 50 00:02:50,000 --> 00:02:54,000 dan kami diberitahu pengguna sesuai bahwa mereka telah terdaftar untuk olahraga ini. 51 00:02:54,000 --> 00:02:57,000 Itu cukup banyak apa situs Frosh IM melakukan bertahun-tahun yang lalu 52 00:02:57,000 --> 00:03:00,000 ketika saya menerapkannya, diberikan, dalam bahasa yang berbeda, 53 00:03:00,000 --> 00:03:02,000 tapi itu menunjukkan Anda mungkin kekuatan yang Anda miliki 54 00:03:02,000 --> 00:03:05,000 sekarang Anda dapat mengekspresikan diri tidak hanya pemrograman 55 00:03:05,000 --> 00:03:08,000 pada tingkat yang rendah dalam bahasa seperti C tetapi pada tingkat yang lebih tinggi 56 00:03:08,000 --> 00:03:11,000 dengan aplikasi dunia yang sangat nyata seperti email untuk benar-benar memecahkan 57 00:03:11,000 --> 00:03:13,000 beberapa masalah dunia nyata. 58 00:03:13,000 --> 00:03:16,000 >> Sekarang, tentu saja, meskipun saya menggunakan script ini untuk menghasilkan beberapa 59 00:03:16,000 --> 00:03:20,000 email dinamis dari jharvard@cs50.net, yang memang account 60 00:03:20,000 --> 00:03:23,000 bahwa saya memiliki akses ke, jangan sangat berhati-hati untuk mengirim 61 00:03:23,000 --> 00:03:26,000 mengirimkan hanya dari account yang benar-benar Anda sendiri, 62 00:03:26,000 --> 00:03:30,000 supaya hal membuat Anda dalam sedikit air panas dalam kehidupan. 63 00:03:30,000 --> 00:03:35,000 Dengan mengatakan bahwa, mari kita sekarang transisi untuk memecahkan masalah yang berbeda sama sekali, 64 00:03:35,000 --> 00:03:37,000 bahwa negara mempertahankan. 65 00:03:37,000 --> 00:03:39,000 Sekarang, apa ini benar-benar berarti? 66 00:03:39,000 --> 00:03:42,000 HTTP, protokol transfer hypertext ini, 67 00:03:42,000 --> 00:03:45,000 sebenarnya adalah protokol stateless, dan apa artinya ini adalah bahwa 68 00:03:45,000 --> 00:03:48,000 ketika Anda menarik sesuatu seperti Google.com dan kemudian tekan enter 69 00:03:48,000 --> 00:03:51,000 Biasanya browser Anda memiliki beberapa jenis ikon berputar yang kemudian 70 00:03:51,000 --> 00:03:54,000 Hasil dalam beberapa halaman web yang didownload, 71 00:03:54,000 --> 00:03:57,000 dan kemudian bahwa ikon kecil berhenti berputar, dan bahwa memang menunjukkan 72 00:03:57,000 --> 00:04:02,000 bahwa HTTP telah menyelesaikan beberapa jenis koneksi ke server dan hanya itu. 73 00:04:02,000 --> 00:04:05,000 HTTP adalah stateless dalam arti bahwa ia tidak memelihara 74 00:04:05,000 --> 00:04:08,000 koneksi secara persistent ke server di Skype cara yang sama tidak 75 00:04:08,000 --> 00:04:11,000 atau GChat tidak karena dengan HTTP 76 00:04:11,000 --> 00:04:15,000 asumsi adalah bahwa sekali Anda sudah mengambil sebuah halaman web itu saja. 77 00:04:15,000 --> 00:04:18,000 >> Sekarang, pada kenyataannya hari ini di situs seperti Facebook dan Google Maps 78 00:04:18,000 --> 00:04:21,000 dan Twitter dan sejenisnya ada dinamika lebih banyak dimana 79 00:04:21,000 --> 00:04:25,000 bahkan setelah ikon yang berhenti berputar Anda sebenarnya bisa mendapatkan update lebih 80 00:04:25,000 --> 00:04:29,000 dari server, more tweets, update status di Facebook lebih dan sejenisnya. 81 00:04:29,000 --> 00:04:33,000 Tetapi bahkan yang menggunakan teknik yang akan kita bicarakan dalam satu atau dua minggu 82 00:04:33,000 --> 00:04:36,000 dikenal sebagai Ajax menggunakan bahasa yang disebut JavaScript, 83 00:04:36,000 --> 00:04:38,000 tapi pada akhir hari, HTTP masih berkewarganegaraan. 84 00:04:38,000 --> 00:04:42,000 Namun jika Anda ingin entah bagaimana mengingat hal-hal tentang user 85 00:04:42,000 --> 00:04:44,000 bahkan setelah mereka telah terputus dari server Anda 86 00:04:44,000 --> 00:04:47,000 PHP tidak mampu Anda sarana untuk melakukan hal ini 87 00:04:47,000 --> 00:04:52,000 karena, seperti yang kita lihat terakhir kali, PHP memiliki sejumlah superglobals, 88 00:04:52,000 --> 00:04:55,000 dan superglobal adalah, sekali lagi, variabel global khusus 89 00:04:55,000 --> 00:04:59,000 yang diberikan kepada Anda oleh server web dan oleh PHP itu sendiri. 90 00:04:59,000 --> 00:05:02,000 >> Anda tidak perlu melakukan apapun untuk menempatkan nilai-nilai di dalamnya, 91 00:05:02,000 --> 00:05:05,000 dan di antara superglobals kita lihat sejauh ini adalah mendapatkan dan posting, 92 00:05:05,000 --> 00:05:08,000 yang mana kolom formulir diletakkan secara otomatis untuk Anda, 93 00:05:08,000 --> 00:05:11,000 serta beberapa orang lain yang kita belum melihat belum. 94 00:05:11,000 --> 00:05:17,000 Dalam $ _SERVER adalah beberapa variabel khusus yang berhubungan dengan server itu sendiri. 95 00:05:17,000 --> 00:05:22,000 Apa alamat IP, apa protokol, HTTP atau HTTPS yang Anda gunakan, 96 00:05:22,000 --> 00:05:25,000 apa metode permintaan yang Anda gunakan dan sejenisnya, jadi ada beberapa yang menarik, 97 00:05:25,000 --> 00:05:29,000 berair rincian tentang server, dan pada kenyataannya, pengguna di sana juga. 98 00:05:29,000 --> 00:05:33,000 Ada $ _COOKIE, yang mana hal-hal yang disebut cookie disimpan. 99 00:05:33,000 --> 00:05:36,000 Kami tidak akan menghabiskan waktu pada cookies sendiri hari ini, 100 00:05:36,000 --> 00:05:40,000 tapi tahu sekarang bahwa cookie hanyalah sepotong kecil informasi 101 00:05:40,000 --> 00:05:43,000 bahwa server web dapat menanam pada browser web 102 00:05:43,000 --> 00:05:46,000 dan pada gilirannya RAM atau hard drive komputer-nya 103 00:05:46,000 --> 00:05:49,000 untuk menyimpan informasi tentang pengguna, misalnya, nama pengguna mereka 104 00:05:49,000 --> 00:05:52,000 sehingga mereka tidak perlu mengetik setiap kali mereka masuk atau beberapa 105 00:05:52,000 --> 00:05:55,000 unik nomor atau pengidentifikasi untuk pengguna yang 106 00:05:55,000 --> 00:05:58,000 sehingga Anda tidak perlu mengganggu mereka dengan jenis yang sama pertanyaan tentang 107 00:05:58,000 --> 00:06:00,000 preferensi di masa depan, namun yang paling menarik 108 00:06:00,000 --> 00:06:02,000 sekarang adalah $ _SESSION. 109 00:06:02,000 --> 00:06:07,000 >> Ini superglobal, yang, seperti yang lain, diserahkan kepada Anda secara otomatis oleh PHP 110 00:06:07,000 --> 00:06:10,000 ketika Anda sedang menulis PHP berbasis website 111 00:06:10,000 --> 00:06:13,000 dapat menyimpan apa pun yang Anda inginkan, string, integer, 112 00:06:13,000 --> 00:06:16,000 floating point, nilai-nilai, array, objek, 113 00:06:16,000 --> 00:06:20,000 benar-benar apa pun yang Anda inginkan, dan memungkinkan Anda untuk menyimpannya dalam sedemikian rupa 114 00:06:20,000 --> 00:06:23,000 bahwa bahkan jika pengguna mengunjungi Anda sekarang dan kemudian 115 00:06:23,000 --> 00:06:26,000 datang kembali satu menit dari sekarang atau 5 menit dari sekarang karena 116 00:06:26,000 --> 00:06:28,000 mereka mengambil waktu mereka sebelum mengklik beberapa link lainnya 117 00:06:28,000 --> 00:06:32,000 PHP akan memastikan bahwa apa pun yang Anda dimasukkan ke dalam sesi superglobal 118 00:06:32,000 --> 00:06:37,000 beberapa menit menit atau 5 lalu masih akan berada di sana ketika kembali pengguna. 119 00:06:37,000 --> 00:06:40,000 Dan di bawah kap superglobal ini dilakukan dengan cara 120 00:06:40,000 --> 00:06:44,000 hal-hal yang disebut cookie, tetapi untuk sekarang, itu hanya sebuah abstraksi 121 00:06:44,000 --> 00:06:47,000 dimana itu semacam program setara dari keranjang belanja. 122 00:06:47,000 --> 00:06:50,000 Apa pun yang Anda, programmer, dimasukkan ke dalam 123 00:06:50,000 --> 00:06:53,000 array asosiatif superglobal akan ada beberapa jumlah menit kemudian 124 00:06:53,000 --> 00:06:59,000 sampai Anda menghapusnya atau sampai pengguna berhenti peramban nya sama sekali. 125 00:06:59,000 --> 00:07:02,000 >> Mari kita lihat sebuah contoh bagaimana hal ini benar-benar digunakan. 126 00:07:02,000 --> 00:07:07,000 Dalam counter.php antara potongan saat ini kode 127 00:07:07,000 --> 00:07:09,000 kita memiliki baris berikut. 128 00:07:09,000 --> 00:07:13,000 Pada awal file ini kita memiliki banyak komentar biru, yang menarik untuk saat ini. 129 00:07:13,000 --> 00:07:15,000 Tapi di baris 13 kita memiliki baris baru, 130 00:07:15,000 --> 00:07:18,000 session_start, dan yang benar-benar melakukan persis apa yang dikatakannya. 131 00:07:18,000 --> 00:07:20,000 Dimulai sesi. 132 00:07:20,000 --> 00:07:25,000 Hal ini memungkinkan Anda untuk menggunakan superglobal besar $ _SESSION, dan itu sesederhana itu. 133 00:07:25,000 --> 00:07:30,000 Sekarang, jika kita melanjutkan untuk melihat baris 16, mari kita coba untuk mencari tahu apa halaman web yang akan dilakukan. 134 00:07:30,000 --> 00:07:35,000 If (isset ($ _SESSION ["kontra"]) kemudian pergi ke depan 135 00:07:35,000 --> 00:07:39,000 dan simpan dalam variabel counter, counter kecil, 136 00:07:39,000 --> 00:07:42,000 $ _SESSION ["Kontra"]. 137 00:07:42,000 --> 00:07:45,000 Hal ini tampaknya akan mendeklarasikan sebuah variabel lokal yang disebut kontra 138 00:07:45,000 --> 00:07:48,000 yang di dalamnya itu menempatkan salinan apa saja yang dalam dari superglobal 139 00:07:48,000 --> 00:07:52,000 disebut sesi di lokasi "kontra." 140 00:07:52,000 --> 00:07:56,000 Lain, rupanya, ini variabel counter kecil lokal, diinisialisasi ke 0. 141 00:07:56,000 --> 00:08:01,000 >> Tapi kemudian beberapa baris kemudian pada 26 pemberitahuan bahwa salinan sesi counter, 142 00:08:01,000 --> 00:08:06,000 kuncinya, memiliki ditugaskan nilai baru yang merupakan nilai saat ini ditambah 1. 143 00:08:06,000 --> 00:08:09,000 Singkatnya, file ini tampaknya akan memperbarui 144 00:08:09,000 --> 00:08:13,000 counter yang disimpan dalam dari superglobal sesi 145 00:08:13,000 --> 00:08:16,000 dengan incrementing dengan 1, tetapi pertama kali mempertahankan salinan dari nilai sebelumnya 146 00:08:16,000 --> 00:08:20,000 dengan menyimpan dalam sebuah variabel lokal yang disebut $ counter, 147 00:08:20,000 --> 00:08:22,000 dan kemudian turun di sini mari kita lihat apa yang tersisa. 148 00:08:22,000 --> 00:08:24,000 Ternyata itu cukup banyak hanya HTML. 149 00:08:24,000 --> 00:08:29,000 Di bagian bawah halaman ini kita lihat di baris 37 yang saya telah mengunjungi situs ini 150 00:08:29,000 --> 00:08:33,000 Jumlah counter kali, jadi ada beberapa fitur yang menarik di sini. 151 00:08:33,000 --> 00:08:36,000 Satu, ini jelas variabel, tetapi tidak cukup untuk hanya menempatkan 152 00:08:36,000 --> 00:08:39,000 $ Counter di tubuh HTML Anda karena tentu saja 153 00:08:39,000 --> 00:08:43,000 apakah itu hanya ada di kalangan PHP HTML Anda akan berasumsi bahwa hanya HTML. 154 00:08:43,000 --> 00:08:48,000 Anda benar-benar ingin $ counter yang akan dicetak di layar. 155 00:08:48,000 --> 00:08:51,000 >> Tapi bukannya dengan menjatuhkan ke mode PHP 156 00:08:51,000 --> 00:08:55,000 dengan ini bagian dari sintaks kita dinamis dapat memasukkan nilai di sini 157 00:08:55,000 --> 00:08:58,000 sangat mirip dalam semangat untuk apa yang kami lakukan terakhir kali dengan 158 00:08:58,000 --> 00:09:00,000 memasukkan nilai-nilai ke string. 159 00:09:00,000 --> 00:09:04,000 Pada kenyataannya, ini hanyalah sebuah notasi singkat untuk mengatakan sesuatu seperti ini secara harfiah, 160 00:09:04,000 --> 00:09:12,000 print ($ counter) atau bahkan sesuatu seperti printf (% s, counter), 161 00:09:12,000 --> 00:09:14,000 atau bahkan, karena Anda mungkin telah melihat secara online atau di buku-buku pelajaran, 162 00:09:14,000 --> 00:09:17,000 ada fungsi di PHP disebut gema 163 00:09:17,000 --> 00:09:20,000 yang melakukan hal yang sama, dan semua dari mereka adalah cara hanya lebih lama tele 164 00:09:20,000 --> 00:09:25,000 mengatakan <=.? 165 00:09:25,000 --> 00:09:28,000 Dalam hal ini yang Anda tidak perlu menempatkan 166 00:09:28,000 --> 00:09:30,000 PHP kata setelah tanda tanya. 167 00:09:30,000 --> 00:09:34,000 Ini adalah notasi singkat untuk, sekali lagi, apa yang kita hanya melihat beberapa saat yang lalu 168 00:09:34,000 --> 00:09:37,000 yang bergema beberapa nilai. 169 00:09:37,000 --> 00:09:39,000 >> Mari kita lihat apa hasil akhir dari ini sebenarnya. 170 00:09:39,000 --> 00:09:43,000 Biarkan aku pergi lebih ke dalam file counter.php kami, 171 00:09:43,000 --> 00:09:47,000 dan kita akan melihat bahwa David hanya membuat kesalahan dengan bermain dengan kode di sana. 172 00:09:47,000 --> 00:09:50,000 Mari kita memperbaiki apa pun kacau, 173 00:09:50,000 --> 00:09:54,000 dan kesalahan tampaknya berada di sana, pergi, on line 37. 174 00:09:54,000 --> 00:09:59,000 Menurut bagian atas halaman ini saya telah mengunjungi situs ini 0 kali. 175 00:09:59,000 --> 00:10:02,000 Nah, mari kita pergi ke depan sekarang, dan di bagian atas browser klik pada 176 00:10:02,000 --> 00:10:05,000 ulang ikon, dan saya klik ulang, 177 00:10:05,000 --> 00:10:12,000 dan sekarang saya sudah mengunjungi situs 1 kali, 2, 3, 4, 5, 6, 7, 8. 178 00:10:12,000 --> 00:10:16,000 Dan memang, jika kita melihat sumber halaman ini kode sumber yang sebenarnya berubah, 179 00:10:16,000 --> 00:10:19,000 dan perhatikan adanya lengkap PHP apapun, dan itu karena 180 00:10:19,000 --> 00:10:23,000 Kode PHP dievaluasi atau ditafsirkan sisi server, 181 00:10:23,000 --> 00:10:27,000 dan sehingga berarti bahwa output dari script PHP adalah apa yang akhirnya dikirim ke browser, 182 00:10:27,000 --> 00:10:31,000 yang dalam hal ini adalah beberapa HTML mentah dan beberapa teks baku. 183 00:10:31,000 --> 00:10:33,000 Apa yang terjadi di sini? 184 00:10:33,000 --> 00:10:37,000 >> Nah, dengan garis relatif sedikit kode saya bisa menyimpan 185 00:10:37,000 --> 00:10:40,000 terus-menerus selama beberapa detik, atau jika kita menunggu cukup lama, 186 00:10:40,000 --> 00:10:44,000 menit, bahkan jam, beberapa nilai dengan cara yang membuat HTTP 187 00:10:44,000 --> 00:10:47,000 tampak stateful seolah-olah kita telah ditahan 188 00:10:47,000 --> 00:10:51,000 ini koneksi ke server, dan itu hanya mengingat apa yang saya katakan terakhir kali, 189 00:10:51,000 --> 00:10:55,000 tetapi dalam kenyataannya ada sejumlah besar kompleksitas terjadi di bawah tenda 190 00:10:55,000 --> 00:10:59,000 melibatkan cookie yang memungkinkan PHP untuk memberikan ilusi ini 191 00:10:59,000 --> 00:11:02,000 ini keranjang belanja-seperti fitur. 192 00:11:02,000 --> 00:11:05,000 Untuk saat ini, contoh sepele di mana kami hanya menyimpan integer, 193 00:11:05,000 --> 00:11:08,000 namun fitur yang akan datang kembali untuk menjadi nilai yang besar 194 00:11:08,000 --> 00:11:10,000 ketika kita mulai berbicara tentang proyek yang lebih kompleks, 195 00:11:10,000 --> 00:11:12,000 di antaranya masalah set 7. 196 00:11:12,000 --> 00:11:16,000 Ini adalah masalah Anda yang terakhir diatur dalam CS50. 197 00:11:16,000 --> 00:11:19,000 Aku tahu, itu sangat menyedihkan, tapi apa yang akan Anda temukan adalah bahwa kita akan menyimpulkan 198 00:11:19,000 --> 00:11:22,000 ini bagian dari semester dengan benar-benar transisi 199 00:11:22,000 --> 00:11:25,000 dari konteks C tentu dengan konteks PHP 200 00:11:25,000 --> 00:11:27,000 tapi sementara menggunakan beberapa dasar-dasar yang sama 201 00:11:27,000 --> 00:11:29,000 kita bicarakan untuk beberapa waktu. 202 00:11:29,000 --> 00:11:33,000 >> Tujuan dengan pset 7 adalah untuk menerapkan CS50 Keuangan, 203 00:11:33,000 --> 00:11:37,000 yang merupakan versi Anda sendiri dari Yahoo Finance atau Google Finance 204 00:11:37,000 --> 00:11:40,000 atau bahkan Etrade.com dimana Anda memiliki kemampuan untuk 205 00:11:40,000 --> 00:11:43,000 mencari harga saham untuk simbol yang diberikan, tapi bahkan lebih dari itu 206 00:11:43,000 --> 00:11:48,000 Anda memiliki kemampuan untuk "membeli" dan "menjual" saham 207 00:11:48,000 --> 00:11:51,000 yang diperdagangkan di bursa efek berbagai sebab seperti ini home page 208 00:11:51,000 --> 00:11:55,000 di sini menunjukkan, yang benar-benar sejauh mana kita sudah mulai 209 00:11:55,000 --> 00:11:59,000 sejumlah masalah bagi Anda, Anda memiliki form login yang meminta nama pengguna dan password. 210 00:11:59,000 --> 00:12:03,000 Ini memiliki tombol kirim, tapi setelah itu, seperti yang kita akhirnya akan melihat, 211 00:12:03,000 --> 00:12:06,000 tidak ada yang benar-benar terjadi di bawah kap namun karena 212 00:12:06,000 --> 00:12:09,000 tetap bagi Anda untuk menerapkan kemampuan untuk mendaftarkan pengguna baru, 213 00:12:09,000 --> 00:12:12,000 kemampuan untuk membeli saham, untuk menjual saham, 214 00:12:12,000 --> 00:12:14,000 untuk benar-benar mencari harga saham saat ini. 215 00:12:14,000 --> 00:12:17,000 >> Dan memang, ini akan menjadi seperti dunia nyata mungkin karena kita lakukan 216 00:12:17,000 --> 00:12:20,000 termasuk sedikit kode yang akan memungkinkan Anda dengan fungsi tunggal 217 00:12:20,000 --> 00:12:25,000 untuk query Yahoo Finance, yang luar biasa membuat data gratis yang tersedia 218 00:12:25,000 --> 00:12:31,000 untuk mencari harga saham berdasarkan simbol saham atau simbol ticker, 219 00:12:31,000 --> 00:12:34,000 dan Anda mendapatkan kembali harga saham saat hari. 220 00:12:34,000 --> 00:12:37,000 Data yang Anda benar-benar melihat dalam pset tertentu akan 221 00:12:37,000 --> 00:12:40,000 sekitar sebagai dunia nyata karena bisa mendapatkan sehingga Anda benar-benar interfacing 222 00:12:40,000 --> 00:12:43,000 dengan saham dunia nyata, harga dunia nyata, 223 00:12:43,000 --> 00:12:47,000 dan kita akan melihat berapa banyak uang yang Anda dapat membuat mungkin 224 00:12:47,000 --> 00:12:51,000 selama beberapa hari berikutnya bermain dengan sejumlah masalah Anda sendiri. 225 00:12:51,000 --> 00:12:55,000 >> Tapi mari kita pertama kali mengatur panggung untuk bagaimana merancang sesuatu yang tentu lebih rumit 226 00:12:55,000 --> 00:12:59,000 dibandingkan counter.php, itu lebih rumit daripada contoh IM Frosh sejauh ini, 227 00:12:59,000 --> 00:13:02,000 dan mari kita mencoba untuk memperkenalkan paradigma beberapa di sini yang memungkinkan kita 228 00:13:02,000 --> 00:13:06,000 baik untuk pset 7 dan mungkin untuk proyek akhir Anda jika Anda melakukan sesuatu yang didasarkan web 229 00:13:06,000 --> 00:13:11,000 untuk menjaga kode Anda terorganisir dengan baik, untuk menjaga diri waras, 230 00:13:11,000 --> 00:13:15,000 dan untuk mengambil langkah menuju berkolaborasi, baik dalam tugas akhir ini CS50 231 00:13:15,000 --> 00:13:18,000 atau di luar jika Anda terus memprogram sesuatu di masa depan. 232 00:13:18,000 --> 00:13:21,000 Ada paradigma desain umum 233 00:13:21,000 --> 00:13:24,000 dalam ilmu komputer dan dalam pengembangan perangkat lunak lebih umum 234 00:13:24,000 --> 00:13:27,000 dikenal sebagai MVC, model view controller, 235 00:13:27,000 --> 00:13:30,000 dan ini adalah singkatan konyol yang menggambarkan ide yang sangat bagus, 236 00:13:30,000 --> 00:13:34,000 yang merupakan pemisahan dari aspek yang berbeda dari sebuah program, 237 00:13:34,000 --> 00:13:39,000 khusus menjaga memisahkan logika atau logika bisnis dari sebuah situs web 238 00:13:39,000 --> 00:13:42,000 sehingga apa pun yang melibatkan hal-hal seperti 239 00:13:42,000 --> 00:13:45,000 memanggil fungsi dan query database dan sejenisnya 240 00:13:45,000 --> 00:13:48,000 terjadi bukan antara HTML Anda 241 00:13:48,000 --> 00:13:51,000 melainkan dalam file terpisah, dan memang, ada satu file ini 242 00:13:51,000 --> 00:13:54,000 biasanya yang sudah Anda panggil controller 243 00:13:54,000 --> 00:13:56,000 itu benar-benar otak di balik operasi, dan kita akan melihat contoh 244 00:13:56,000 --> 00:13:58,000 ini hanya dalam beberapa saat. 245 00:13:58,000 --> 00:14:01,000 >> Ada sebuah model yang pemrograman kode 246 00:14:01,000 --> 00:14:05,000 yang melakukan berbicara dengan database Anda, yang berbicara ke Yahoo Finance dan sejenisnya, 247 00:14:05,000 --> 00:14:08,000 dan kemudian ada V di MVC, pandangan, 248 00:14:08,000 --> 00:14:11,000 semua barang-barang yang berkaitan dengan estetika, file yang sebenarnya mengandung 249 00:14:11,000 --> 00:14:14,000 HTML, CSS mungkin Anda dan sejenisnya. 250 00:14:14,000 --> 00:14:17,000 Idenya di sini, karena gambar ini menunjukkan, adalah bahwa controller 251 00:14:17,000 --> 00:14:21,000 adalah file, seperti yang kita akan segera melihat dan seperti yang Anda terutama akan melihat di pset 7, 252 00:14:21,000 --> 00:14:24,000 bahwa dunia berbicara kepada melalui browser web mereka. 253 00:14:24,000 --> 00:14:27,000 Itu adalah file yang akan dikunjungi di internet publik, 254 00:14:27,000 --> 00:14:30,000 tapi controller berbicara kepada berpotensi model, 255 00:14:30,000 --> 00:14:34,000 yang merupakan salah satu atau lebih file lain yang berisi kode yang berhubungan dengan data, 256 00:14:34,000 --> 00:14:37,000 kode yang terkait dengan database dan sejenisnya, dan kemudian berbicara kepada 257 00:14:37,000 --> 00:14:40,000 controller satu atau lebih file lain yang dikenal sebagai pandangan, 258 00:14:40,000 --> 00:14:43,000 yang merupakan estetika dari suatu halaman web, template macam, 259 00:14:43,000 --> 00:14:47,000 yang mungkin mengambil beberapa data sebagai masukan, tapi pada akhir hari 260 00:14:47,000 --> 00:14:50,000 satu-satunya logika dalam pandangan harus render data, 261 00:14:50,000 --> 00:14:53,000 iterasi loop dan benar-benar menyemburkan beberapa 262 00:14:53,000 --> 00:14:56,000 HTML berbasis rendition daripadanya atau bahkan sesuatu seperti PDF. 263 00:14:56,000 --> 00:14:59,000 >> Apa yang baik tentang MVC adalah bahwa Anda dapat memiliki pandangan yang berbeda 264 00:14:59,000 --> 00:15:02,000 berdasarkan jenis perangkat, berdasarkan pada jenis format file yang Anda benar-benar 265 00:15:02,000 --> 00:15:04,000 ingin menunjukkan kepada pengguna. 266 00:15:04,000 --> 00:15:10,000 Mari kita lihat beberapa contoh semakin lebih kompleks dan dirancang dengan baik beberapa 267 00:15:10,000 --> 00:15:13,000 dengan memulai pertama dengan versi 0 di sini. 268 00:15:13,000 --> 00:15:16,000 Biarkan aku pergi ke depan dan membuka di direktori MVC kami hari ini 269 00:15:16,000 --> 00:15:21,000 file bernama index.php dalam direktori 0. 270 00:15:21,000 --> 00:15:26,000 Perhatikan ini adalah situs yang sederhana dan sangat underwhelming Super 271 00:15:26,000 --> 00:15:29,000 itu semacam versi 0 dari homepage untuk CS50, 272 00:15:29,000 --> 00:15:32,000 dan perhatikan bagaimana kita memiliki link ke Kuliah, kami memiliki link ke Silabus, 273 00:15:32,000 --> 00:15:35,000 dan jika saya mengikuti link ke pemberitahuan Kuliah bahwa URL 274 00:15:35,000 --> 00:15:39,000 bagian atas akan berubah menjadi lectures.php. 275 00:15:39,000 --> 00:15:44,000 Jika saya kemudian ikuti link ke Minggu 1 pemberitahuan bahwa perubahan URL untuk week1.php. 276 00:15:44,000 --> 00:15:46,000 Sepertinya ada struktur hirarkis yang cukup sederhana di sini. 277 00:15:46,000 --> 00:15:49,000 >> Mari kita lihat di bawah kap di bagaimana hal ini ditata, 278 00:15:49,000 --> 00:15:53,000 dan memang, jika saya melihat index.php itu cukup sederhana. 279 00:15:53,000 --> 00:15:57,000 Pada kenyataannya, meskipun saya disebut ini file PHP ada kode pemrograman yang sebenarnya. 280 00:15:57,000 --> 00:16:01,000 Ada komentar yang saya tulis di sini di PHP hanya jadi pengguna tidak berakhir melihatnya. 281 00:16:01,000 --> 00:16:05,000 Tentu saja, seperti sebelumnya, apa yang ada di antara tag PHP 282 00:16:05,000 --> 00:16:08,000 akan ditafsirkan, bahkan jika itu komentar, dan untuk menginterpretasikan komentar 283 00:16:08,000 --> 00:16:11,000 berarti hanya untuk membuangnya di akhir hari dan tidak benar-benar 284 00:16:11,000 --> 00:16:15,000 mengirimkannya ke browser, jadi semuanya di sini hanya estetika. 285 00:16:15,000 --> 00:16:20,000 Jika saya membuka lectures.php sama ini juga hanya sebuah file kode keras. 286 00:16:20,000 --> 00:16:23,000 Hal ini terjadi untuk disebut sesuatu. Php, 287 00:16:23,000 --> 00:16:27,000 tapi itu benar-benar hanya. html, dan week1.php, week2.php 288 00:16:27,000 --> 00:16:31,000 sama hanya markup, sehingga ada sekelompok kekurangan dari desain ini. 289 00:16:31,000 --> 00:16:33,000 Satu, itu sejumlah besar copy / paste. 290 00:16:33,000 --> 00:16:37,000 Meskipun satu-satunya hal yang berubah di antara file-file ini adalah daftar unordered, 291 00:16:37,000 --> 00:16:41,000 tag li, saya tetap memiliki tipe doc, HTML, kepala, 292 00:16:41,000 --> 00:16:44,000 judul, tubuh dekat, dekat HTML dan lebih 293 00:16:44,000 --> 00:16:47,000 dalam setiap file tunggal, yang berarti bahwa jika saya pernah ingin merestrukturisasi 294 00:16:47,000 --> 00:16:50,000 ini halaman web atau restylize itu aku harus masuk dan mengubah 295 00:16:50,000 --> 00:16:54,000 semua file secara manual atau dengan beberapa besar mencari dan mengganti. 296 00:16:54,000 --> 00:17:01,000 >> Mari kita mengambil langkah menuju desain lebih cerdas, lebih lama berpikir dalam versi 1 di sini 297 00:17:01,000 --> 00:17:04,000 dimana sesuai saya baca bahwa kami telah disertakan sehingga Anda dapat bermain bersama dengan 298 00:17:04,000 --> 00:17:07,000 ini lebih santai dalam waktu rumah yang kita miliki di sini 299 00:17:07,000 --> 00:17:10,000 ringkasan dari file dalam versi 1 dari situs ini, 300 00:17:10,000 --> 00:17:13,000 dan tampaknya bahwa saya telah mengambil itu atas diri untuk faktor luar 301 00:17:13,000 --> 00:17:17,000 beberapa kode umum, header.php dan footer.php. 302 00:17:17,000 --> 00:17:20,000 Nah, mari kita lihat apa yang ada di dalam pertama mereka. 303 00:17:20,000 --> 00:17:23,000 Header.php tampak akrab, 304 00:17:23,000 --> 00:17:26,000 tapi perhatikan mana itu bisa dipotong? 305 00:17:26,000 --> 00:17:30,000 Tepat setelah baris 19, jadi itu semua yang umum 306 00:17:30,000 --> 00:17:33,000 dari file index.php, lectures.php, 307 00:17:33,000 --> 00:17:36,000 week1 dan week2.php dari contoh sebelumnya. 308 00:17:36,000 --> 00:17:40,000 Apa yang saya lakukan adalah copy dan segala cut yang umum untuk semua file, 309 00:17:40,000 --> 00:17:44,000 memasukkannya ke dalam sebuah file header yang terpisah, dan juga di footer.php 310 00:17:44,000 --> 00:17:48,000 aku menerapkan prinsip yang sama dimana hanya menarik garis 311 00:17:48,000 --> 00:17:52,000 di footer.php adalah tubuh ini, dua dekat dan HTML dekat. 312 00:17:52,000 --> 00:17:55,000 >> Tapi apa ini berarti sekarang adalah bahwa dalam versi baru 313 00:17:55,000 --> 00:17:59,000 pemberitahuan index.php berapa banyak sederhana itu bisa mendapatkan. 314 00:17:59,000 --> 00:18:02,000 Memang, sedikit lebih samar mencari, sedikit kurang intuitif 315 00:18:02,000 --> 00:18:06,000 untuk mengikuti atas ke bawah, tapi Allahku, semua redundansi yang sekarang hilang. 316 00:18:06,000 --> 00:18:10,000 Kami memerlukan menggunakan fungsi PHP harfiah disebut membutuhkan sampai atas, 317 00:18:10,000 --> 00:18:15,000 yang sangat mengingatkan, ingat, dari C # include mekanisme. 318 00:18:15,000 --> 00:18:17,000 Kami memerlukan header.php di bagian atas. 319 00:18:17,000 --> 00:18:20,000 Kami memerlukan footer.php di bagian bawah, dan satu-satunya yang berbeda 320 00:18:20,000 --> 00:18:25,000 atau khusus tentang file ini adalah konten yang dimaksudkan untuk menjadi unik untuk itu. 321 00:18:25,000 --> 00:18:29,000 Jika saya kemudian masuk ke dalam, katakanlah, lectures.php, prinsip yang sama berlaku. 322 00:18:29,000 --> 00:18:32,000 Sekali lagi, beberapa komentar di bagian atas, tapi kemudian saya memerlukan header, footer membutuhkan, 323 00:18:32,000 --> 00:18:35,000 dan di antara itu hanya konten yang benar-benar berubah. 324 00:18:35,000 --> 00:18:38,000 Dan jika kita melihat ke Minggu 1 Minggu 2 dan kita akan melihat 325 00:18:38,000 --> 00:18:42,000 bahwa prinsip yang sama telah diterapkan di sana. 326 00:18:42,000 --> 00:18:44,000 Nah, kita tidak cukup dilakukan di sana. 327 00:18:44,000 --> 00:18:48,000 >> Mari kita lihat versi 2, yang memiliki struktur yang sama, 328 00:18:48,000 --> 00:18:50,000 tapi perhatikan sekarang aku sudah memperkenalkan sesuatu yang lain. 329 00:18:50,000 --> 00:18:53,000 Sejalan 10 Saya sudah diperkenalkan helpers.php, 330 00:18:53,000 --> 00:18:55,000 yang tampaknya mengandung fungsi pembantu. 331 00:18:55,000 --> 00:18:58,000 Sebuah fungsi pembantu umumnya fungsi yang relatif singkat 332 00:18:58,000 --> 00:19:01,000 bahwa Anda menulis untuk membantu Anda keluar di berbagai tempat, 333 00:19:01,000 --> 00:19:04,000 dan mari kita lihat apa yang ada dalam helpers.php. 334 00:19:04,000 --> 00:19:07,000 Dalam kasus ini, sepertinya memiliki 2 fungsi. 335 00:19:07,000 --> 00:19:10,000 Ingat dari hari lainnya dengan contoh kubus kami 336 00:19:10,000 --> 00:19:13,000 Anda dapat mendefinisikan fungsi Anda sendiri dalam PHP, dan apa yang saya lakukan sekarang adalah saya sudah 337 00:19:13,000 --> 00:19:17,000 fungsi didefinisikan disebut membuat footer dan membuat header, 338 00:19:17,000 --> 00:19:21,000 yang pertama mengambil parameter yang disebut data, 339 00:19:21,000 --> 00:19:25,000 nilai default yang adalah array kosong, seperti yang disarankan di sana, 340 00:19:25,000 --> 00:19:29,000 dan kita benar-benar bisa menulis ini bahkan lebih ringkas dalam versi terbaru dari PHP 341 00:19:29,000 --> 00:19:32,000 dengan mengatakan braket persegi terbuka, tertutup braket persegi. 342 00:19:32,000 --> 00:19:35,000 Itu berarti array kosong ukuran 0 tetapi tetap array. 343 00:19:35,000 --> 00:19:38,000 >> Fungsi Ekstrak sedikit khusus dalam 344 00:19:38,000 --> 00:19:41,000 apa yang dilakukannya adalah dibutuhkan sebagai argumen array asosiatif 345 00:19:41,000 --> 00:19:45,000 yang memiliki 0 atau lebih pasangan nilai kunci, dan jika Anda memiliki kunci foo 346 00:19:45,000 --> 00:19:48,000 dan nilai bar fungsi ekstrak 347 00:19:48,000 --> 00:19:51,000 menciptakan situasi di mana sekarang, pada baris 11, 348 00:19:51,000 --> 00:19:57,000 Anda memiliki variabel lokal bernama $ foo yang nilainya bar. 349 00:19:57,000 --> 00:19:59,000 Dan jika Anda memiliki kunci lebih dan nilai-nilai dalam array data, 350 00:19:59,000 --> 00:20:03,000 sama akan mereka diekstraksi ke dalam lingkup lokal 351 00:20:03,000 --> 00:20:06,000 atau ruang nama sehingga footer.php dan 352 00:20:06,000 --> 00:20:09,000 ide yang sama di sini, sehingga header.php 353 00:20:09,000 --> 00:20:12,000 memiliki akses ke variabel tersebut. 354 00:20:12,000 --> 00:20:15,000 Bahkan, biarkan aku membuka lagi header.php 355 00:20:15,000 --> 00:20:18,000 dan menarik perhatian sekarang apa yang tampak seperti di versi ini. 356 00:20:18,000 --> 00:20:22,000 >> Daripada hard coding CS50 sebagai judul untuk setiap halaman 357 00:20:22,000 --> 00:20:24,000 melihat dinamika yang mungkin sekarang. 358 00:20:24,000 --> 00:20:29,000 Sejalan 5 Saya bergema variabel judul, 359 00:20:29,000 --> 00:20:34,000 tapi pertama-tama saya melewati variabel judul untuk fungsi yang disebut htmlspecialchars. 360 00:20:34,000 --> 00:20:38,000 Sebuah nama bodoh untuk fungsi, selama itu, tapi itu benar-benar melakukan apa yang dikatakannya. 361 00:20:38,000 --> 00:20:41,000 Ini memastikan bahwa setiap karakter khusus 362 00:20:41,000 --> 00:20:46,000 dalam string yang telah disahkan pada benar lolos HTML. 363 00:20:46,000 --> 00:20:49,000 Ini sebenarnya adalah cara untuk menghindari sesuatu yang disebut serangan scripting lintas situs 364 00:20:49,000 --> 00:20:52,000 dimana seseorang bisa jahat atau sengaja 365 00:20:52,000 --> 00:20:55,000 menyuntikkan HTML mereka sendiri ke situs web Anda 366 00:20:55,000 --> 00:20:59,000 dengan menyisipkan ke dalam beberapa bentuk, misalnya, 367 00:20:59,000 --> 00:21:02,000 sesuatu yang Anda tidak cukup mengharapkan, terutama kode JavaScript, 368 00:21:02,000 --> 00:21:05,000 seperti yang akan kita bicarakan dalam seminggu atau waktu dua itu. 369 00:21:05,000 --> 00:21:08,000 >> Ini header.php sekarang, itu pandangan 370 00:21:08,000 --> 00:21:12,000 dalam arti bahwa hal itu memungkinkan Anda untuk melihat estetis isi dari beberapa kumpulan data. 371 00:21:12,000 --> 00:21:14,000 Tapi yang lebih spesifik, itu template. 372 00:21:14,000 --> 00:21:19,000 Ini adalah semacam cetak biru sekarang dari apa yang kita inginkan header dari setiap halaman untuk terlihat seperti, 373 00:21:19,000 --> 00:21:23,000 tapi ada beberapa dinamika dalam bahwa kita ingin judul untuk secara dinamis dimasukkan 374 00:21:23,000 --> 00:21:26,000 berdasarkan variabel judul 375 00:21:26,000 --> 00:21:30,000 yang diekstrak ketika kita dipanggil, lagi, 376 00:21:30,000 --> 00:21:33,000 fungsi render header. 377 00:21:33,000 --> 00:21:36,000 Sekarang, jika kita melihat footer render, sebenarnya ada tidak banyak menggunakan itu sekarang 378 00:21:36,000 --> 00:21:40,000 karena di footer.php ada dinamika apapun. 379 00:21:40,000 --> 00:21:43,000 Mungkin ada, tetapi pada saat itu adalah daftar kode keras dari 2 tag, 380 00:21:43,000 --> 00:21:46,000 tapi ide yang sama berlaku, sehingga yang benar-benar menunjukkan mengapa 381 00:21:46,000 --> 00:21:49,000 Apakah kita buang waktu memiliki header render dan fungsi render footer? 382 00:21:49,000 --> 00:21:52,000 Biarkan aku pergi bukan sekarang ke versi 3, 383 00:21:52,000 --> 00:21:56,000 dan dalam versi 3 di pembantu saya memutuskan untuk menyederhanakan bahkan lebih. 384 00:21:56,000 --> 00:21:58,000 >> Biarkan aku memiliki satu fungsi render. 385 00:21:58,000 --> 00:22:02,000 Biarkan aku memilikinya mengambil argumen lain, kali ini disebut template, 386 00:22:02,000 --> 00:22:05,000 yang dimaksudkan untuk menjadi nama template, 387 00:22:05,000 --> 00:22:11,000 dan kemudian saya akan menggabungkan terlalu berani php untuk nilai yang variabel., 388 00:22:11,000 --> 00:22:17,000 dan kemudian jika ada foo.php, bar.php atau header.php dan footer.php, 389 00:22:17,000 --> 00:22:20,000 maka aku akan pergi ke depan dan ekstrak data variabel 390 00:22:20,000 --> 00:22:23,000 dan kemudian memerlukan jalan itu. 391 00:22:23,000 --> 00:22:29,000 Dengan kata lain, untuk menggunakan ini sekarang, jika saya membuka index.php 392 00:22:29,000 --> 00:22:32,000 perhatikan bahwa saya tidak menyebut sundulan render lagi. 393 00:22:32,000 --> 00:22:36,000 Aku hanya memanggil render, tapi saya lulus dalam nilai dikutip dari header 394 00:22:36,000 --> 00:22:39,000 untuk membuat jelas template yang saya benar-benar ingin memuat. 395 00:22:39,000 --> 00:22:41,000 >> Kemudian di sini melihat apa yang saya lakukan. 396 00:22:41,000 --> 00:22:44,000 Saya lewat di dinamis kunci dari judul, 397 00:22:44,000 --> 00:22:47,000 nilai CS50, dan ini juga, seperti yang kita lihat sebelumnya, 398 00:22:47,000 --> 00:22:51,000 bisa dibuat lebih ringkas dalam versi terbaru dari PHP 399 00:22:51,000 --> 00:22:54,000 di mana saya bisa menggantikan fungsi array dengan tanda kurung siku, 400 00:22:54,000 --> 00:22:57,000 yang saya usulkan adalah lebih mudah dibaca dan tentu 401 00:22:57,000 --> 00:22:59,000 sedikit lebih mudah untuk mengetik. 402 00:22:59,000 --> 00:23:02,000 Dan tentu saja, dengan panggilan render footer di bagian bawah, 403 00:23:02,000 --> 00:23:05,000 kita tidak repot-repot lewat di suatu argumen kedua sama sekali, tidak ada array asosiatif, 404 00:23:05,000 --> 00:23:07,000 karena tidak ada di dalam dinamis footer itu. 405 00:23:07,000 --> 00:23:10,000 Ini hanya beberapa tag dekat untuk HTML. 406 00:23:10,000 --> 00:23:14,000 Baik, kita mengambil langkah-langkah menuju benar-benar membersihkan semuanya di sini, 407 00:23:14,000 --> 00:23:17,000 tapi biarkan aku membuka 2 contoh akhir. 408 00:23:17,000 --> 00:23:21,000 Ini satu, nomor 4, perhatikan bahwa saya telah membuat keputusan sadar sekarang 409 00:23:21,000 --> 00:23:26,000 untuk memperbaiki contoh sebelumnya dengan menggunakan hirarki akhirnya beberapa file saya. 410 00:23:26,000 --> 00:23:29,000 >> Perhatikan bahwa dalam ringkasan ini, dalam hal ini saya membaca, saya sudah diperkenalkan 411 00:23:29,000 --> 00:23:32,000 yang termasuk direktori dan direktori template 412 00:23:32,000 --> 00:23:35,000 Isi yang akan menjadi hal-hal yang saya ingin memasukkan 413 00:23:35,000 --> 00:23:38,000 dan template yang saya ingin membuat masing-masing. 414 00:23:38,000 --> 00:23:42,000 Ini benar-benar saya menjadi anal dan mencoba untuk menjaga hal-hal rapi, 415 00:23:42,000 --> 00:23:45,000 menyimpan file-file terkait bersama-sama, tetapi hasil akhirnya 416 00:23:45,000 --> 00:23:48,000 adalah bahwa kita sekarang memiliki setup yang sedikit lebih rapi, tapi kita harus ingat sekarang 417 00:23:48,000 --> 00:23:51,000 dalam, misalnya, index.php 418 00:23:51,000 --> 00:23:55,000 ketika kita membutuhkan berkas helpers.php 419 00:23:55,000 --> 00:24:01,000 kita harus sekarang memerlukan via includes / helpers.php 420 00:24:01,000 --> 00:24:06,000 bukan hanya mengatakan helpers.php karena sekarang itu sebenarnya dalam sub direktori. 421 00:24:06,000 --> 00:24:09,000 Sekarang, sebagai samping, Anda akan melihat dalam contoh dan beberapa orang lain 422 00:24:09,000 --> 00:24:11,000 fungsi seperti membutuhkan, membutuhkan sekali. 423 00:24:11,000 --> 00:24:15,000 Ada sebenarnya fungsi itu sendiri disebut meliputi, dan mereka semua memiliki perilaku yang sedikit berbeda. 424 00:24:15,000 --> 00:24:18,000 Di sini saya katakan membutuhkan sekali untuk membuat super jelas bahwa saya hanya ingin orang-orang 425 00:24:18,000 --> 00:24:20,000 pembantu termasuk dalam proyek saya sekali. 426 00:24:20,000 --> 00:24:24,000 Tapi kalau aku berhati-hati dan jika aku benar-benar berpikir melalui logika saya benar 427 00:24:24,000 --> 00:24:27,000 itu harus cukup juga hanya untuk mengatakan membutuhkan sampai atas 428 00:24:27,000 --> 00:24:31,000 asalkan saya sendiri tidak sengaja mengharuskan file yang sama di tempat lain. 429 00:24:31,000 --> 00:24:34,000 Pada kenyataannya, ini adalah cara yang lebih efisien dalam melakukan sesuatu kemudian menggunakan 430 00:24:34,000 --> 00:24:38,000 membutuhkan sekali, jadi saya akan memotongnya menjadi hanya membutuhkan. 431 00:24:38,000 --> 00:24:40,000 >> Mari kita mengambil satu langkah lebih jauh. 432 00:24:40,000 --> 00:24:46,000 Contoh terakhir ini sekarang, versi 5, memiliki hirarki folder bahkan lebih bersih. 433 00:24:46,000 --> 00:24:50,000 Perhatikan apa yang saya lakukan di sini per saya baca dalam versi final 434 00:24:50,000 --> 00:24:54,000 sekarang saya memiliki direktori HTML saya, yang saya punya selama ini, 435 00:24:54,000 --> 00:24:58,000 namun dalam sana sekarang hanya index.php, lectures.php, 436 00:24:58,000 --> 00:25:01,000 week1.php dan week2.php. 437 00:25:01,000 --> 00:25:05,000 Termasuk direktori sekarang tinggal bersama dari direktori HTML, 438 00:25:05,000 --> 00:25:08,000 sehingga pada tingkat yang sama seperti saudara kandung, sehingga untuk berbicara. 439 00:25:08,000 --> 00:25:10,000 Begitu pula folder template. 440 00:25:10,000 --> 00:25:14,000 Takeaway kunci di sini adalah saya telah memperkenalkan struktur sedikit lebih, 441 00:25:14,000 --> 00:25:17,000 tetapi fitur utama sekarang adalah bahwa hanya file 442 00:25:17,000 --> 00:25:21,000 yang perlu web diakses, publik dialamatkan 443 00:25:21,000 --> 00:25:25,000 oleh URL di internet publik dalam direktori HTML saya. 444 00:25:25,000 --> 00:25:28,000 >> Sementara itu, file lainnya, helpers.php, footer.php, 445 00:25:28,000 --> 00:25:32,000 header.php, yang bisa dibilang mungkin lebih sensitif, 446 00:25:32,000 --> 00:25:35,000 mungkin pembantu sebenarnya memiliki nama pengguna dan password beberapa atau beberapa intelektual 447 00:25:35,000 --> 00:25:39,000 milik saya, fungsi aku benar-benar tidak ingin dunia untuk melihat, bahkan jika tidak sengaja. 448 00:25:39,000 --> 00:25:45,000 Ini praktik yang baik untuk menjaga keluar dari direktori HTML publik 449 00:25:45,000 --> 00:25:48,000 setiap file yang tidak perlu diri menjadi publik. 450 00:25:48,000 --> 00:25:51,000 Semua harus Anda lakukan dalam hal ini ketika melihat, misalnya, 451 00:25:51,000 --> 00:25:55,000 direktori HTML file index.php, 452 00:25:55,000 --> 00:25:58,000 perhatikan kita hanya harus sedikit lebih berhati-hati saat membutuhkan 453 00:25:58,000 --> 00:26:00,000 atau memerlukan sekali file ini. 454 00:26:00,000 --> 00:26:03,000 Saya harus terlebih dahulu lakukan .. untuk pergi ke direktori induk, 455 00:26:03,000 --> 00:26:06,000 kemudian melakukan / includes / helpers.php 456 00:26:06,000 --> 00:26:12,000 menyelam kembali ke dalam untuk mendapatkan file yang saya peduli. 457 00:26:12,000 --> 00:26:16,000 >> Setiap pertanyaan kemudian pada MVC 458 00:26:16,000 --> 00:26:20,000 atau inkarnasi ini relatif sederhana daripadanya? 459 00:26:20,000 --> 00:26:23,000 Dan biarkan aku membuat jelas bahwa kita fokus cukup sedikit di 460 00:26:23,000 --> 00:26:27,000 V di sini, pandangan dan anjak keluar dari template ini. 461 00:26:27,000 --> 00:26:30,000 Kami sudah tidak benar-benar dibedakan M dari C dulu. 462 00:26:30,000 --> 00:26:33,000 Bahkan, ada benar-benar ada di sini M, dan bahkan C kami, 463 00:26:33,000 --> 00:26:36,000 controller, tidak benar-benar melakukan semua yang banyak, tetapi Anda akan mendapatkan lebih banyak 464 00:26:36,000 --> 00:26:39,000 akrab dengan kedua dari mereka 2 surat dari MVC, 465 00:26:39,000 --> 00:26:43,000 atau lebih tepatnya, Anda akan mendapatkan jauh lebih akrab dengan C 466 00:26:43,000 --> 00:26:49,000 di MVC untuk mengatur, masalah 7 jadi ada lebih dari itu di cakrawala. 467 00:26:49,000 --> 00:26:51,000 Pertanyaan? 468 00:26:51,000 --> 00:26:53,000 Sebenarnya tidak ada seorang pun di sini. 469 00:26:53,000 --> 00:26:57,000 >> Oke, mari kita sekarang beralih ke topik kedua dan terakhir untuk hari ini. 470 00:26:57,000 --> 00:27:00,000 Itu adalah pengenalan database. 471 00:27:00,000 --> 00:27:03,000 Sampai titik ini kita sudah memiliki beberapa cara untuk menyimpan data. 472 00:27:03,000 --> 00:27:05,000 Kami telah menggunakan variabel. 473 00:27:05,000 --> 00:27:08,000 Kembali dalam file C kami, I / O diskusi kami mulai menggunakan file teks 474 00:27:08,000 --> 00:27:11,000 dan menggunakan file seperti fprintf, dan kemudian kita bahkan mulai 475 00:27:11,000 --> 00:27:14,000 berbicara tentang CSV file sedikit, nilai dipisahkan koma, 476 00:27:14,000 --> 00:27:17,000 sehingga semua ini memungkinkan kita untuk memiliki data yang tersimpan 477 00:27:17,000 --> 00:27:19,000 baik non-terus-menerus atau persisten. 478 00:27:19,000 --> 00:27:23,000 Tetapi bahkan CSVs tidak benar-benar kondusif untuk mencari 479 00:27:23,000 --> 00:27:25,000 dan memasukkan dan menghapus. 480 00:27:25,000 --> 00:27:28,000 Ini benar-benar hanya sebuah file teks bodoh dipisahkan oleh koma 481 00:27:28,000 --> 00:27:30,000 baris demi baris demi baris demi baris, jadi jika Anda ingin 482 00:27:30,000 --> 00:27:32,000 mencari file yang terbaik yang dapat Anda lakukan benar-benar adalah pencarian linear. 483 00:27:32,000 --> 00:27:34,000 Anda harus mulai di bagian atas file, membaca semuanya dalam, 484 00:27:34,000 --> 00:27:36,000 dan mencari beberapa nilai bunga. 485 00:27:36,000 --> 00:27:39,000 Jika Anda ingin memasukkan ke dalamnya Anda harus melakukan hal yang sama, 486 00:27:39,000 --> 00:27:41,000 iterasi di atasnya dan memasukkan di tempat tertentu, 487 00:27:41,000 --> 00:27:45,000 dan pada kenyataannya, Anda harus melakukan semua logika mencari sendiri. 488 00:27:45,000 --> 00:27:49,000 >> Anda tidak bisa melakukan pola pintar pencocokan pada file CSV kecuali Anda sendiri menulis kode. 489 00:27:49,000 --> 00:27:51,000 Anda tidak dapat melakukan filtrasi dari file CSV 490 00:27:51,000 --> 00:27:53,000 kecuali Anda sendiri menulis kode. 491 00:27:53,000 --> 00:27:56,000 Bukankah lebih baik jika orang lain dimasukkan ke dalam semua upaya 492 00:27:56,000 --> 00:27:59,000 untuk benar-benar membuat pencarian mudah dan penyisipan mudah 493 00:27:59,000 --> 00:28:01,000 dan penghapusan dan memperbarui dan sebagainya? 494 00:28:01,000 --> 00:28:04,000 Itulah yang database adalah. 495 00:28:04,000 --> 00:28:07,000 SQL, bahasa query terstruktur, belum bahasa lain 496 00:28:07,000 --> 00:28:10,000 bahwa kita memperkenalkan di sini hari ini, tapi ini juga cukup diakses, 497 00:28:10,000 --> 00:28:13,000 dan apa yang kita benar-benar akan lakukan hanya memetik dari itu beberapa yang paling menonjol 498 00:28:13,000 --> 00:28:16,000 karakteristik sehingga untuk pset 7, dan jika Anda melakukan sesuatu yang didasarkan web, 499 00:28:16,000 --> 00:28:19,000 tugas akhir Anda, Anda memiliki kemampuan untuk mengekspresikan diri 500 00:28:19,000 --> 00:28:22,000 dalam hal permintaan data. 501 00:28:22,000 --> 00:28:25,000 Anda memiliki kemampuan untuk menyimpan sedikit atau banyak data 502 00:28:25,000 --> 00:28:28,000 dalam cara yang jauh lebih terstruktur yang akan pada akhir hari 503 00:28:28,000 --> 00:28:32,000 membuat hidup Anda lebih mudah karena dengan SQL Anda dapat mengekspresikan diri 504 00:28:32,000 --> 00:28:35,000 lebih tepatnya, jauh lebih metodis untuk 505 00:28:35,000 --> 00:28:40,000 mendapatkan kembali beberapa subset dari data dari corpus yang lebih besar dari data. 506 00:28:40,000 --> 00:28:45,000 >> Anda dapat memikirkan database, dalam hal ini, sebuah database SQL, benar-benar seperti Excel 507 00:28:45,000 --> 00:28:48,000 Bilangan atau di mana itu spreadsheet, 508 00:28:48,000 --> 00:28:50,000 atau mungkin beberapa spreadsheet, dan spreadsheet, tentu saja, 509 00:28:50,000 --> 00:28:53,000 memiliki baris dan kolom, dan itu karena 510 00:28:53,000 --> 00:28:56,000 Database SQL relasional, relasional dalam arti 511 00:28:56,000 --> 00:28:59,000 bahwa mereka menyimpan data dalam hal ini tabel, 512 00:28:59,000 --> 00:29:01,000 baris dan kolom. 513 00:29:01,000 --> 00:29:03,000 Mereka berkinerja tinggi daripada sesuatu seperti spreadsheet, 514 00:29:03,000 --> 00:29:05,000 dan spreadsheet dimaksudkan untuk digunakan oleh manusia. 515 00:29:05,000 --> 00:29:08,000 Sebuah database dimaksudkan untuk digunakan oleh programmer 516 00:29:08,000 --> 00:29:12,000 menulis kode menentangnya, sehingga inkarnasi database 517 00:29:12,000 --> 00:29:14,000 akan menjadi salah satu baris perintah. 518 00:29:14,000 --> 00:29:18,000 >> Salah satu database relasional yang paling populer di luar sana, sekali lagi, MySQL, 519 00:29:18,000 --> 00:29:22,000 yang luar biasa bebas, berkinerja sangat tinggi, dan ini adalah apa yang 520 00:29:22,000 --> 00:29:24,000 Facebook digunakan sangat awal dan sampai batas tertentu masih hari ini 521 00:29:24,000 --> 00:29:27,000 untuk menyimpan banyak data, dan kita akan lihat sebentar lagi 522 00:29:27,000 --> 00:29:30,000 yang menggunakan perintah yang relatif sederhana 523 00:29:30,000 --> 00:29:33,000 kita dapat memilih data, data insert, update data, 524 00:29:33,000 --> 00:29:37,000 menghapus data dan sejenisnya, tapi untungnya, ada antarmuka yang lebih user-friendly 525 00:29:37,000 --> 00:29:39,000 dari sekedar mengetik di prompt hitam dan putih di sini. 526 00:29:39,000 --> 00:29:43,000 Kami akan gunakan untuk pset 7 dan seterusnya perangkat gratis yang disebut phpMyAdmin. 527 00:29:43,000 --> 00:29:45,000 Nama ini kebetulan. 528 00:29:45,000 --> 00:29:47,000 Alat ini terjadi untuk diterapkan di PHP, 529 00:29:47,000 --> 00:29:49,000 tapi itu tidak relevan fundamental. 530 00:29:49,000 --> 00:29:53,000 Apa yang berguna tentang phpMyAdmin adalah bahwa itu adalah utilitas berbasis web. 531 00:29:53,000 --> 00:29:55,000 Kami telah pra-instal dalam alat untuk Anda, 532 00:29:55,000 --> 00:29:58,000 dan dengan itu Anda dapat membuat tabel dalam database, 533 00:29:58,000 --> 00:30:01,000 Anda dapat memasukkan data, menghapus data, dan umumnya melihat 534 00:30:01,000 --> 00:30:04,000 Anda data dalam lingkungan yang cukup user-friendly. 535 00:30:04,000 --> 00:30:07,000 Pengguna Anda tidak akan menggunakan phpMyAdmin. 536 00:30:07,000 --> 00:30:09,000 >> Ini benar-benar hanya alat administratif atau pengembang 537 00:30:09,000 --> 00:30:12,000 yang dapat digunakan untuk melihat dan melihat-data Anda dan mencari tahu bagaimana struktur itu, 538 00:30:12,000 --> 00:30:15,000 seperti Anda sendiri mungkin menggunakan Excel atau Numbers, 539 00:30:15,000 --> 00:30:19,000 tapi itu akan menjadi cara yang bagus untuk memvisualisasikan apa yang terjadi di bawah tenda 540 00:30:19,000 --> 00:30:22,000 sehingga Anda dapat fokus pada pemecahan masalah yang menarik dan tidak begitu banyak 541 00:30:22,000 --> 00:30:25,000 pada perintah misterius. 542 00:30:25,000 --> 00:30:28,000 Mari kita lihat contoh data yang akan disimpan tabularly 543 00:30:28,000 --> 00:30:30,000 dalam database relasional. 544 00:30:30,000 --> 00:30:32,000 Berikut ini salah satu contohnya. 545 00:30:32,000 --> 00:30:35,000 Sekarang, sayangnya, phpMyAdmin keliru di sisi dari cara melempar terlalu banyak kata 546 00:30:35,000 --> 00:30:38,000 dan grafis pada Anda, tetapi jika Anda mengasah dalam hanya pada 547 00:30:38,000 --> 00:30:42,000 ID kolom, kolom nama pengguna, dan kolom hash, 548 00:30:42,000 --> 00:30:45,000 ini efektif spreadsheet, tetapi hal itu terjadi menjadi potongan 549 00:30:45,000 --> 00:30:49,000 dari meja di dalam alat 550 00:30:49,000 --> 00:30:53,000 menggunakan file yang kami menyediakan Anda dengan sejumlah masalah dalam 7. 551 00:30:53,000 --> 00:30:57,000 >> Secara khusus, kami memberikan Anda sebuah file yang mewakili 552 00:30:57,000 --> 00:31:01,000 pengguna meja, sehingga spreadsheet yang berisi pengguna dengan 3 kolom, 553 00:31:01,000 --> 00:31:05,000 salah satunya adalah ID unik mulai dari 1 dan menjadi bertambah setelahnya. 554 00:31:05,000 --> 00:31:08,000 Kolom kedua adalah nama pengguna, dan anda yang melakukan Hacker, 555 00:31:08,000 --> 00:31:12,000 edisi Hacker untuk pset 2, mungkin mengenali beberapa dari nama-nama pengguna setidaknya. 556 00:31:12,000 --> 00:31:16,000 Di sisi kanan adalah password, tapi mereka tidak password literal. 557 00:31:16,000 --> 00:31:19,000 Mereka hash daripadanya, jadi ternyata 558 00:31:19,000 --> 00:31:22,000 yang menyimpan password dalam database adalah ide yang sangat buruk. 559 00:31:22,000 --> 00:31:25,000 Kalian semua mungkin membaca di beberapa titik beberapa website 560 00:31:25,000 --> 00:31:28,000 atau database beberapa perusahaan terganggu, dan kemudian Anda harus 561 00:31:28,000 --> 00:31:31,000 mengubah sandi Anda, Anda perlu untuk mendapatkan pengembalian uang pada hal-hal 562 00:31:31,000 --> 00:31:34,000 karena beberapa orang jahat justru masuk ke akun Anda sebagai hasilnya. 563 00:31:34,000 --> 00:31:38,000 >> Menyimpan password dalam teks yang jelas, tidak terenkripsi dalam database 564 00:31:38,000 --> 00:31:41,000 benar-benar bodoh, namun itu sangat lucu 565 00:31:41,000 --> 00:31:44,000 kemudian membaca tentang beberapa perusahaan yang sangat terkenal 566 00:31:44,000 --> 00:31:47,000 kadang-kadang dalam pers database yang terganggu, 567 00:31:47,000 --> 00:31:50,000 dan bagian yang tidak lucu, tapi fakta bahwa database mengandung terenkripsi 568 00:31:50,000 --> 00:31:53,000 password konyol karena secara harfiah dengan satu baris kode 569 00:31:53,000 --> 00:31:57,000 Anda dapat melindungi terhadap bahwa ancaman tertentu, dan itulah yang kami lakukan di sini. 570 00:31:57,000 --> 00:32:00,000 Bahkan untuk palsu sedikit versi kita CS50 Keuangan 571 00:32:00,000 --> 00:32:03,000 kami mengenkripsi password hanya untuk mengukur baik, dan fakta bahwa 572 00:32:03,000 --> 00:32:07,000 semua password mulai dengan $ 1 $ hanyalah konvensi. 573 00:32:07,000 --> 00:32:10,000 Itu hanya berarti mereka dienkripsi atau benar-benar hashed, 574 00:32:10,000 --> 00:32:13,000 yang seperti fungsi enkripsi satu arah 575 00:32:13,000 --> 00:32:17,000 dimana Anda tidak dapat membalikkan efek dengan sesuatu yang disebut MD5. 576 00:32:17,000 --> 00:32:21,000 >> Fakta bahwa 50 adalah setelah itu berarti bahwa nilai garam 577 00:32:21,000 --> 00:32:24,000 dari 50 digunakan untuk hashing semua password kecuali satu. 578 00:32:24,000 --> 00:32:27,000 Tambang, tentu saja, seperti yang Anda lihat di sana, HA, 579 00:32:27,000 --> 00:32:30,000 adalah menggunakan garam yang berbeda, sehingga Anda yang mendapat sedikit tersandung 580 00:32:30,000 --> 00:32:33,000 mungkin di Hacker 2, yang mungkin telah hasil dari memiliki kami digunakan 581 00:32:33,000 --> 00:32:36,000 hash yang berbeda dari yang lain karena password saya sebenarnya sama 582 00:32:36,000 --> 00:32:38,000 karena beberapa pengguna lainnya di sana. 583 00:32:38,000 --> 00:32:41,000 Bahkan, jika Anda sudah menunggu berminggu-minggu untuk mengetahui 584 00:32:41,000 --> 00:32:44,000 apa yang ada di sini adalah password password yang Anda ditantang 585 00:32:44,000 --> 00:32:48,000 retak dalam edisi Hacker set, jadi tidak ada masalah 2 terlalu rumit. 586 00:32:48,000 --> 00:32:50,000 Bahkan, ini Malan adalah sama dengan jharvard, 587 00:32:50,000 --> 00:32:54,000 tetapi jika kita kembali mereka tampak berbeda. 588 00:32:54,000 --> 00:32:58,000 >> Fokus pada jharvard di merah karena mereka asin berbeda. 589 00:32:58,000 --> 00:33:01,000 Algoritma ini terganggu dengan cara yang 590 00:33:01,000 --> 00:33:05,000 hash value, nilai dienkripsi terlihat sedikit berbeda 591 00:33:05,000 --> 00:33:08,000 karena input yang sedikit berbeda, tetapi password bawah tenda 592 00:33:08,000 --> 00:33:10,000 masih akhirnya merah. 593 00:33:10,000 --> 00:33:12,000 Sekarang, siapa yang peduli tentang hal ini? 594 00:33:12,000 --> 00:33:15,000 Nah, kami menyediakan Anda dengan pengguna sampel, sampel nama pengguna 595 00:33:15,000 --> 00:33:18,000 dan hash password mereka sehingga Anda benar-benar memiliki beberapa 596 00:33:18,000 --> 00:33:23,000 pelanggan untuk CS50 Keuangan saat pertama kali turun tanah dengan kode Anda. 597 00:33:23,000 --> 00:33:27,000 Anda harus menerapkan lebih tabel dalam MySQL, dalam database. 598 00:33:27,000 --> 00:33:30,000 Anda harus membuat spreadsheet lebih, efektif, tapi kami memutuskan untuk memberikan yang satu ini 599 00:33:30,000 --> 00:33:33,000 untuk Anda mulai, dan Anda akan melihat bahwa masalah spesifikasi set 600 00:33:33,000 --> 00:33:37,000 menuntun Anda melalui proses mengimpor tabel ini 601 00:33:37,000 --> 00:33:39,000 dan juga menjelaskan apa beberapa karakteristik, 602 00:33:39,000 --> 00:33:41,000 dan Anda juga akan melihat bahwa kami menyediakan Anda dengan kode 603 00:33:41,000 --> 00:33:44,000 untuk menangani hashing atau enkripsi password tersebut, 604 00:33:44,000 --> 00:33:49,000 sehingga Anda tidak perlu khawatir terlalu banyak tentang apa MD5 atau sejenisnya sebenarnya semua tentang. 605 00:33:49,000 --> 00:33:53,000 >> Jadi, SQL, bahasa query terstruktur. 606 00:33:53,000 --> 00:33:56,000 Hal ini, cukup sederhana, bahasa yang kita akan mulai menggunakan di pset 7 607 00:33:56,000 --> 00:34:01,000 dan mungkin di luar untuk meminta data dari database beberapa. 608 00:34:01,000 --> 00:34:06,000 Data tersebut, sekali lagi, disimpan tabularly dalam tabel relasional, kolom, dan baris, 609 00:34:06,000 --> 00:34:09,000 tetapi menggunakan beberapa sintaks yang relatif sederhana seperti menghapus, 610 00:34:09,000 --> 00:34:12,000 insert, update dan pilih bisa kita melakukan hal itu. 611 00:34:12,000 --> 00:34:15,000 Kita dapat menghapus dari database, insert, 612 00:34:15,000 --> 00:34:19,000 update data, serta pilih, yaitu, mengambil data dari database. 613 00:34:19,000 --> 00:34:21,000 Bagaimana kita melakukan hal ini? 614 00:34:21,000 --> 00:34:23,000 Biarkan aku pergi ke depan ke dalam alat. 615 00:34:23,000 --> 00:34:28,000 Biarkan saya berhenti http://localhost, 616 00:34:28,000 --> 00:34:30,000 yang, sekali lagi, adalah alat lokal itu sendiri. 617 00:34:30,000 --> 00:34:32,000 Itulah julukan default. 618 00:34:32,000 --> 00:34:35,000 Dan biarkan aku pergi ke / phpmyadmin. 619 00:34:35,000 --> 00:34:39,000 Hal ini terjadi menjadi URL khusus yang alat telah dikonfigurasikan untuk memahami 620 00:34:39,000 --> 00:34:42,000 yang segera meminta saya untuk nama pengguna dan kata sandi. 621 00:34:42,000 --> 00:34:46,000 >> Seperti biasa, aku akan mengetik jharvard dan merah, 622 00:34:46,000 --> 00:34:48,000 tapi menyadari bahwa adalah account administrator pada komputer. 623 00:34:48,000 --> 00:34:53,000 Ini hanya kebetulan bahwa ada juga jharvard terdaftar untuk CS50 Keuangan. 624 00:34:53,000 --> 00:34:56,000 Jharvard, merah, enter memberi saya user interface yang kita lihat 625 00:34:56,000 --> 00:34:59,000 sekilas beberapa saat yang lalu, dan itu sedikit berlebihan pada awalnya, 626 00:34:59,000 --> 00:35:02,000 tapi yakinlah, Anda tidak akan pernah harus klik sebagian besar link di alat ini. 627 00:35:02,000 --> 00:35:05,000 Anda akan berakhir dengan menggunakan subset kecil yang super membantu, 628 00:35:05,000 --> 00:35:08,000 yang pertama adalah database di sini. 629 00:35:08,000 --> 00:35:11,000 Jika saya pergi ke database, perhatikan bahwa aku diminta untuk membuat database. 630 00:35:11,000 --> 00:35:14,000 Ini seperti membuat file Excel yang baru, efektif. 631 00:35:14,000 --> 00:35:18,000 Aku akan pergi ke depan dan memanggil kuliah ini, dan aku hanya akan mengabaikan lapangan ada, pemeriksaan. 632 00:35:18,000 --> 00:35:20,000 Itu ada hubungannya dengan representasi data di dalamnya, 633 00:35:20,000 --> 00:35:24,000 dan aku akan membuat klik, dan sekarang perhatikan saat aku melepaskan menciptakan 634 00:35:24,000 --> 00:35:27,000 di sisi kiri di mana ia mengatakan tidak ada database 635 00:35:27,000 --> 00:35:30,000 Saya harus segera melihat database kuliah. 636 00:35:30,000 --> 00:35:32,000 >> Jika saya sekarang klik di sisi kiri, database kuliah, 637 00:35:32,000 --> 00:35:34,000 perhatikan tab saya mengubah sedikit. 638 00:35:34,000 --> 00:35:38,000 Aku punya struktur, SQL, ekspor, impor, dan beberapa hal lainnya. 639 00:35:38,000 --> 00:35:40,000 Struktur cukup banyak kosong. 640 00:35:40,000 --> 00:35:43,000 Tidak ada tabel ditemukan dalam database, seperti dikatakan di sini, 641 00:35:43,000 --> 00:35:47,000 jadi mari kita membuat tabel, dan mari kita pergi ke depan dan membuat tabel 642 00:35:47,000 --> 00:35:53,000 seperti siswa, dan berapa banyak kolom yang kita inginkan? 643 00:35:53,000 --> 00:35:55,000 Mari kita menjaga ini sederhana, dan mari kita catatan untuk setiap siswa 644 00:35:55,000 --> 00:35:58,000 nomor ID, nama, dan alamat email. 645 00:35:58,000 --> 00:36:02,000 >> Kami akan tetap sederhana seperti itu, jadi 3 kolom, pergi. 646 00:36:02,000 --> 00:36:05,000 Bentuk yang Anda lihat di sini sekarang menjadi sedikit berantakan dan luar biasa, 647 00:36:05,000 --> 00:36:08,000 tapi kita hanya perlu pergi melalui itu baris demi baris, sehingga benar-benar cepat mari kita berikan 648 00:36:08,000 --> 00:36:14,000 kolom pertama dalam database nama ID untuk identifikasi unik. 649 00:36:14,000 --> 00:36:17,000 Ini akan menjadi integer. Aku benar-benar dapat mengabaikan panjang dan nilai-nilai. 650 00:36:17,000 --> 00:36:21,000 Int akan menjadi 32 bit tidak peduli apa yang Anda ketik di sana, jadi mari kita biarkan kosong. 651 00:36:21,000 --> 00:36:24,000 Nilai default, saya bisa membuatnya nol, sebagaimana didefinisikan. 652 00:36:24,000 --> 00:36:27,000 Aku akan meninggalkan itu saja. Mari kita tidak khawatir tentang nilai-nilai default. 653 00:36:27,000 --> 00:36:29,000 Mari kita gulir ke sini untuk itu, atribut yang tepat. 654 00:36:29,000 --> 00:36:31,000 Ini menarik. 655 00:36:31,000 --> 00:36:33,000 Mari kita pergi ke depan dan agak sewenang-wenang mengatakan bahwa ID harus unsigned. 656 00:36:33,000 --> 00:36:35,000 Jangan buang-buang angka negatif. 657 00:36:35,000 --> 00:36:37,000 >> Ayo 0-4000000000, memberi atau mengambil, 658 00:36:37,000 --> 00:36:40,000 dan kemudian mari kita tidak menyentuh salah satu bidang dulu di sana, 659 00:36:40,000 --> 00:36:43,000 tapi kemudian membiarkan saya ketik nama di sini, 660 00:36:43,000 --> 00:36:46,000 dan kemudian yang lain adalah email, sehingga hasil tangkapan email 661 00:36:46,000 --> 00:36:50,000 dan nama, jelas tidak bilangan bulat, jadi mari kita mengubah ini untuk bidang yang berbeda. 662 00:36:50,000 --> 00:36:53,000 Ternyata varchar, char panjang variabel, 663 00:36:53,000 --> 00:36:56,000 seperti string dalam database SQL 664 00:36:56,000 --> 00:36:59,000 tapi panjang variabel, dan Anda benar-benar harus mengatakan itu di muka 665 00:36:59,000 --> 00:37:02,000 panjang maksimum string, jadi aku akan agak sewenang-wenang 666 00:37:02,000 --> 00:37:05,000 menurut jenis konvensi 255 karakter. 667 00:37:05,000 --> 00:37:08,000 Aku benar-benar bisa mengatakan 32. Saya bisa mengatakan 1.000. 668 00:37:08,000 --> 00:37:11,000 Anda jenis kebutuhan untuk memutuskan untuk diri sendiri berdasarkan demografi Anda apa yang 669 00:37:11,000 --> 00:37:14,000 siswa terpanjang nama dan pergi dengan nomor atau sedikit lebih besar, 670 00:37:14,000 --> 00:37:17,000 tapi apa yang bagus tentang varchar itu tidak akan menyia-nyiakan 671 00:37:17,000 --> 00:37:19,000 255 byte pada nama setiap siswa. 672 00:37:19,000 --> 00:37:23,000 Jika itu DAVID itu tidak akan menggunakan 255 byte secara keseluruhan, 673 00:37:23,000 --> 00:37:26,000 tapi itu merupakan batas atas, jadi saya akan pergi dengan 255 hanya dengan konvensi, 674 00:37:26,000 --> 00:37:30,000 tapi kita bisa berdebat bahwa ada beberapa nilai yang lebih rendah, dan untuk alamat email 675 00:37:30,000 --> 00:37:34,000 hanya untuk konsisten 255, tapi sekali lagi, kita bisa memiliki perdebatan yang sama. 676 00:37:34,000 --> 00:37:36,000 Tapi aku akan melakukan satu hal lain di sini di sisi kanan. 677 00:37:36,000 --> 00:37:40,000 >> Apa kuat tentang database adalah bahwa hal itu dapat melakukan banyak angkat berat 678 00:37:40,000 --> 00:37:42,000 atau kompleks bekerja untuk Anda. 679 00:37:42,000 --> 00:37:46,000 Secara khusus, saya benar-benar tidak peduli apa yang nomor ID murid-Ku. 680 00:37:46,000 --> 00:37:49,000 Ini hanya dimaksudkan untuk menjadi pengenal unik dalam database 681 00:37:49,000 --> 00:37:52,000 jadi saya memiliki representasi 32-bit singkat dari siswa yang 682 00:37:52,000 --> 00:37:55,000 sehingga saya memiliki beberapa cara unik mengidentifikasi mereka 683 00:37:55,000 --> 00:37:58,000 jangan ada menjadi 2 Davids, misalnya, dalam satu kelas. 684 00:37:58,000 --> 00:38:01,000 Bahkan, aku akan memeriksa kotak AI, kenaikan otomatis, 685 00:38:01,000 --> 00:38:04,000 sehingga database, MySQL, keluar angka 686 00:38:04,000 --> 00:38:08,000 apa ID setiap siswa baru dimasukkan ini akan menjadi. 687 00:38:08,000 --> 00:38:11,000 Aku bahkan tidak harus peduli tentang hal itu dalam kode saya, 688 00:38:11,000 --> 00:38:13,000 dan aku juga akan memilih sesuatu di bawah menu indeks. 689 00:38:13,000 --> 00:38:17,000 Indeks drop-down di sini telah primer, unik, 690 00:38:17,000 --> 00:38:19,000 indeks dan teks lengkap. 691 00:38:19,000 --> 00:38:21,000 Anda mungkin bisa menebak apa yang beberapa hal-hal ini, 692 00:38:21,000 --> 00:38:24,000 tapi ternyata dalam database relasional 693 00:38:24,000 --> 00:38:28,000 Anda programmer atau administrator database bisa preemptively 694 00:38:28,000 --> 00:38:32,000 memberikan petunjuk ke database seperti apa bidang 695 00:38:32,000 --> 00:38:34,000 dalam sebuah tabel yang sedikit khusus. 696 00:38:34,000 --> 00:38:37,000 >> Misalnya, dalam hal ini saya akan mengatakan bahwa ID 697 00:38:37,000 --> 00:38:42,000 akan menjadi indeks utama, atau dikenal sebagai primary key. 698 00:38:42,000 --> 00:38:44,000 Apa ini berarti menurut definisi adalah ID yang selanjutnya 699 00:38:44,000 --> 00:38:48,000 unik akan mengidentifikasi siswa dalam tabel ini. 700 00:38:48,000 --> 00:38:53,000 Tidak ada siswa akan memiliki ID yang sama karena aku memaksakan ini kendala atau indeks ini. 701 00:38:53,000 --> 00:38:55,000 Selain itu, apa ini akan lakukan untuk saya adalah itu akan memberitahu 702 00:38:55,000 --> 00:38:58,000 MySQL bahwa ID adalah khusus. 703 00:38:58,000 --> 00:39:03,000 Saya peduli terutama tentang ID, jadi lanjutkan dan melakukan sihir mewah data struktur itu, 704 00:39:03,000 --> 00:39:05,000 membangun beberapa jenis pohon. 705 00:39:05,000 --> 00:39:08,000 Biasanya sesuatu yang disebut B-pohon, yang kita tidak melihat pada minggu lalu, 706 00:39:08,000 --> 00:39:11,000 tapi itu struktur data lain seperti semangat yang sama dengan pohon biner 707 00:39:11,000 --> 00:39:15,000 dan mencoba bahwa kita melihat, tapi itu akan mengatakan 708 00:39:15,000 --> 00:39:18,000 ke database bidang ini sangat penting bahwa saya mungkin 709 00:39:18,000 --> 00:39:22,000 ingin dapat mencari di atasnya, pergi ke depan dan membangun mewah beberapa 710 00:39:22,000 --> 00:39:25,000 struktur data dalam memori untuk mempercepat pencarian, sehingga idealnya 711 00:39:25,000 --> 00:39:28,000 mereka waktu yang konstan atau setidaknya dekat dengan yang mungkin 712 00:39:28,000 --> 00:39:32,000 sehingga tidak berpindah ke pencarian linear, yang tidak akan 713 00:39:32,000 --> 00:39:34,000 paling tinggi melakukan pendekatan. 714 00:39:34,000 --> 00:39:37,000 Sebaliknya, alamat email bisa menjadi kunci utama. 715 00:39:37,000 --> 00:39:41,000 >> Secara teori, alamat email setiap orang adalah unik, kecuali Anda berbagi akun tertentu, 716 00:39:41,000 --> 00:39:45,000 tapi itu umumnya tidak baik untuk menggunakan sesuatu seperti string 717 00:39:45,000 --> 00:39:49,000 sebagai primary key karena jika tujuannya dalam hidup adalah untuk secara unik mengidentifikasi 718 00:39:49,000 --> 00:39:55,000 baris dalam tabel Anda tidak ada alasan untuk menggunakan 255 byte maksimal 719 00:39:55,000 --> 00:39:58,000 untuk secara unik mengidentifikasi seseorang jika Anda bisa lolos dengan hanya 4 byte 720 00:39:58,000 --> 00:40:00,000 atau int 32-bit. 721 00:40:00,000 --> 00:40:03,000 Secara umum, primary key harus pendek dan ringkas 722 00:40:03,000 --> 00:40:07,000 dan idealnya sesuatu seperti integer atau int besar, yang kebetulan 64 bit. 723 00:40:07,000 --> 00:40:11,000 Namun alamat email harus unik, dan salah satu fitur dari database terlalu 724 00:40:11,000 --> 00:40:14,000 adalah untuk menegakkan keunikan bagi saya. 725 00:40:14,000 --> 00:40:18,000 Dengan memilih unik di sini di samping email, meskipun email itu sendiri 726 00:40:18,000 --> 00:40:21,000 adalah menggulir dari layar, aku mengatakan ke database 727 00:40:21,000 --> 00:40:23,000 tidak percaya padaku. 728 00:40:23,000 --> 00:40:26,000 Jangan biarkan aku masukkan ke dalam database 729 00:40:26,000 --> 00:40:29,000 alamat yang sama email dua kali, bahkan jika aku idiot dan saya tidak 730 00:40:29,000 --> 00:40:32,000 sangat baik dengan ifs saya dan ifs lain dan kode PHP yang sebenarnya 731 00:40:32,000 --> 00:40:37,000 dan aku sengaja membiarkan pengguna mendaftar dengan alamat email yang ada 732 00:40:37,000 --> 00:40:40,000 database adalah satu lagi tingkat pertahanan untuk ketepatan 733 00:40:40,000 --> 00:40:44,000 untuk memastikan bahwa alamat email duplikat tidak berakhir di meja. 734 00:40:44,000 --> 00:40:49,000 >> Sekarang, sebaliknya, untuk nama Anda mungkin tidak ingin membuat yang unik 735 00:40:49,000 --> 00:40:51,000 karena kemudian tidak pernah bisa 2 Davids atau 2 Mike Smiths, misalnya, 736 00:40:51,000 --> 00:40:55,000 dalam database Anda, sehingga satu kami hanya akan pergi sendirian. 737 00:40:55,000 --> 00:40:58,000 Aku akan pergi ke depan dan klik save di kanan bawah, 738 00:40:58,000 --> 00:41:02,000 dan semuanya terlihat baik, tetapi perhatikan di sini 739 00:41:02,000 --> 00:41:04,000 ini adalah bagian yang untuk saat ini kita tidak akan menghabiskan terlalu banyak waktu pada 740 00:41:04,000 --> 00:41:07,000 karena sintaks yang sedikit rumit, dan kita tidak perlu membuat tabel 741 00:41:07,000 --> 00:41:10,000 semua yang sering, tetapi SQL sendiri adalah bahasa, 742 00:41:10,000 --> 00:41:13,000 sintaks yang benar di sini bahwa saya telah disorot. 743 00:41:13,000 --> 00:41:18,000 Apa yang benar-benar phpMyAdmin itu menciptakan GUI berbasis web untuk Anda 744 00:41:18,000 --> 00:41:23,000 dengan mana Anda dapat menghemat waktu dan tidak perlu secara manual mengetikkan 745 00:41:23,000 --> 00:41:26,000 query SQL yang cukup panjang seperti itu. 746 00:41:26,000 --> 00:41:29,000 >> Dengan kata lain, jika Anda ingin secara manual membuat tabel ini, 747 00:41:29,000 --> 00:41:32,000 baik pada saat itu phpMyAdmin cepat atau bahkan dalam warna hitam dan putih 748 00:41:32,000 --> 00:41:35,000 dengan menggunakan tab lainnya, ini tab SQL di mana Anda dapat mengetikkan pertanyaan SQL 749 00:41:35,000 --> 00:41:38,000 Anda inginkan, terus terang, ini akan diambil saya satu menit 750 00:41:38,000 --> 00:41:41,000 untuk benar-benar mengingat sintaks seluruh, dan bahkan maka saya mungkin akan 751 00:41:41,000 --> 00:41:45,000 membuat beberapa kesalahan ketik, sehingga alat ini berguna untuk hal-hal seperti itu, dan itu juga instruktif. 752 00:41:45,000 --> 00:41:49,000 Anda dapat mulai menyimpulkan apa sintaks 753 00:41:49,000 --> 00:41:52,000 hanya dengan warna yang bagus pengkodean phpMyAdmin yang menambahkan 754 00:41:52,000 --> 00:41:54,000 untuk kenyamanan visual kita. 755 00:41:54,000 --> 00:41:56,000 Tapi sekarang mari kita lakukan ini sebagai gantinya. 756 00:41:56,000 --> 00:42:00,000 Biarkan aku pergi ke tab insert di atas, dan biarkan aku pergi ke depan dan masukkan misalnya 757 00:42:00,000 --> 00:42:04,000 ID dari katakanlah-Sebenarnya saya tidak peduli. 758 00:42:04,000 --> 00:42:07,000 Ini akan kenaikan otomatis. Aku akan membiarkan kesepakatan database dengan ini. 759 00:42:07,000 --> 00:42:11,000 Tapi aku akan Daud, dan email saya harus malan@harvard.edu. 760 00:42:11,000 --> 00:42:16,000 >> Mari kita pergi ke depan di sini dan dimasukkan ke dalam Mike Smith sebagai satu lagi. 761 00:42:16,000 --> 00:42:18,000 Aku akan memberi diriku nama terakhir juga, 762 00:42:18,000 --> 00:42:22,000 dan kita akan minta dia menjadi smith@example.com, 763 00:42:22,000 --> 00:42:24,000 dan kemudian mana saya pergi selanjutnya? 764 00:42:24,000 --> 00:42:27,000 Nah, sepertinya pergi adalah tombol untuk klik, dan voila. 765 00:42:27,000 --> 00:42:30,000 Perhatikan pada 2 baris atas dimasukkan. 766 00:42:30,000 --> 00:42:32,000 Ini adalah query SQL yang sebenarnya. 767 00:42:32,000 --> 00:42:36,000 Itulah alat phpMyAdmin dieksekusi untuk saya, 768 00:42:36,000 --> 00:42:40,000 tetapi hasil akhirnya, pemberitahuan, jika saya sekarang pergi ke tab browsing, 769 00:42:40,000 --> 00:42:43,000 adalah untuk melihat 2 baris dalam tabel ini, sangat mengingatkan estetis 770 00:42:43,000 --> 00:42:46,000 dari meja kita lihat sebelumnya bagi pengguna kami dari pset 7, 771 00:42:46,000 --> 00:42:51,000 salah satunya adalah David Malan, salah satunya sekarang adalah Mike Smith. 772 00:42:51,000 --> 00:42:54,000 Tapi hanya harus jelas, saya tidak perlu menggunakan phpMyAdmin, 773 00:42:54,000 --> 00:42:56,000 dan memang, Anda akan segera dapat menulis kode untuk pset 7 774 00:42:56,000 --> 00:43:01,000 yang mengotomatisasi proses penambahan baris, menghapus baris, memperbarui baris dan sejenisnya, 775 00:43:01,000 --> 00:43:04,000 jadi biar bukannya pergi ke tab SQL di sini 776 00:43:04,000 --> 00:43:14,000 dan ketik * pilih dari mana siswa 777 00:43:14,000 --> 00:43:18,000 email = "malan@harvard.edu." 778 00:43:18,000 --> 00:43:21,000 >> Dengan kata lain misalkan sekarang Anda memiliki 779 00:43:21,000 --> 00:43:26,000 beberapa bentuk HTML, dan jenis pengguna dalam alamat email mereka, antara bidang lainnya, 780 00:43:26,000 --> 00:43:29,000 dan tujuannya sekarang adalah di PHP pada kode back end 781 00:43:29,000 --> 00:43:31,000 untuk benar-benar mencari detail lain yang pengguna. 782 00:43:31,000 --> 00:43:34,000 Apa nama lengkap Anda? Berapa nomor ID Anda? 783 00:43:34,000 --> 00:43:37,000 Anda bisa menulis query SQL seperti ini, pilih * dari siswa 784 00:43:37,000 --> 00:43:40,000 mana email = "malan@harvard.edu." 785 00:43:40,000 --> 00:43:46,000 Dan jika saya kemudian klik pergi, perhatikan bahwa saya harus, dan memang aku, kembali hanya satu baris. 786 00:43:46,000 --> 00:43:50,000 Mike dihilangkan dari hasil ini ditetapkan, sebagai koleksi baris 787 00:43:50,000 --> 00:43:53,000 umumnya disebut, karena ia tidak memiliki alamat email yang sama seperti saya. 788 00:43:53,000 --> 00:43:57,000 >> Sekarang, sekali lagi, di sini untuk pset 7 Anda akan menggunakan phpMyAdmin sebagai alat administrasi 789 00:43:57,000 --> 00:44:00,000 dan alat pedagogis untuk belajar jalan 790 00:44:00,000 --> 00:44:03,000 di seluruh dunia SQL, tapi pada akhir hari 791 00:44:03,000 --> 00:44:08,000 Anda akan menulis pertanyaan ini dalam kode PHP yang sebenarnya, 792 00:44:08,000 --> 00:44:11,000 dan begitu menantikan langkah-langkah dalam Zamyla pada khususnya 793 00:44:11,000 --> 00:44:14,000 di mana Anda akan mendapatkan tur kode distribusi untuk sejumlah masalah 794 00:44:14,000 --> 00:44:18,000 di mana kami telah memberikan Anda tidak hanya estetika untuk halaman login 795 00:44:18,000 --> 00:44:21,000 dan logo seksi bagus yang mengatakan CS50 Keuangan, tapi kami juga telah memberi Anda 796 00:44:21,000 --> 00:44:24,000 sekelompok fungsi yang akan membuat hidup Anda sedikit lebih mudah. 797 00:44:24,000 --> 00:44:27,000 Kami juga telah menulis bagian dari pset untuk Anda, 798 00:44:27,000 --> 00:44:32,000 bagian login pada khususnya, untuk memberikan rasa desain yang representatif 799 00:44:32,000 --> 00:44:36,000 yang benar-benar menggunakan controller, misalnya, index.php, 800 00:44:36,000 --> 00:44:40,000 login.php dan sejenisnya, dan kemudian Anda akan melihat pset juga memiliki direktori template 801 00:44:40,000 --> 00:44:43,000 yang memiliki semua pandangan Anda, semua estetika. 802 00:44:43,000 --> 00:44:46,000 Dan sehingga alur kerja secara keseluruhan di pset 7 akan menjadi yang 803 00:44:46,000 --> 00:44:49,000 pengguna Anda mengunjungi controller melalui URL di browser. 804 00:44:49,000 --> 00:44:53,000 Bahwa pengendali berisi kode PHP yang Anda tulis, dan di dalam kode PHP Anda 805 00:44:53,000 --> 00:44:57,000 mungkin beberapa baris SQL bersarang di antara tanda kutip ganda 806 00:44:57,000 --> 00:45:00,000 dan diteruskan ke fungsi kami menulis permintaan disebut 807 00:45:00,000 --> 00:45:03,000 yang akan membantu Anda berbicara ke database tanpa menggunakan sesuatu seperti 808 00:45:03,000 --> 00:45:05,000 alat administrasi seperti phpMyAdmin. 809 00:45:05,000 --> 00:45:08,000 >> Anda akan dapat menulis pernyataan SQL dalam kode PHP 810 00:45:08,000 --> 00:45:11,000 dan mendapatkan kembali array PHP hasil set, 811 00:45:11,000 --> 00:45:14,000 dari baris yang benar-benar cocok dengan permintaan itu. 812 00:45:14,000 --> 00:45:18,000 Dan sama akan Anda dapat melakukan menyisipkan atau menghapus 813 00:45:18,000 --> 00:45:22,000 atau update atau sejenisnya, sintaks yang cukup mirip, 814 00:45:22,000 --> 00:45:25,000 dan Anda akan melihat dari beberapa referensi online, dari kode distribusi 815 00:45:25,000 --> 00:45:29,000 dan dari pset pak sendiri persis bagaimana untuk pergi tentang melakukan hal itu. 816 00:45:29,000 --> 00:45:33,000 Sadarilah pada akhirnya kita benar-benar hanya menggaruk permukaan SQL 817 00:45:33,000 --> 00:45:36,000 dan MySQL, tapi kekuatan itu benar-benar adalah bahwa hal itu akan membebaskan Anda 818 00:45:36,000 --> 00:45:40,000 untuk fokus pada masalah yang Anda ingin memecahkan, kasus penggunaan Anda ingin menerapkan 819 00:45:40,000 --> 00:45:43,000 tanpa harus khawatir cukup banyak, setidaknya sejak dini, 820 00:45:43,000 --> 00:45:47,000 tentang di mana dan bagaimana untuk menyimpan dan mencari database Anda, 821 00:45:47,000 --> 00:45:50,000 dan ini secara harfiah di mana Facebook sendiri punya yang mulai 822 00:45:50,000 --> 00:45:53,000 menggunakan MySQL dan kemudian menggunakan lebih server MySQL dan kemudian lebih MySQL server 823 00:45:53,000 --> 00:45:57,000 tak lama sampai mereka kemudian harus benar-benar mulai berpikir keras tentang bagaimana 824 00:45:57,000 --> 00:46:00,000 menyimpan data, bagaimana untuk menyimpan hal-hal bahkan lebih efisien, 825 00:46:00,000 --> 00:46:04,000 jadi meskipun kami akan mengambil untuk diberikan fakta bahwa indeks dan kendala yang unik 826 00:46:04,000 --> 00:46:08,000 dan sebagainya hanya bekerja ada percakapan yang sangat menarik 827 00:46:08,000 --> 00:46:12,000 bahwa ini semua dapat akhirnya menyebabkan, sehingga menyadari bahwa kita hanya menggaruk permukaan 828 00:46:12,000 --> 00:46:17,000 dari apa yang akhirnya bisa untuk Anda atau proyek Anda menjadi sangat sedikit data yang besar. 829 00:46:17,000 --> 00:46:22,000 >> Dengan mengatakan bahwa, mari kita berakhir di sini, dan kami akan melihat Anda minggu depan. 830 00:46:28,000 --> 00:46:30,000 [CS50.TV]