1 00:00:00,000 --> 00:00:01,940 >> [MUSIK BERMAIN] 2 00:00:01,940 --> 00:00:11,130 3 00:00:11,130 --> 00:00:14,620 >> DAVID MALAN: Ini adalah CS 50, dan ini adalah permulaan minggu sembilan. 4 00:00:14,620 --> 00:00:18,240 Dan apa yang kita fikir kita akan lakukan hari ini bukan hanya menutup bab pada minggu lepas 5 00:00:18,240 --> 00:00:22,670 material yang kami fokus pada pelayan sisi pemrograman web dengan PHP dan SQL, 6 00:00:22,670 --> 00:00:23,549 beberapa hal pangkalan data. 7 00:00:23,549 --> 00:00:25,590 Kami akan bercakap tentang sedikit hari ini keselamatan dan kemudian 8 00:00:25,590 --> 00:00:29,590 peralihan kepada pengaturcaraan sisi klien bahasa yang dikenal sebagai JavaScript. 9 00:00:29,590 --> 00:00:31,330 Tetapi pertama, beberapa penebusan. 10 00:00:31,330 --> 00:00:35,030 >> Anda mungkin ingat bahawa pada Hari Rabu, aku berangkat 11 00:00:35,030 --> 00:00:37,550 menulis sebuah laman web yang mengambil dalam input pengguna 12 00:00:37,550 --> 00:00:41,120 oleh HTML sebuah bentuk yang kemudian disimpan bahawa nama-nama input pengguna, telefon 13 00:00:41,120 --> 00:00:43,124 angka, dan telefon bimbit operator dalam pangkalan data. 14 00:00:43,124 --> 00:00:45,540 Dan kemudian saya memiliki perintah yang sedikit naskah baris ditulis dalam PHP 15 00:00:45,540 --> 00:00:47,956 yang sepatutnya untuk beralih lebih baris dalam pangkalan data 16 00:00:47,956 --> 00:00:49,400 dan menghantar mesej teks. 17 00:00:49,400 --> 00:00:53,870 Walaupun beberapa, beberapa percubaan, kami tidak mendapat kerja yang pada akhir. 18 00:00:53,870 --> 00:00:57,820 >> Jadi aku menghabiskan minggu ini seluruh bekerja pada kode yang untuk mendapatkan kita melewati titik 19 00:00:57,820 --> 00:01:01,220 di mana kita tinggalkan, di mana semua Saya mendapat pada akhir Rabu 20 00:01:01,220 --> 00:01:05,500 adalah mesej teks ini daripada Margo saat aku berjuang, 21 00:01:05,500 --> 00:01:09,940 diikuti dengan mesej teks dari yang lain rakan sekelas, Anda telah mendapat Daud ini. 22 00:01:09,940 --> 00:01:14,030 Diikuti dengan yang satu ini, hebat menggalakkan. 23 00:01:14,030 --> 00:01:15,840 Terus, sangat membesarkan hati. 24 00:01:15,840 --> 00:01:20,960 Saya hampir mendapatkannya sehingga then-- dan itulah nota kami berakhir pada hari Rabu. 25 00:01:20,960 --> 00:01:25,850 Dan kemudian benar-benar mungkin kegemaran saya, seketika kemudian, datang. 26 00:01:25,850 --> 00:01:27,000 Damn Live Stream. 27 00:01:27,000 --> 00:01:31,080 >> Jadi hari ini, kita memperbaiki ini dengan cepat melihat apa yang saya lakukan sejak. 28 00:01:31,080 --> 00:01:35,440 Jadi semua kod ini boleh didapati online dari minggu lepas, minggu lapan, 29 00:01:35,440 --> 00:01:36,300 kod sumber. 30 00:01:36,300 --> 00:01:39,425 Dan anda akan melihat bahawa saya lalui, dan saya benar-benar membersihkan hal-hal sedikit. 31 00:01:39,425 --> 00:01:42,080 Saya memperkenalkan pasangan lain ciri-ciri pangkalan data SQL. 32 00:01:42,080 --> 00:01:45,300 Sebagai contoh, daripada hanya membuat pembawa var char 33 00:01:45,300 --> 00:01:47,310 kerana saya fikir saya melakukan dengan cepat minggu lepas. 34 00:01:47,310 --> 00:01:49,820 Saya bukan ditakrifkan sebagai apa yang dipanggil enum an. 35 00:01:49,820 --> 00:01:53,310 >> Dan sebahagian daripada anda mungkin telah melihat ini seperti kami menjelajahi C. Enum sebenarnya 36 00:01:53,310 --> 00:01:56,820 satu ciri C dimana anda boleh menyebutkan sejumlah besar pemalar 37 00:01:56,820 --> 00:01:59,640 dan menetapkan nilai-nilai automatik, seperti satu, dua, tiga, empat 38 00:01:59,640 --> 00:02:01,330 tanpa perlu nombor kod sulit. 39 00:02:01,330 --> 00:02:04,780 Jadi SQL menyokong yang sama, di mana jika Anda memiliki bidang pangkalan data yang anda hanya 40 00:02:04,780 --> 00:02:09,389 ingin mengambil salah satu yang terbatas nilai-nilai, anda dapat menentukan ia 41 00:02:09,389 --> 00:02:13,120 seperti yang saya lakukan di sana selama empat operator telefon bimbit AS popular. 42 00:02:13,120 --> 00:02:13,819 >> Jadi saya melakukan itu. 43 00:02:13,819 --> 00:02:16,610 Dan saya membuat beberapa perubahan seperti baik, yang paling penting di antaranya 44 00:02:16,610 --> 00:02:20,090 adalah untuk mendapatkan e-mel bekerja kerana ingat, bahawa program ini bergantung kepada yang 45 00:02:20,090 --> 00:02:23,470 umumnya dikenali sebagai e-mel kepada SMS gateway, yang hanya 46 00:02:23,470 --> 00:02:27,670 cara yang mewah untuk mengatakan bahawa Verizon, dan AT & T, dan orang-orang lain menyokong server, 47 00:02:27,670 --> 00:02:30,740 dimana jika ia menerima e-mel, ia bertukar kepada SMS 48 00:02:30,740 --> 00:02:33,290 dan menghantar teks mesej ke telefon seseorang. 49 00:02:33,290 --> 00:02:37,010 Jadi, jika saya melakukan ini dengan betul, di sini adalah suatu bentuk baru dan lebih baik 50 00:02:37,010 --> 00:02:39,259 yang akan bercakap dengan baru dan lebih baik kod, yang 51 00:02:39,259 --> 00:02:40,300 Anda boleh bermain dengan online. 52 00:02:40,300 --> 00:02:44,140 Dan ia diharapkan akan membuat saya bip telefon hanya dalam beberapa saat. 53 00:02:44,140 --> 00:02:47,240 >> Jadi pertama, saya akan menaip nama saya. 54 00:02:47,240 --> 00:02:51,400 Kedua, saya tidak akan untuk melakukan ini kali ini. 55 00:02:51,400 --> 00:02:53,920 Saya akan lakukan Periksa Elemen. 56 00:02:53,920 --> 00:02:56,710 Dan ini adalah hanya perkara yang sedikit jadi saya tidak 57 00:02:56,710 --> 00:02:59,250 membuat jam pasca produksi bekerja seperti yang saya lakukan masa lalu. 58 00:02:59,250 --> 00:03:02,300 Sekarang ada nombor telefon saya. 59 00:03:02,300 --> 00:03:03,560 >> Saya akan memilih Verizon. 60 00:03:03,560 --> 00:03:10,260 Dan di sini, mari kita menghidupkan mikrofon ini di sini dan bertujuan demikian pada telefon saya di sini. 61 00:03:10,260 --> 00:03:13,130 Saya akan klik Daftar, yang harus diharapkan 62 00:03:13,130 --> 00:03:14,530 memasukkannya ke dalam pangkalan data. 63 00:03:14,530 --> 00:03:16,780 Sekarang saya akan pergi ke program baris perintah, yang 64 00:03:16,780 --> 00:03:20,825 recall dipanggil slash dot teks, dan berdoa. 65 00:03:20,825 --> 00:03:24,092 66 00:03:24,092 --> 00:03:26,527 Di sini kita pergi. 67 00:03:26,527 --> 00:03:27,501 >> [Bantingan PHONE] 68 00:03:27,501 --> 00:03:28,962 >> [Tepuk Tangan] 69 00:03:28,962 --> 00:03:31,815 70 00:03:31,815 --> 00:03:34,940 DAVID MALAN: Jadi lebih seronok daripada this-- itu menyenangkan, sudah tentu, jika saya masuk ke dalam. 71 00:03:34,940 --> 00:03:38,004 Tetapi itu lebih menyenangkan, saya fikir, jika kita dibuat salah satu detik filem 72 00:03:38,004 --> 00:03:40,420 di mana seperti sesuatu yang benar-benar buruk yang telah berlaku di dunia, 73 00:03:40,420 --> 00:03:42,860 dan seperti semua NSA rakyat telefon bimbit mulai berbunyi 74 00:03:42,860 --> 00:03:44,860 dengan mesej teks mengingatkan mereka kepada hakikat ini. 75 00:03:44,860 --> 00:03:47,026 Jadi saya fikir kita akan cuba untuk mencipta yang sama di sini, 76 00:03:47,026 --> 00:03:49,610 di mana tidak menggunakan pangkalan data, Saya bukan di muka 77 00:03:49,610 --> 00:03:51,490 menulis sebuah program yang kelihatan seperti ini. 78 00:03:51,490 --> 00:03:53,660 >> Ini adalah sebuah index.php-- dan saya meletakkan kod ini dalam talian 79 00:03:53,660 --> 00:03:56,710 seperti baik yang nampaknya hanya membuat form.php, 80 00:03:56,710 --> 00:04:00,990 menggunakan MVC gaya paradigma yang kita bercakap mengenai dengan lebih terperinci dalam set masalah 81 00:04:00,990 --> 00:04:01,650 tujuh. 82 00:04:01,650 --> 00:04:02,910 Bentuk yang sangat sederhana. 83 00:04:02,910 --> 00:04:06,634 Ia akan akur kepada file bernama here.php melalui pos. 84 00:04:06,634 --> 00:04:09,300 Dan ia nampaknya akan meminta untuk nama, dan nombor telefon, 85 00:04:09,300 --> 00:04:11,400 dan kemudian melalui apa yang dipanggil Pilih menu, itu 86 00:04:11,400 --> 00:04:14,250 akan memberikan sekurang-kurangnya empat operator telefon bimbit AS popular, 87 00:04:14,250 --> 00:04:17,470 dan kemudian membolehkan anda untuk secara efektif mengambil kehadiran dengan klik di sini. 88 00:04:17,470 --> 00:04:20,471 >> Dan di sini pula, akan meminjam beberapa kode dari masa lalu. 89 00:04:20,471 --> 00:04:22,553 Dan jika anda hanya skim ini, Anda akan melihat bahawa terdapat 90 00:04:22,553 --> 00:04:23,900 sejumlah besar pemeriksaan kesalahan. 91 00:04:23,900 --> 00:04:26,640 Tetapi kecantikan yang pada akhirnya adalah bahawa kita tidak bertulis kepada pangkalan data hari ini. 92 00:04:26,640 --> 00:04:29,130 Kami tetap sederhana dan hanya menghantar diharapkan 93 00:04:29,130 --> 00:04:32,190 mesej teks melalui fungsi saya menulis lebih dari beberapa hari yang lalu panggilan 94 00:04:32,190 --> 00:04:36,270 Teks, yang dalam Fungsi. php, yang lagi boleh didapati dalam talian. 95 00:04:36,270 --> 00:04:38,210 >> Jadi jika anda ingin mengambil bahagian dalam hal ini. 96 00:04:38,210 --> 00:04:40,190 Kami tidak akan menyimpan apa-apa. 97 00:04:40,190 --> 00:04:43,809 Pergi ke URL ini di sini dalam masa nyata. 98 00:04:43,809 --> 00:04:46,850 Jangan kirimkan dulu, tetapi mari kita melihat apakah kita dapat memiliki salah satu daripada filem ini 99 00:04:46,850 --> 00:04:49,830 detik-detik di mana telefon bimbit setiap orang mulai berbunyi, mudah-mudahan hanya 100 00:04:49,830 --> 00:04:53,580 sekali tahun ini tidak seperti tahun 2011 di mana ini pergi teruk serba salah. 101 00:04:53,580 --> 00:04:58,910 Dan apabila anda pergi ke alamat tersebut, Anda akan melihat bentuk yang super mudah 102 00:04:58,910 --> 00:05:03,884 bahawa jika anda mempunyai nama, telefon bimbit nombor, dan pembawa telefon bimbit yang 103 00:05:03,884 --> 00:05:06,175 senarai perlawanan di sana, masuk ke depan dan mengisi borang. 104 00:05:06,175 --> 00:05:07,880 Tapi jangan tekan submit dulu. 105 00:05:07,880 --> 00:05:10,850 >> Borang ini akan kelihatan seperti ini. 106 00:05:10,850 --> 00:05:13,660 Pergi ke depan dan menaip nama, nombor telefon. 107 00:05:13,660 --> 00:05:17,670 OOP, ada yang berjalan di depan kurva. 108 00:05:17,670 --> 00:05:18,170 Tidak apa-apa. 109 00:05:18,170 --> 00:05:19,340 OK, semua orang mengisi borang. 110 00:05:19,340 --> 00:05:21,400 Ini harus bekerja pada telefon, juga, jika anda mahu. 111 00:05:21,400 --> 00:05:23,695 Baiklah, pada tanda anda, mendapatkan set, pergi. 112 00:05:23,695 --> 00:05:24,195 Hit sini. 113 00:05:24,195 --> 00:05:27,275 114 00:05:27,275 --> 00:05:27,775 Apa? 115 00:05:27,775 --> 00:05:31,140 116 00:05:31,140 --> 00:05:31,640 Tidak. 117 00:05:31,640 --> 00:05:34,410 118 00:05:34,410 --> 00:05:40,250 Aku bersumpah kepada Allah, saya diuji ini beberapa kali hari ini. 119 00:05:40,250 --> 00:05:41,720 Anda mendapatkannya? 120 00:05:41,720 --> 00:05:43,145 >> [Interposing SUARA] 121 00:05:43,145 --> 00:05:46,470 122 00:05:46,470 --> 00:05:49,560 >> DAVID MALAN: OK, kesalahan pengguna mungkin. 123 00:05:49,560 --> 00:05:50,550 Itu dua orang. 124 00:05:50,550 --> 00:05:53,300 Ini bekerja untuk dua daripada yang beberapa ratus, tiga, empat. 125 00:05:53,300 --> 00:05:55,940 OK, itu bagus. 126 00:05:55,940 --> 00:05:58,520 Empat daripada lima untuk Kebenaran bagaimana. 127 00:05:58,520 --> 00:05:59,810 >> Jadi apa yang baru saja terjadi? 128 00:05:59,810 --> 00:06:02,727 Jadi mungkin, tanpa melihat anda skrin, mengapa mungkin ia telah errored? 129 00:06:02,727 --> 00:06:05,518 Ia mungkin bahawa kami hanya cuba membuat terlalu banyak sambungan 130 00:06:05,518 --> 00:06:08,110 kepada pelayan mel Harvard semua pada sekali dari alamat IP yang sama. 131 00:06:08,110 --> 00:06:10,740 Saya hanya meneka kerana saya tidak mempunyai kemewahan ujian 132 00:06:10,740 --> 00:06:13,220 kod ini dengan beberapa 300 orang-orang di muka 133 00:06:13,220 --> 00:06:16,040 tetapi buat masa ini sedar bahawa yang sekurang-kurangnya harus 134 00:06:16,040 --> 00:06:18,250 mendapatkan pekerjaan yang dilakukan kali ini. 135 00:06:18,250 --> 00:06:22,880 >> Baiklah, jadi mengapa ini semua lebih erat dengan apa yang sedang berlaku? 136 00:06:22,880 --> 00:06:24,900 Yah pertama, yang cepat beberapa pengumuman. 137 00:06:24,900 --> 00:06:29,350 Jadi satu, jika anda ingin untuk menyertai Chang, dan Nick, dan lain-lain di makan tengah hari Jumaat ini, 138 00:06:29,350 --> 00:06:32,400 lakukan RSVP di URL biasa di sana. 139 00:06:32,400 --> 00:06:35,650 Jika anda berfikir untuk menumpukan perhatian dalam atau melakukan menengah di CS, 140 00:06:35,650 --> 00:06:38,941 sama ada anda seorang mahasiswa, atau mahasiswa, atau rendah atau kanan pada ketika ini 141 00:06:38,941 --> 00:06:42,490 dan masih boleh memerah dalam kursus, menyedari bahawa sekolah kejuruteraan 142 00:06:42,490 --> 00:06:45,620 adalah perhimpunan secara percuma Ben dan Ais krim dan nasihat Jerry 143 00:06:45,620 --> 00:06:48,910 Rabu tidak lama selepas kelas ini pada jam 4:00 PM CS bangunan itu 144 00:06:48,910 --> 00:06:49,771 di Maxwell Dworkin. 145 00:06:49,771 --> 00:06:51,520 Jika ini adalah terlalu cepat pada skrin, hanya pergi 146 00:06:51,520 --> 00:06:55,260 untuk cs50.harvard.edu untuk pautan ke acara Facebook 147 00:06:55,260 --> 00:06:57,140 di mana anda boleh melihat maklumat lanjut. 148 00:06:57,140 --> 00:07:01,390 >> Sementara itu, saya fikir saya akan membetulkan satu perkara lain saya melakukan kesalahan pada hari Rabu. 149 00:07:01,390 --> 00:07:04,400 Ternyata bahawa Mark ID di Facebook bukan tiga. 150 00:07:04,400 --> 00:07:05,230 Ia adalah empat. 151 00:07:05,230 --> 00:07:08,330 Rupa-rupanya, dia mempunyai lebih banyak ujian akaun daripada saya ingat. 152 00:07:08,330 --> 00:07:12,400 Tetapi apa yang ini merasa seperti peluang lakukan adalah untuk menarik sebuah URL seperti ini. 153 00:07:12,400 --> 00:07:16,680 >> Jadi ternyata bahawa Facebook mempunyai API, Antara Muka Pengaturcaraan Permohonan, 154 00:07:16,680 --> 00:07:20,070 yang merupakan mekanisme dimana anda dapat meminta data pemrograman 155 00:07:20,070 --> 00:07:24,480 di Facebook dan kembali mesin maklumat yang dibaca, tidak laman web 156 00:07:24,480 --> 00:07:28,690 tetapi teks hanya mentah, sesuatu disebut JavaScript Object Notation. 157 00:07:28,690 --> 00:07:32,150 Dan sebenarnya, jika saya mengunjungi ini URL, dan memperbesar, secara lalai, 158 00:07:32,150 --> 00:07:34,960 ini adalah Mark secara terbuka maklumat diakses. 159 00:07:34,960 --> 00:07:37,430 >> Dan butiran yang menarik di sini adalah hanya bahawa ID 160 00:07:37,430 --> 00:07:40,670 memang, nombor empat, yang saya sedar segera setelah saya melakukan ini. 161 00:07:40,670 --> 00:07:44,260 Anda boleh melakukannya sendiri jika anda tahu nama pengguna Facebook anda jika anda mempunyai satu. 162 00:07:44,260 --> 00:07:45,440 Hanya taip itu atas sana. 163 00:07:45,440 --> 00:07:46,640 Dan semua ini adalah swasta. 164 00:07:46,640 --> 00:07:48,670 Aku hanya melakukan ini walaupun dalam mod inkognito. 165 00:07:48,670 --> 00:07:49,900 Jadi, saya tidak login. 166 00:07:49,900 --> 00:07:54,440 Dan kau melihat aku yang nampaknya adalah jumlah pengguna 6454 167 00:07:54,440 --> 00:07:56,480 di Facebook, yang tidak terlalu buruk hari ini. 168 00:07:56,480 --> 00:07:59,900 Jadi bagaimanapun, anda juga akan melihat maklumat tambahan di sana. 169 00:07:59,900 --> 00:08:02,150 >> Dan aspek yang berguna dari itu adalah bahawa anda 170 00:08:02,150 --> 00:08:06,890 boleh menulis perisian anda sendiri bahawa entah bagaimana mengintegrasikan data seperti ini 171 00:08:06,890 --> 00:08:08,170 ke dalam aplikasi anda sendiri. 172 00:08:08,170 --> 00:08:10,650 Anda boleh memberi kuasa kepada pengguna untuk log masuk ke laman web anda, 173 00:08:10,650 --> 00:08:14,190 tidak menggunakan nama pengguna adat mereka sendiri dan kata laluan tapi mungkin login Facebook mereka 174 00:08:14,190 --> 00:08:16,170 dan mendapatkan maklumat bahkan tentang kawan-kawan mereka, 175 00:08:16,170 --> 00:08:18,740 jika mereka meluluskan, atau serupa. 176 00:08:18,740 --> 00:08:21,430 Jadi ambil perhatian CS50 itu juga, mempunyai beberapa API sendiri, 177 00:08:21,430 --> 00:08:24,620 satu untuk data katalog kursus, ada yang untuk pelukan menu di makan 178 00:08:24,620 --> 00:08:26,730 dewan, semua bangunan dan lokasi 179 00:08:26,730 --> 00:08:30,930 di kampus kita mempunyai API untuk juga bahawa anda dapat permintaan yang sama dan mendapat 180 00:08:30,930 --> 00:08:35,520 data tekstual belakang yang anda boleh mengintegrasikan ke dalam PHP, atau JavaScript, atau bahkan, 181 00:08:35,520 --> 00:08:38,320 walaupun kurang umum, sebuah C berasaskan projek akhir. 182 00:08:38,320 --> 00:08:41,190 >> Sesungguhnya depan untuk final projek adalah tonggak beberapa. 183 00:08:41,190 --> 00:08:42,980 Anda mendapat e-mel daripada kami pada hari yang lain. 184 00:08:42,980 --> 00:08:45,761 Sedarlah bahawa cadangan disebabkan hari Senin mendatang. 185 00:08:45,761 --> 00:08:49,010 Ia tidak semestinya mengikat, tetapi anda perlu menerima rakan-rakan pengajaran anda 186 00:08:49,010 --> 00:08:51,260 kelulusan sebelum membuat apa-apa perubahan selepas itu. 187 00:08:51,260 --> 00:08:54,280 Dan kemudian ke depan adalah beberapa peristiwa penting lain. 188 00:08:54,280 --> 00:08:56,542 >> Jadi untuk menggoda anda, juga, dengan beberapa kemungkinan, 189 00:08:56,542 --> 00:08:58,250 kami mempunyai sekumpulan ini bola lampu warna. 190 00:08:58,250 --> 00:09:01,190 Dan ada di antara kamu orang-orang sekarang memiliki beberapa ini dalam bilik asrama anda juga. 191 00:09:01,190 --> 00:09:02,920 Dan mereka juga mempunyai API. 192 00:09:02,920 --> 00:09:07,300 Jadi ingat minggu-minggu mentol binari lalu bahawa Dan Bradley dan Ansel 193 00:09:07,300 --> 00:09:08,780 Duff diciptakan untuk kita. 194 00:09:08,780 --> 00:09:12,560 Mereka menggunakan antara muka perisian untuk bola lampu ini, yang pada masa ini 195 00:09:12,560 --> 00:09:15,232 dipasang ke dalam elektrik dan kemudian melalui wireless 196 00:09:15,232 --> 00:09:17,690 disambungkan kepada satu perkara yang kecil dipanggil Jambatan ke bawah di sini 197 00:09:17,690 --> 00:09:21,280 seperti proprietari router sedikit kepada peranti ini. 198 00:09:21,280 --> 00:09:26,540 >> Tetapi ternyata jika saya tahu bagaimana untuk menghantar mesej HTTP, seperti yang kita semua sekarang lakukan, 199 00:09:26,540 --> 00:09:31,670 Saya boleh menghantar mesej seperti ini untuk mentol cahaya ini untuk menghidupkannya atau mematikan 200 00:09:31,670 --> 00:09:34,000 atau melakukan apa-apa jumlah operasi lain di atasnya. 201 00:09:34,000 --> 00:09:36,110 Perhatikan bahawa ia tidak mendapatkan, ia tidak posting. 202 00:09:36,110 --> 00:09:37,760 Ada satu lagi dipanggil put. 203 00:09:37,760 --> 00:09:39,630 Sebenarnya ada beberapa kata kerja lain seperti. 204 00:09:39,630 --> 00:09:42,920 Tetapi perhatikan ada jalan yang ada, mengurangkan API, slash pengembang yang baru, 205 00:09:42,920 --> 00:09:44,990 mengurangkan cahaya, mengurangkan satu, slash negara. 206 00:09:44,990 --> 00:09:49,060 >> Itu nampaknya hanya jalan yang syarikat itu, Philips, 207 00:09:49,060 --> 00:09:51,640 memutuskan anda telah mencecah dengan permintaan HTTP 208 00:09:51,640 --> 00:09:55,010 jika anda ingin mengubah negara mentol menggunakan HTTP 1.1. 209 00:09:55,010 --> 00:09:56,380 Kemudian perhatikan garis kosong. 210 00:09:56,380 --> 00:10:00,170 Kemudian akhir sekali apa yang kelihatan seperti jenis array dari beberapa macam, 211 00:10:00,170 --> 00:10:04,730 ini sekali lagi akan dipanggil JavaScript Object Notation, atau Jason. 212 00:10:04,730 --> 00:10:08,000 Dan apa yang anda lihat di sini adalah bahwa ada tiga pasangan nilai kunci. 213 00:10:08,000 --> 00:10:09,115 >> Salah satu kuncinya adalah menyeru. 214 00:10:09,115 --> 00:10:10,990 Dan nilai nampaknya akan menjadi kenyataan. 215 00:10:10,990 --> 00:10:13,612 Kecerahan adalah 128, yang beberapa jenis int. 216 00:10:13,612 --> 00:10:15,820 Dan kemudian masa peralihan adalah sifar, yang ternyata 217 00:10:15,820 --> 00:10:17,970 berapa lama ia akan mengambil untuk mengubah perkara ini pada. 218 00:10:17,970 --> 00:10:19,890 >> Jadi sekarang ini mentol lampu dimatikan. 219 00:10:19,890 --> 00:10:22,880 Tetapi jika saya melakukan hal this-- membiarkan saya pergi ke contekan kecil 220 00:10:22,880 --> 00:10:25,200 Dan yang ditubuhkan pada advance-- dan aku akan 221 00:10:25,200 --> 00:10:27,920 untuk terus maju dan menyalin perintah berikut. 222 00:10:27,920 --> 00:10:30,200 Keriting, sebagai sebahagian dari kamu mungkin telah dikumpulkan pada CS50 223 00:10:30,200 --> 00:10:35,080 Bincangkan adalah utiliti seperti Telnet seperti bahawa anda boleh mensimulasikan permintaan HTTP, 224 00:10:35,080 --> 00:10:36,360 khusus meletakkan. 225 00:10:36,360 --> 00:10:39,710 Saya boleh menghantar data ini, secara khusus apa yang hanya 226 00:10:39,710 --> 00:10:43,430 melihat saat yang lalu khusus ke URL ini di sini. 227 00:10:43,430 --> 00:10:46,310 Dan kemudian Curl akan menangani semua header diperlukan 228 00:10:46,310 --> 00:10:47,600 dan parsing dari sana. 229 00:10:47,600 --> 00:10:54,700 >> Jadi apa yang saya perlu lakukan ialah salinan ini ke dalam tetingkap terminal dan kemudian tekan Enter. 230 00:10:54,700 --> 00:10:56,000 Dan bola lampu menyala. 231 00:10:56,000 --> 00:10:59,060 Dan ini semua akan melalui komputer saya secara wayarles 232 00:10:59,060 --> 00:11:01,960 entah ke jambatan itu, yang kemudian bercakap dengan mentol cahaya ini. 233 00:11:01,960 --> 00:11:02,960 Yang boleh saya lakukan sesuatu yang lain. 234 00:11:02,960 --> 00:11:07,050 Saya boleh membuat perkara ini pergi merah misalnya. 235 00:11:07,050 --> 00:11:11,040 Saya dapat misalnya membuat hal ini pergi hijau. 236 00:11:11,040 --> 00:11:12,220 Saya boleh membuat ia pergi biru. 237 00:11:12,220 --> 00:11:14,760 >> Dan melihat di masing-masing contoh, apa yang Aku ganti 238 00:11:14,760 --> 00:11:18,540 adalah nilai warna yang dipanggil untuk sebenarnya memberikan warna beberapa. 239 00:11:18,540 --> 00:11:20,320 Jadi, saya melekatkan satu ini juga. 240 00:11:20,320 --> 00:11:21,000 Sekarang itu biru. 241 00:11:21,000 --> 00:11:24,672 >> Dan anda boleh melakukan bahkan lebih bagus perkara jika- mari kita pergi ke hijau. 242 00:11:24,672 --> 00:11:26,630 Dan saya boleh melakukan ini dari kursus dengan kod sendiri. 243 00:11:26,630 --> 00:11:30,670 Tetapi bahkan API itu sendiri menyokong operasi funky 244 00:11:30,670 --> 00:11:35,510 begini, yang kini akan mengganggu kami selama 30 saat yang akan datang. 245 00:11:35,510 --> 00:11:39,170 >> Jadi itu satu rasa dari apa yang anda mungkin lakukan dengan API, yang satu ini yang melibatkan 246 00:11:39,170 --> 00:11:40,010 mentol lampu. 247 00:11:40,010 --> 00:11:42,510 Ambil perhatian bahawa CS50 mempunyai pasangan pasang Google Glass jika Anda lebih 248 00:11:42,510 --> 00:11:45,380 suka untuk mengatasi sesuatu di sepanjang garis-garis, Arduino Unos, yang 249 00:11:45,380 --> 00:11:48,670 adalah komputer kecil kecil, pada dasarnya, di papan litar kecil 250 00:11:48,670 --> 00:11:50,470 bahawa anda boleh menyambung kabel dan lain-lain 251 00:11:50,470 --> 00:11:52,732 kepada dan sebenarnya kawalan persekitaran dunia sebenar anda. 252 00:11:52,732 --> 00:11:54,940 Dan kemudian ada pasangan mainan baru yang kita ada. 253 00:11:54,940 --> 00:11:59,294 Yang ini benar-benar hanya tiba hari melalui surat, yang Myo Armband. 254 00:11:59,294 --> 00:12:01,710 Dan saya fikir ia adalah satu cara untuk membuat Anda gembira tentang projek-projek 255 00:12:01,710 --> 00:12:03,720 bahawa anda boleh menggunakan dengan perkakasan ini akan 256 00:12:03,720 --> 00:12:08,900 jadi bermain klip pendek ini yang mereka gunakan untuk menggoda penduduk 257 00:12:08,900 --> 00:12:10,500 bahawa kita sedang hidup di masa depan. 258 00:12:10,500 --> 00:12:13,494 259 00:12:13,494 --> 00:12:15,490 >> [MUSIK BERMAIN] 260 00:12:15,490 --> 00:13:33,410 261 00:13:33,410 --> 00:13:37,109 >> DAVID MALAN: Jadi, dalam hanya beberapa minggu, anda juga boleh jadi sejuk di pameran CS50 ini. 262 00:13:37,109 --> 00:13:39,150 Peranti lain yang kami memiliki banyak yang kami 263 00:13:39,150 --> 00:13:42,090 senang untuk pinjaman bagi projek-projek dipanggil pengawal gerakan. 264 00:13:42,090 --> 00:13:45,030 Ini adalah peranti USB kecil anda menyambung ke komputer yang 265 00:13:45,030 --> 00:13:47,520 membolehkan anda untuk berinteraksi dengan komputer riba anda, Mac atau PC, 266 00:13:47,520 --> 00:13:51,570 seolah-olah anda mempunyai seperti Xbox Kinect dan benar-benar membuat gerakan fizikal banyak 267 00:13:51,570 --> 00:13:54,509 seperti yang kita lihat dalam ini visi masa depan. 268 00:13:54,509 --> 00:13:56,505 >> [MUSIK BERMAIN] 269 00:13:56,505 --> 00:15:03,380 270 00:15:03,380 --> 00:15:06,260 >> DAVID MALAN: Jadi, walaupun anda mempunyai tidak tahu bagaimana sesuatu seperti itu 271 00:15:06,260 --> 00:15:10,050 mungkin boleh dicipta atau kerja pada tahap perkakasan, tidak kira. 272 00:15:10,050 --> 00:15:13,520 Walaupun selepas hanya beberapa bulan dari CS50, dan pemahaman tentang pengaturcaraan 273 00:15:13,520 --> 00:15:19,460 lebih umum, dan pengaturcaraan web yang lebih baru-baru ini, dan kemudian juga API, dan HTTP, 274 00:15:19,460 --> 00:15:21,830 Anda akan mempunyai akses melalui API perisian jika anda 275 00:15:21,830 --> 00:15:24,680 ingin meminjam salah satu daripada peranti untuk benar-benar bercakap dengan ia 276 00:15:24,680 --> 00:15:27,180 dan tidak perlu bimbang tentang pelaksanaan asas 277 00:15:27,180 --> 00:15:30,220 butiran, yang benar-benar selaras dengan gagasan ini dari lapisan 278 00:15:30,220 --> 00:15:33,610 abstraksi yang kami telah dilihat sepanjang semester. 279 00:15:33,610 --> 00:15:37,990 >> Begitu juga pada hujung minggu, melihat beberapa keping berita. 280 00:15:37,990 --> 00:15:40,640 Pergi pertama, pergi ke seminar jika anda ingin mengetahui sesuatu 281 00:15:40,640 --> 00:15:42,160 lebih lanjut mengenai beberapa topik. 282 00:15:42,160 --> 00:15:43,340 Lihat URL di sana. 283 00:15:43,340 --> 00:15:45,890 Dan yang satu ini telah dihantar kepada saya oleh Chang, yang kamu kenal, 284 00:15:45,890 --> 00:15:47,850 siapa yang mencetak tentara kita gajah. 285 00:15:47,850 --> 00:15:49,910 Dan ia adalah tajuk berita seperti berikut. 286 00:15:49,910 --> 00:15:51,280 Aku takut TV baru saya. 287 00:15:51,280 --> 00:15:54,301 Mengapa aku takut untuk mengubah ini perkara dan anda akan terlalu. 288 00:15:54,301 --> 00:15:56,050 Jadi kita kini berada di titik dalam semester, 289 00:15:56,050 --> 00:15:58,860 terlalu, yang mana walaupun anda mempunyai sedikit pemahaman 290 00:15:58,860 --> 00:16:02,620 bagaimana web bekerja, dan HTTP, dan keselamatan, hal-hal seperti ini 291 00:16:02,620 --> 00:16:03,980 harus bermula untuk menangkap mata anda. 292 00:16:03,980 --> 00:16:07,450 Tetapi juga, anda akan memahami sama ada perkara-perkara ini atau tidak 293 00:16:07,450 --> 00:16:08,430 ancaman sebenar. 294 00:16:08,430 --> 00:16:10,940 >> Jadi saya mengambil petikan beberapa dari artikel ini di sini. 295 00:16:10,940 --> 00:16:12,540 Dan cerita ini adalah seperti berikut. 296 00:16:12,540 --> 00:16:14,300 Saya sekarang pemilik sebuah TV pintar baru, yang 297 00:16:14,300 --> 00:16:18,470 menjanjikan untuk memberikan streaming kandungan multimedia, permainan, aplikasi, 298 00:16:18,470 --> 00:16:21,450 media sosial dan internet menyemak imbas, oh dan TV terlalu. 299 00:16:21,450 --> 00:16:24,410 Satu-satunya masalah adalah bahawa saya sekarang takut untuk menggunakannya, kata penulis. 300 00:16:24,410 --> 00:16:29,592 Anda akan, juga, jika anda membaca dasar privasi 46 halaman untuk TV anda. 301 00:16:29,592 --> 00:16:31,800 Jumlah data ini terkumpul perkara yang mengejutkan. 302 00:16:31,800 --> 00:16:35,710 Ini log di mana, bila, bagaimana, dan untuk berapa lama anda menggunakan TV. 303 00:16:35,710 --> 00:16:38,190 Ia set pelacakan cookie, kerana kita telah dibincangkan, 304 00:16:38,190 --> 00:16:40,560 dan suar dirancang untuk mengesan apabila anda mempunyai 305 00:16:40,560 --> 00:16:43,185 kandungan tertentu dilihat atau mesej e-mel tertentu 306 00:16:43,185 --> 00:16:45,230 jika anda mahu untuk memeriksa e-mel pada TV anda. 307 00:16:45,230 --> 00:16:48,430 Ini catatan aplikasi anda digunakan, laman web yang anda lawati, 308 00:16:48,430 --> 00:16:52,280 dan bagaimana anda berinteraksi dengan kandungan, melakukan semua itu melalui TV pintar anda. 309 00:16:52,280 --> 00:16:55,470 Ia juga, YET creepier itu addition-- saya 310 00:16:55,470 --> 00:16:58,140 telah terbina dalam kamera dengan pengenalan wajah. 311 00:16:58,140 --> 00:17:01,010 >> Tujuannya adalah untuk memberikan kawalan isyarat untuk TV 312 00:17:01,010 --> 00:17:05,490 dan membolehkan anda untuk log masuk ke peribadi akaun menggunakan muka anda. 313 00:17:05,490 --> 00:17:08,940 Pada terbalik, gambar yang disimpan di TV bukan dimuat naik 314 00:17:08,940 --> 00:17:09,940 ke pelayan korporat. 315 00:17:09,940 --> 00:17:12,520 Pada sisi negatifnya, internet sambungan membuat seluruh TV 316 00:17:12,520 --> 00:17:14,811 terdedah kepada hacker yang telah menunjukkan keupayaan 317 00:17:14,811 --> 00:17:16,700 mengambil kawalan lengkap mesin. 318 00:17:16,700 --> 00:17:20,880 >> Yang lebih menakutkan, seolah-olah itu bukan bijak, adalah mikrofon. 319 00:17:20,880 --> 00:17:23,599 TV ini mempunyai suara yang ciri pengecaman 320 00:17:23,599 --> 00:17:26,859 yang membolehkan penonton untuk mengawal skrin dengan arahan suara. 321 00:17:26,859 --> 00:17:30,290 Tetapi perkhidmatan yang dilengkapi dengan peringatan agak menyenangkan. 322 00:17:30,290 --> 00:17:33,030 Sila ambil perhatian bahawa jika kata yang diucapkan anda termasuk 323 00:17:33,030 --> 00:17:36,210 peribadi atau sensitif maklumat, bahawa maklumat 324 00:17:36,210 --> 00:17:40,310 akan berada di antara data yang diambil dan dihantar kepada pihak ketiga. 325 00:17:40,310 --> 00:17:40,870 Mengerti? 326 00:17:40,870 --> 00:17:45,860 Jangan kata peribadi atau sensitif barang-barang di hadapan TV anda. 327 00:17:45,860 --> 00:17:47,280 >> Jadi, ini adalah benar-benar nyata. 328 00:17:47,280 --> 00:17:50,530 Dan sukar untuk tidak melihat jika anda pergi ke Best Buy atau sejenisnya untuk TV 329 00:17:50,530 --> 00:17:51,030 hari ini. 330 00:17:51,030 --> 00:17:52,540 Mereka semua bijak dalam beberapa cara. 331 00:17:52,540 --> 00:17:54,740 Dan mereka mendapatkan lebih bijak dan creepier. 332 00:17:54,740 --> 00:17:57,490 Dan mereka hanya mengumpulkan data cara-cara yang telah kita bicarakan 333 00:17:57,490 --> 00:18:01,840 dan kemudian memuat naik melalui HTTP atau beberapa protokol lain untuk beberapa pelayan. 334 00:18:01,840 --> 00:18:05,720 >> Jadi ini adalah satu artikel yang menyeronokkan di laman web dalam talian ini 335 00:18:05,720 --> 00:18:08,940 di sini, yang bercakap tentang bug tertentu atau kod keliru 336 00:18:08,940 --> 00:18:11,340 bahawa kita benar-benar dapat mengikat dalam perbincangan minggu lalu. 337 00:18:11,340 --> 00:18:15,730 Jadi tajuk ini adalah seperti berikut, menurut cerita di sini, 338 00:18:15,730 --> 00:18:18,720 Josh Breckman bekerja untuk syarikat yang mendarat kontrak yang 339 00:18:18,720 --> 00:18:22,390 untuk membangunkan pengurusan kandungan sistem, atau CMS kerana mereka dipanggil, 340 00:18:22,390 --> 00:18:24,380 untuk laman web kerajaan yang cukup besar. 341 00:18:24,380 --> 00:18:27,300 Banyak projek yang terlibat membangunkan sistem pengurusan kandungan 342 00:18:27,300 --> 00:18:29,840 supaya pekerja akan dapat membina dan mengekalkan 343 00:18:29,840 --> 00:18:31,877 yang sentiasa berubah kandungan untuk laman mereka. 344 00:18:31,877 --> 00:18:34,210 Semua berjalan dengan baik untuk beberapa hari selepas akan hidup. 345 00:18:34,210 --> 00:18:37,020 Tetapi pada hari keenam, perkara yang tidak berjalan dengan baik. 346 00:18:37,020 --> 00:18:39,500 Semua kandungan pada laman web telah benar-benar hilang. 347 00:18:39,500 --> 00:18:42,950 Dan semua halaman membawa kepada lalai, Sila masukkan kandungan laman web. 348 00:18:42,950 --> 00:18:43,810 Alamak. 349 00:18:43,810 --> 00:18:46,080 Josh dipanggil untuk menyiasat dan perasan 350 00:18:46,080 --> 00:18:49,390 yang sangat mengganggu alamat IP luaran mempunyai 351 00:18:49,390 --> 00:18:53,380 pergi dalam dan memadam semua kandungan pada sistem. 352 00:18:53,380 --> 00:18:56,290 >> Alamat IP tidak tergolong kepada beberapa hacker bengkok di luar negara 353 00:18:56,290 --> 00:18:58,340 menghancurkan berguna maklumat kerajaan. 354 00:18:58,340 --> 00:19:05,190 Ia memutuskan untuk googlebot.com, Web merangkak sendiri labah-labah Google. 355 00:19:05,190 --> 00:19:06,010 Alamak. 356 00:19:06,010 --> 00:19:09,150 Setelah sedikit penyelidikan dan berebut sekitar untuk mencari sandaran noncorrupt, 357 00:19:09,150 --> 00:19:10,180 Josh menemukan masalah. 358 00:19:10,180 --> 00:19:12,700 >> Seorang pengguna telah disalin semula dan ditampal beberapa kandungan dari satu 359 00:19:12,700 --> 00:19:15,670 halaman ke halaman lain, termasuk sebuah Edit Hyperlink 360 00:19:15,670 --> 00:19:17,577 untuk menyunting kandungan pada halaman. 361 00:19:17,577 --> 00:19:20,160 Biasanya ini tidak akan menjadi masalah kerana pengguna luar akan 362 00:19:20,160 --> 00:19:24,320 perlu memasukkan nama dan kata laluan, tetapi sistem pengesahan CMS, 363 00:19:24,320 --> 00:19:27,520 sistem login, tidak mengambil kira 364 00:19:27,520 --> 00:19:30,980 hacking yang canggih teknik Google Spider. 365 00:19:30,980 --> 00:19:31,700 Alamak. 366 00:19:31,700 --> 00:19:33,610 >> Ternyata, Google Labah-labah tidak menggunakan 367 00:19:33,610 --> 00:19:36,950 cookies, yang bermakna bahawa ia boleh dengan mudah memotong cek untuk 368 00:19:36,950 --> 00:19:39,840 login set kuki adalah palsu. 369 00:19:39,840 --> 00:19:42,620 Ini juga tidak memberi perhatian kepada JavaScript, yang biasanya akan 370 00:19:42,620 --> 00:19:45,170 meminta dan mengarahkan pengguna yang tidak log masuk. 371 00:19:45,170 --> 00:19:48,610 Bagaimana pun mengikuti setiap hyperlink pada setiap halaman itu menjumpai, 372 00:19:48,610 --> 00:19:51,700 termasuk mereka yang mempunyai Padam halaman dalam tajuk. 373 00:19:51,700 --> 00:19:52,650 Alamak. 374 00:19:52,650 --> 00:19:56,070 >> Jadi apa artinya ini dalam lebih istilah teknikal tapi cukup mudah? 375 00:19:56,070 --> 00:19:58,340 Ia hanya bermakna bahawa di seluruh laman web mereka, 376 00:19:58,340 --> 00:20:02,287 mereka mempunyai URL yang tidak tidak seperti yang satu ini yang Anda mungkin akan melihat dalam permasalahan yang tujuh. 377 00:20:02,287 --> 00:20:04,620 Recall pada permasalahan yang tujuh atau kenal permasalahan yang tujuh 378 00:20:04,620 --> 00:20:06,411 bahawa anda dicabar, di antaranya, 379 00:20:06,411 --> 00:20:08,570 untuk menjual saham bagi pihak pengguna. 380 00:20:08,570 --> 00:20:14,010 Tetapi melaksanakan ciri yang dengan cara dari mendapatkan melalui hyperlink dalam pengguna anda 381 00:20:14,010 --> 00:20:16,880 antara muka, mungkin bukan idea yang paling bijak 382 00:20:16,880 --> 00:20:20,300 kerana jika laman web anda adalah entah bagaimana diakses sama ada oleh manusia 383 00:20:20,300 --> 00:20:23,577 siapa yang mengklik di sekitar atau membeli bot seperti Google atau labah-labah yang 384 00:20:23,577 --> 00:20:26,160 sebagai mereka disebut itu hanya merangkak web cuba untuk indeks 385 00:20:26,160 --> 00:20:29,060 web sebagai enjin carian, mereka boleh dengan mudah 386 00:20:29,060 --> 00:20:31,340 memukul melalui mendapatkan jenis URL. 387 00:20:31,340 --> 00:20:33,770 Dan itu secara fungsional bersamaan dengan, dalam hal ini, 388 00:20:33,770 --> 00:20:37,000 menjual semua saham Google. 389 00:20:37,000 --> 00:20:40,030 >> Kini terus terang, itu benar-benar bodoh bahawa CMS 390 00:20:40,030 --> 00:20:43,240 digunakan JavaScript dan cookies untuk melaksanakan sistem login nya 391 00:20:43,240 --> 00:20:47,100 dan tidak melakukan hal itu pihak pelayan, sebagai kalian berbuat dan akan di Serangga 7-- 392 00:20:47,100 --> 00:20:49,940 ada login.php yang file-- selalu, sentiasa, 393 00:20:49,940 --> 00:20:52,789 selalu keamanan harus dilakukan pada sisi server, 394 00:20:52,789 --> 00:20:56,080 tidak di pihak klien kerana, kerana ini artikel mencadangkan dan anda mungkin diri anda 395 00:20:56,080 --> 00:20:59,600 melihat pada masa tertentu, ia adalah remeh untuk pengguna, baik atau buruk, 396 00:20:59,600 --> 00:21:02,860 hanya mematikan JavaScript apatah cookies. 397 00:21:02,860 --> 00:21:06,020 Jadi itulah WTF harian anda. 398 00:21:06,020 --> 00:21:07,970 >> Ada satu lagi, yang adalah hanya jenis menakutkan, 399 00:21:07,970 --> 00:21:11,360 jadi saya akan menyatakannya jika hanya sebagai pelajaran hidup. 400 00:21:11,360 --> 00:21:14,850 Setiap kali anda menggunakan permohonan disebut seperti Snapchat atau sejenisnya 401 00:21:14,850 --> 00:21:19,380 yang mengatakan gambar-gambar ini hanya berlangsung selama lima saat, sepuluh saat, atau entah apa lagi. 402 00:21:19,380 --> 00:21:21,680 Mereka tidak kekal Itu sama sekali tidak terjadi. 403 00:21:21,680 --> 00:21:25,670 Seperti tidak ada cara, digital, untuk melaksanakan beberapa bentuk video, 404 00:21:25,670 --> 00:21:30,150 atau imej, atau teks perkongsian seperti bahawa penerima di hujung yang lain 405 00:21:30,150 --> 00:21:31,660 tidak boleh entah bagaimana menyimpan data. 406 00:21:31,660 --> 00:21:34,300 >> Dengan cara yang paling naif, seseorang boleh mengambil telefon mereka. 407 00:21:34,300 --> 00:21:36,850 Dan mereka mempunyai jendela kedua 10 sambil melihat beberapa snap 408 00:21:36,850 --> 00:21:39,410 untuk hanya mengambil beberapa telefon lain dan mengambil gambar itu, jelas. 409 00:21:39,410 --> 00:21:41,660 Jadi, anda boleh memelihara sesuatu secara digital dengan cara itu. 410 00:21:41,660 --> 00:21:44,620 Sebahagian daripada anda tahu bagaimana untuk mengambil screenshot pada telefon anda. 411 00:21:44,620 --> 00:21:49,290 Malah, jika anda tidak tahu ini, menyedari bahawa sekurang-kurangnya Snapchat, 412 00:21:49,290 --> 00:21:51,040 dan saya rasa lain aplikasi hari ini, 413 00:21:51,040 --> 00:21:53,720 sekurang-kurangnya memberitahu anda jika penerima telah benar-benar 414 00:21:53,720 --> 00:21:55,310 mengambil screenshot imej anda. 415 00:21:55,310 --> 00:22:00,870 >> Tetapi yang lebih buruk lagi, ini adalah snappening itu, sebagai seseorang yang diciptakan itu baru-baru ini, 416 00:22:00,870 --> 00:22:04,680 di mana kira-kira 100,000 Buncis telah dibebaskan 417 00:22:04,680 --> 00:22:09,310 dalam apa yang disebut fail torrent di pelbagai laman web akhirnya. 418 00:22:09,310 --> 00:22:12,000 Dan ini terkandung sejumlah mesej peribadi dan posting. 419 00:22:12,000 --> 00:22:15,210 Ternyata kebanyakan dari mereka tidak berbahaya, jadi apa yang anda harapkan. 420 00:22:15,210 --> 00:22:17,580 Tetapi kerana orang mempunyai menggunakan laman web pihak ketiga, 421 00:22:17,580 --> 00:22:20,270 login dengan Snapchat mereka nama pengguna dan kata laluan dan kemudian 422 00:22:20,270 --> 00:22:23,470 menyimpan semua mereka terkunci pada ini laman web pihak ketiga. 423 00:22:23,470 --> 00:22:26,130 Dan ia adalah bahawa pihak ketiga laman web yang telah digodam, 424 00:22:26,130 --> 00:22:30,710 yang hanya bermakna seseorang digambarkan bagaimana untuk mendapatkan semua 100,000 ditambah dari orang-orang gambar 425 00:22:30,710 --> 00:22:33,822 ke dalam cakera keras mereka sendiri untuk perkongsian seterusnya. 426 00:22:33,822 --> 00:22:36,030 Terus terang, di sini juga, itu adalah semacam dari bodoh yang Snapchat 427 00:22:36,030 --> 00:22:39,360 dilaksanakan dalam apa-apa cara yang pihak ketiga boleh menyusun intercept 428 00:22:39,360 --> 00:22:43,310 data dan ia tidak terikat kepada anda aplikasi sendiri yang berjalan pada telefon. 429 00:22:43,310 --> 00:22:46,947 Tetapi di sini juga, sedar bahawa ini perkara yang tidak harus menangkap anda dengan kejutan, 430 00:22:46,947 --> 00:22:49,030 atau sekurang-kurangnya harus ada menjadi pelajaran hidup di sini. 431 00:22:49,030 --> 00:22:52,220 Jika ingin teknikal maklumat, sila ke URL yang ada 432 00:22:52,220 --> 00:22:53,570 yang ada di slide hari ini. 433 00:22:53,570 --> 00:23:00,960 Baiklah, apa-apa soalan mengenai pelajaran hidup hari ini di CS? 434 00:23:00,960 --> 00:23:02,710 Menghidupkan yang mati. 435 00:23:02,710 --> 00:23:04,970 Apa-apa pun? 436 00:23:04,970 --> 00:23:06,301 Apa-apa pun? 437 00:23:06,301 --> 00:23:09,050 Saya ada ramai orang yang mendaftar Snapchat atau sesuatu yang mereka sekarang. 438 00:23:09,050 --> 00:23:11,690 >> Baiklah, jadi SQL, Bahasa Pertanyaan Berstruktur. 439 00:23:11,690 --> 00:23:12,509 Mari kita membungkus hal ini. 440 00:23:12,509 --> 00:23:14,300 Dan juga, walaupun kami hanya menggaru 441 00:23:14,300 --> 00:23:16,310 permukaan ini bahasa, kami akan memberikan anda 442 00:23:16,310 --> 00:23:18,930 cukup bahasa dalam bentuk Serangga 7 443 00:23:18,930 --> 00:23:22,140 supaya anda boleh mengatasi beberapa fungsi yang agak biasa. 444 00:23:22,140 --> 00:23:24,912 Tetapi menyadari ada pasangan perkara yang kita tidak memerlukan dari anda, 445 00:23:24,912 --> 00:23:27,120 tetapi mereka akan menjadi penting datang tugas akhir 446 00:23:27,120 --> 00:23:30,760 dan pasti datang membuat sebenar laman web dengan pengguna sebenar 447 00:23:30,760 --> 00:23:32,040 adalah keputusan reka bentuk ini. 448 00:23:32,040 --> 00:23:34,460 >> Ia ternyata bahawa dalam pangkalan data MySQL, anda 449 00:23:34,460 --> 00:23:37,460 mempunyai tandan pilihan seperti jenis data untuk ruangan anda 450 00:23:37,460 --> 00:23:41,670 dan perkara-perkara lain, tetapi anda juga mempunyai pilihan simpanan yang dipanggil 451 00:23:41,670 --> 00:23:44,570 mesin untuk semua data anda, jenis sistem fail, 452 00:23:44,570 --> 00:23:46,700 jika anda sudah biasa, untuk semua data anda. 453 00:23:46,700 --> 00:23:48,830 Apa format ia akhirnya disimpan di dalam? 454 00:23:48,830 --> 00:23:53,300 Dan yang paling biasa, mungkin, telah MyISAM dan InnoDB, istilah teknikal 455 00:23:53,300 --> 00:23:56,060 bahawa kami akan mengambil berat tentang hanya setakat satu yang mempunyai 456 00:23:56,060 --> 00:23:58,500 dan seseorang tidak perlu ciri berikut. 457 00:23:58,500 --> 00:24:00,390 >> Katakan anda mempunyai asrama lemari es sedikit. 458 00:24:00,390 --> 00:24:03,030 Dan anggaplah bahawa anda dan anda rakan sebilik, berkongsi peti sejuk ini, 459 00:24:03,030 --> 00:24:04,682 benar-benar menyukai susu katakan. 460 00:24:04,682 --> 00:24:07,140 Dan ini adalah, sebenarnya, bagaimana cerita diberitahu kepada saya dalam perjalanan pulang 461 00:24:07,140 --> 00:24:10,890 pada hari ketika saya mengambil kursus dipanggil CS 161 Sistem Operasi, yang 462 00:24:10,890 --> 00:24:12,580 sama meneroka topik ini. 463 00:24:12,580 --> 00:24:13,760 Jadi anda mempunyai peti sejuk ini. 464 00:24:13,760 --> 00:24:14,630 Anda kehabisan susu. 465 00:24:14,630 --> 00:24:17,000 Dan anda pulang ke rumah, rakan sebilik anda masih di kelas atau apa sahaja, 466 00:24:17,000 --> 00:24:19,208 dan anda membuat keputusan saya akan pergi keluar dan mendapatkan susu. 467 00:24:19,208 --> 00:24:22,630 Jadi anda menutup peti sejuk, lokap di dalam bilik asrama, pergi di seberang jalan 468 00:24:22,630 --> 00:24:25,330 CVS atau di mana pun, dan mendapatkan dalam talian untuk membeli susu. 469 00:24:25,330 --> 00:24:28,960 >> Sementara itu, rakan sebilik anda pulang ke rumah dari kelas, masuk ke dalam bilik asrama, 470 00:24:28,960 --> 00:24:31,802 membuka peti sejuk, juga menyedari ooph, kami daripada susu. 471 00:24:31,802 --> 00:24:33,760 Sehingga ia menutup peti sejuk dan kemudian berlaku 472 00:24:33,760 --> 00:24:35,610 untuk pergi ke CVS lain, yang kebetulan menjadi 473 00:24:35,610 --> 00:24:38,470 satu blok jauhnya dari CVS lain di alun-alun, dan mendapat di talian 474 00:24:38,470 --> 00:24:40,230 sana untuk mendapatkan susu. 475 00:24:40,230 --> 00:24:42,524 Sekarang, tentu saja, beberapa menit kemudian, anda berdua kembali, 476 00:24:42,524 --> 00:24:44,690 dan yang terburuk dari semua kemungkinan hasil yang telah berlaku. 477 00:24:44,690 --> 00:24:45,792 Anda berdua mempunyai susu. 478 00:24:45,792 --> 00:24:47,500 Dan anda tidak benar-benar seperti susu yang banyak. 479 00:24:47,500 --> 00:24:49,625 Jadi salah seorang daripada mereka hanyalah akan masam pada satu masa nanti. 480 00:24:49,625 --> 00:24:55,941 Jadi sekarang anda mempunyai satu jumlah yang berlebihan susu di dalam peti sejuk semua kerana mengapa? 481 00:24:55,941 --> 00:24:57,072 >> [Terdengar] 482 00:24:57,072 --> 00:24:59,780 DAVID MALAN: Ya, anda tidak entah bagaimana berkomunikasi antara satu sama lain 483 00:24:59,780 --> 00:25:00,904 bahawa anda mendapat susu. 484 00:25:00,904 --> 00:25:04,320 Jadi, dalam yang paling mudah cara-cara di dunia manusia, 485 00:25:04,320 --> 00:25:08,390 bagaimana anda boleh mengelakkan ini bodoh senario daripada berlaku seperti 486 00:25:08,390 --> 00:25:09,750 bahawa anda hanya berakhir dengan satu. 487 00:25:09,750 --> 00:25:10,840 Teks mereka, ya baik. 488 00:25:10,840 --> 00:25:12,877 Tetapi bagaimana lagi? 489 00:25:12,877 --> 00:25:13,460 Post-it. 490 00:25:13,460 --> 00:25:14,626 DAVID MALAN: Satu nota Post-it. 491 00:25:14,626 --> 00:25:17,150 Apa-apa bentuk komunikasi yang memberitahu rakan sebilik anda 492 00:25:17,150 --> 00:25:18,670 tidak akan masuk ke dalam peti sejuk untuk susu. 493 00:25:18,670 --> 00:25:20,440 Saya akan pergi mengisi kembali pada saya sendiri. 494 00:25:20,440 --> 00:25:22,770 Jadi, anda perlu entah bagaimana untuk mengunci bahagian ini. 495 00:25:22,770 --> 00:25:27,180 Oleh itu, kita boleh membuat this-- kita boleh jenis merosakkan cerita dan bertukar menjadi cerita CS 496 00:25:27,180 --> 00:25:30,360 mana menganggap ini sebagai sama seperti berubah-ubah, yang menyimpan beberapa nilai. 497 00:25:30,360 --> 00:25:32,570 Dan sekarang ini, nilai susu adalah sifar, 498 00:25:32,570 --> 00:25:35,410 yang anda tidak mahu anda rakan sebilik untuk memeriksa pembolehubah yang 499 00:25:35,410 --> 00:25:38,730 dan kemudian membuat keputusan dirinya sendiri berdasarkan keadaan yang berubah-ubah 500 00:25:38,730 --> 00:25:42,430 jika anda berada dalam proses mengubah keadaan berubah-ubah itu. 501 00:25:42,430 --> 00:25:46,140 >> Jadi salah satu baris SQL yang kita memberikan dalam Serangga 7 spesifikasi 502 00:25:46,140 --> 00:25:47,310 adalah salah satu ini di sini. 503 00:25:47,310 --> 00:25:49,740 Dan kita tidak menghabiskan besar jumlah masa yang bercakap tentang hal itu. 504 00:25:49,740 --> 00:25:55,100 Tetapi ternyata, jika anda cuba untuk membeli beberapa saham di bidang keuangan CS50 505 00:25:55,100 --> 00:25:58,000 bahawa anda sudah mempunyai beberapa saham, anda 506 00:25:58,000 --> 00:26:01,750 ingin dapat melakukan nomor perkara serta-merta bersama-sama. 507 00:26:01,750 --> 00:26:04,360 Anda mahu menjadi mampu berkesan, pada tahap yang tinggi, 508 00:26:04,360 --> 00:26:06,700 periksa semua betul, jika saya ingin untuk membeli lebih banyak saham percuma, 509 00:26:06,700 --> 00:26:08,780 yang kita saham sen bercakap tentang di spec, 510 00:26:08,780 --> 00:26:10,660 Saya mahu cek pertama berapa banyak saham yang saya miliki. 511 00:26:10,660 --> 00:26:11,810 Dan rasa itu lima. 512 00:26:11,810 --> 00:26:14,600 Dan kira saya mahu membeli 10 lagi, saya akhirnya 513 00:26:14,600 --> 00:26:17,069 ingin memiliki 15 saham. 514 00:26:17,069 --> 00:26:18,360 Jadi saya harus bertanya dua soalan. 515 00:26:18,360 --> 00:26:20,230 Apa keadaan pembolehubah? 516 00:26:20,230 --> 00:26:21,470 Apa keadaan barisan? 517 00:26:21,470 --> 00:26:22,970 Berapa banyak syer boleh saya saat ini? 518 00:26:22,970 --> 00:26:24,636 Maka anda mahu pergi ke depan dan mengemaskinikannya. 519 00:26:24,636 --> 00:26:27,720 Jadi itulah analog kepada susu dalam bahawa anda memeriksa barisan, 520 00:26:27,720 --> 00:26:30,730 dan kemudian anda mahu untuk mengemaskininya kerana jika anda ingin membeli 10 saham, 521 00:26:30,730 --> 00:26:32,521 Anda tidak ingin mengubah baris ke 10, anda 522 00:26:32,521 --> 00:26:35,300 ingin mengubahnya ke 5 ditambah 10 atau, tentu saja, 15. 523 00:26:35,300 --> 00:26:40,030 >> Baris kode memastikan kedua-dua idea-idea konseptual 524 00:26:40,030 --> 00:26:42,810 berlaku bersama-sama atau tidak sama sekali. 525 00:26:42,810 --> 00:26:46,920 Tidak seorang pun, termasuk beberapa pengguna lain siapa yang masuk ke laman web yang sama, 526 00:26:46,920 --> 00:26:49,900 entah bagaimana boleh mengganggu pengecekan barisan 527 00:26:49,900 --> 00:26:52,960 dan pengemaskinian berturut-turut itu, pilih dan kemas kini jika anda akan. 528 00:26:52,960 --> 00:26:57,360 Dan sintaks yang tidak super jelas, tetapi baris ini satu, lama itu adalah, 529 00:26:57,360 --> 00:27:01,150 memastikan bahawa kedua-dua operasi memeriksa variabel atau periksa barisan 530 00:27:01,150 --> 00:27:04,660 dan kemas kini baris yang berlaku atom. 531 00:27:04,660 --> 00:27:06,849 >> Oh di sini kita pergi lagi. 532 00:27:06,849 --> 00:27:07,890 Mesej teks pada telefon bimbit saya. 533 00:27:07,890 --> 00:27:09,954 Jadi mari kita membuat hal ini konkrit lebih sedikit. 534 00:27:09,954 --> 00:27:12,120 Katakan bahawa anda tidak melaksanakan peti sejuk, 535 00:27:12,120 --> 00:27:16,400 dan anda tidak melaksanakan Serangga 7 tetapi sebuah bank sebenarnya, 536 00:27:16,400 --> 00:27:20,000 atau ATM, Juruwang Automatik Mesin, di mana anda entah bagaimana 537 00:27:20,000 --> 00:27:22,960 ingin dapat memberdayakan pengguna untuk memindahkan wang 538 00:27:22,960 --> 00:27:24,500 dari satu akaun ke akaun lain. 539 00:27:24,500 --> 00:27:25,100 OK, bertahan. 540 00:27:25,100 --> 00:27:26,683 Saya akan membisukan ini sekarang, matur nuwun. 541 00:27:26,683 --> 00:27:30,450 Jadi kami ingin memindahkan wang dari satu nombor akaun 542 00:27:30,450 --> 00:27:33,600 ke dalam akaun yang berbeza nombor, khususnya $ 100. 543 00:27:33,600 --> 00:27:37,690 Jadi ini adalah jenis yang sewenang-wenang Sebagai contoh, di mana anda, ATM, 544 00:27:37,690 --> 00:27:41,060 mungkin mahu untuk melaksanakan dua SQL pertanyaan, tolak daripada satu akaun, 545 00:27:41,060 --> 00:27:42,430 dan menambah ke akaun yang lain. 546 00:27:42,430 --> 00:27:46,766 Tetapi anda ingin memastikan bahawa Dua baris kedua berlaku atau tidak sama sekali. 547 00:27:46,766 --> 00:27:48,640 Anda tidak mahu sesuatu mendapatkan terganggu. 548 00:27:48,640 --> 00:27:51,440 Anda tidak melakukan beberapa orang jahat bijak entah bagaimana berdiri di Bank of America 549 00:27:51,440 --> 00:27:53,270 dengan dua mesin ATM di hadapan daripadanya dan entah bagaimana 550 00:27:53,270 --> 00:27:55,270 semacam menaip dalam arahan pada masa yang sama, 551 00:27:55,270 --> 00:28:01,230 mudah-mudahan cuba untuk memotong $ 200 sebagai ganti sebanyak $ 100 dan hanya mempunyai $ 100 dikreditkan. 552 00:28:01,230 --> 00:28:04,450 Pendek kata, anda mahu perkara ini berkelakuan persis seperti yang anda harapkan. 553 00:28:04,450 --> 00:28:06,540 >> Dan cara yang anda lakukan ini di SQL database 554 00:28:06,540 --> 00:28:09,350 Anda membungkusnya dengan apa yang disebut transaksi. 555 00:28:09,350 --> 00:28:14,290 Secara harfiah dalam SQL, anda boleh memanggil ini CS50 fungsi query dengan kutipan awal tanda kutip 556 00:28:14,290 --> 00:28:15,370 transaksi. 557 00:28:15,370 --> 00:28:18,640 Kemudian anda boleh melaksanakan apa-apa jumlah pertanyaan SQL berikutnya, 558 00:28:18,640 --> 00:28:20,870 tetapi tidak seorang pun dari mereka mengambil kesan ke atas pangkalan data 559 00:28:20,870 --> 00:28:25,880 sehingga anda memanggil pertanyaan kutipan tanda kutip melakukan, jika sekali lagi menggunakan PHP. 560 00:28:25,880 --> 00:28:29,810 Dan dengan cara ini, anda boleh memastikan bahawa pengguna walaupun anda mempunyai 1,000 semua 561 00:28:29,810 --> 00:28:32,080 memukul pangkalan data anda pada masa yang sama, SQL 562 00:28:32,080 --> 00:28:34,540 akan menjanjikan bahawa dua pertanyaan akan 563 00:28:34,540 --> 00:28:36,740 dilaksanakan satu demi satu. 564 00:28:36,740 --> 00:28:40,330 Jadi anda tidak berakhir dengan lebih daripada susu atau jumlah yang salah, pada akhirnya, 565 00:28:40,330 --> 00:28:40,830 uang. 566 00:28:40,830 --> 00:28:43,110 >> Maka sematkan di dalam fikiran, bukan kerana Serangga 7 567 00:28:43,110 --> 00:28:45,250 tetapi bagi projek-projek akhir jika anda benar-benar 568 00:28:45,250 --> 00:28:49,690 cuba untuk memindahkan data seluruh jadual seperti yang mungkin di sini. 569 00:28:49,690 --> 00:28:53,980 Tetapi mungkin juga lebih mudah dan jelas untuk memahami dengan contoh 570 00:28:53,980 --> 00:28:54,860 adalah salah satu ini di sini. 571 00:28:54,860 --> 00:28:57,760 Dan seseorang melalui e-mel kepada kami tentang hanya hari ini yang lain 572 00:28:57,760 --> 00:28:59,600 apabila dia melihat sesuatu secara online sama. 573 00:28:59,600 --> 00:29:03,480 >> Jadi, untuk pengetahuan saya, sistem pin tidak terdedah kepada serangan ini. 574 00:29:03,480 --> 00:29:06,637 Dan saya tidak tahu apakah itu bahkan penggunaan pangkalan data SQL di bawah tenda. 575 00:29:06,637 --> 00:29:08,470 Tetapi mari kita menggunakannya untuk Demi perbincangan. 576 00:29:08,470 --> 00:29:10,178 Berikut adalah skrin yang Orang-orang cenderung Harvard 577 00:29:10,178 --> 00:29:13,620 untuk melihat ketika login dengan mereka Nombor ID Harvard dan pin mereka. 578 00:29:13,620 --> 00:29:19,020 Dan menganggap bahawa sistem pin ialah dilaksanakan dalam PHP dan MySQL dengan 579 00:29:19,020 --> 00:29:22,000 pangkalan data, kod yang seseorang tahun mungkin telah menulis yang lalu 580 00:29:22,000 --> 00:29:23,270 mungkin kelihatan seperti ini. 581 00:29:23,270 --> 00:29:25,230 Pertama, mengisytiharkan ubah dikenali sebagai nama pengguna. 582 00:29:25,230 --> 00:29:27,560 Dan hanya mendapatkan bahawa dari yang superglobal POST. 583 00:29:27,560 --> 00:29:30,140 Kemudian mendapatkan variabel lain disebut kata laluan dan melakukan perkara yang sama. 584 00:29:30,140 --> 00:29:33,080 Dan kemudian hanya menjalankan pertanyaan ini panjang di sini, 585 00:29:33,080 --> 00:29:36,690 pilih bintang daripada pengguna di mana nama pengguna sama dengan ini dan itu 586 00:29:36,690 --> 00:29:38,510 dan kata laluan sama dengan ini dan itu. 587 00:29:38,510 --> 00:29:40,660 >> Perhatikan bahawa keriting yang kawat gigi saya telah digunakan di sini 588 00:29:40,660 --> 00:29:42,880 hanya bermaksud untuk PHP, pergi ke depan dan pengganti 589 00:29:42,880 --> 00:29:45,400 nilai kedua-dua pembolehubah di sana. 590 00:29:45,400 --> 00:29:50,090 Mereka tidak benar-benar diperlukan, tetapi mereka cenderung untuk menghindari kesalahan sintaks halus. 591 00:29:50,090 --> 00:29:53,650 Jadi ini kelihatan benar-benar betul pada pandangan pertama. 592 00:29:53,650 --> 00:29:54,240 Dan ia adalah. 593 00:29:54,240 --> 00:29:56,680 Anda dapat melaksanakan sistem pin dengan cara ini. 594 00:29:56,680 --> 00:30:00,460 >> Tetapi kira yang super pelajar pintar dan berniat jahat 595 00:30:00,460 --> 00:30:03,020 input ini sebagai nya pin. 596 00:30:03,020 --> 00:30:05,550 Jadi saya telah membuang peluru tanda-tanda di sini di olok-olok ke atas, 597 00:30:05,550 --> 00:30:08,760 dan saya sudah benar-benar mendedahkan apa yang dia mungkin menaip. 598 00:30:08,760 --> 00:30:10,350 Dan ia sedikit aneh. 599 00:30:10,350 --> 00:30:13,850 Tetapi apa yang melompat keluar pada anda di berpotensi membimbangkan mengenai input pengguna, 600 00:30:13,850 --> 00:30:16,450 walaupun anda tidak tahu apa yang serangan injeksi SQL bermakna. 601 00:30:16,450 --> 00:30:20,300 Mengapa hal ini kelihatan hanyir sedikit? 602 00:30:20,300 --> 00:30:21,050 Apa itu? 603 00:30:21,050 --> 00:30:21,550 [Terdengar] 604 00:30:21,550 --> 00:30:24,260 DAVID MALAN: ini atau agak curiga. 605 00:30:24,260 --> 00:30:26,310 Sebenarnya, itu adalah satu kata kunci dari SQL. 606 00:30:26,310 --> 00:30:28,105 Sehingga tidak menjadi petanda baik. 607 00:30:28,105 --> 00:30:29,980 Hakikat bahawa terdapat semua ini tanda petikan tunggal 608 00:30:29,980 --> 00:30:32,646 besar-- sebenarnya, salah satu yang paling mudah cara untuk memecahkan beberapa pangkalan data 609 00:30:32,646 --> 00:30:35,880 adalah dengan menaip nama seperti O'Reilly yang mempunyai tanda kutip di dalamnya 610 00:30:35,880 --> 00:30:38,600 kerana jika manusia yang menulis kod di belakang tabir 611 00:30:38,600 --> 00:30:41,570 tidak mengambil kira bahawa terdapat mungkin tanda petikan tunggal di pengguna 612 00:30:41,570 --> 00:30:45,060 input, dan dia menggunakan tanda petikan tunggal dalam kod mereka, 613 00:30:45,060 --> 00:30:46,040 hal-hal buruk boleh berlaku. 614 00:30:46,040 --> 00:30:47,870 >> Malah, lebih buruk lagi, pertimbangkan ini. 615 00:30:47,870 --> 00:30:50,600 Jika ini sekali lagi kod bahwa seseorang di tahun Harvard 616 00:30:50,600 --> 00:30:53,100 lalu menulis untuk pin sistem, perhatikan apa yang 617 00:30:53,100 --> 00:30:56,220 kira-kira untuk digantikan untuk nama pengguna dan kata laluan 618 00:30:56,220 --> 00:30:59,780 jika jenis pengguna dalam lagi skroob sebagai username mereka 619 00:30:59,780 --> 00:31:03,960 dan kemudian satu, dua, tiga, empat, lima, petikan atau kutipan tanda kutip satu sama dengan 620 00:31:03,960 --> 00:31:04,660 mengutip satu. 621 00:31:04,660 --> 00:31:07,220 Dan perhatikan apa yang utama di sini adalah pengguna tidak 622 00:31:07,220 --> 00:31:09,900 mula password atau pin mereka dengan kutipan. 623 00:31:09,900 --> 00:31:12,610 Dan mereka belum berakhir itu dengan kutipan kerana dia 624 00:31:12,610 --> 00:31:16,315 dengan mengandaikan jika pengaturcara tidak begitu tajam, 625 00:31:16,315 --> 00:31:18,690 mereka akan memiliki orang- sebut harga tunggal di dalam kod. 626 00:31:18,690 --> 00:31:19,860 >> Jadi, inilah kod. 627 00:31:19,860 --> 00:31:23,820 Dan penggantian yang sekarang mungkin berlaku adalah ini. 628 00:31:23,820 --> 00:31:26,350 Dan saya telah digariskan apa pengguna telah ditaip dalam. 629 00:31:26,350 --> 00:31:28,480 Jadi sebelum, sesudah. 630 00:31:28,480 --> 00:31:33,330 Dan perhatikan apa yang sedikit membimbangkan sekarang kira-kira setengah hak kod SQL ini? 631 00:31:33,330 --> 00:31:36,300 Ini adalah sedikit lebih kompleks, diakui, daripada pertanyaan yang telah kita lihat. 632 00:31:36,300 --> 00:31:38,550 Tetapi ini tidak boleh mungkin menjadi hal yang baik jika anda 633 00:31:38,550 --> 00:31:42,240 mengatakan pilih bintang, yang pilih segala sesuatu dari meja pengguna 634 00:31:42,240 --> 00:31:46,630 mana nama pengguna sama skroob dan kata laluan sama dengan satu, dua, tiga, empat, 635 00:31:46,630 --> 00:31:49,610 lima atau satu sama dengan satu. 636 00:31:49,610 --> 00:31:53,860 Apakah implikasi logik dari fasal terakhir mungkin? 637 00:31:53,860 --> 00:31:55,650 Ia hanya selalu benar. 638 00:31:55,650 --> 00:31:59,930 >> Dan kerana kita telah semacam meneka atau digambarkan oleh percubaan dan kesilapan 639 00:31:59,930 --> 00:32:02,760 bahwa programmer yang menulis kod ini tidak 640 00:32:02,760 --> 00:32:07,250 menjangka seseorang manusia atau buruk menaip dalam tanda petikan tunggal juga, 641 00:32:07,250 --> 00:32:10,350 kita boleh sintaksis menyelesaikan pertanyaan SQL 642 00:32:10,350 --> 00:32:12,260 dengan sesuatu yang tidak masuk akal tetapi sesuatu yang 643 00:32:12,260 --> 00:32:15,930 sintaksis tidak betul yang selalu bernilai true. 644 00:32:15,930 --> 00:32:19,130 Jadi, jika kod ini sedang digunakan untuk menjawab soalan benar atau salah perlu 645 00:32:19,130 --> 00:32:22,930 pengguna ini dibenarkan untuk lulus, yang jawapan selalu tampaknya akan 646 00:32:22,930 --> 00:32:26,930 untuk menjadi kenyataan kerana ini selalu akan untuk memilih sesuatu dari pangkalan data 647 00:32:26,930 --> 00:32:29,280 kerana salah satu tentu saja akan selalu sama dengan satu. 648 00:32:29,280 --> 00:32:30,360 >> Jadi apa penyelesaian? 649 00:32:30,360 --> 00:32:33,290 Baik dalam Serangga 7, kita benar-benar mengelakkan ini semua bersama-sama. 650 00:32:33,290 --> 00:32:37,360 Kami memberikan fungsi pertanyaan, dan kami menggalakkan anda untuk menggunakan tanda tanya 651 00:32:37,360 --> 00:32:40,430 sebagai pemegang tempat, sama semangat yang printf ini% s, 652 00:32:40,430 --> 00:32:43,710 tetapi apa yang penting mengenai tanda tanya di sini adalah jika anda benar-benar membaca 653 00:32:43,710 --> 00:32:46,950 functions.php, di mana kami fungsi permintaan dilaksanakan, 654 00:32:46,950 --> 00:32:52,780 tanda tanya yang melarikan diri, di mana sesuatu yang berpotensi berbahaya 655 00:32:52,780 --> 00:32:58,210 seperti satu kutipan dihidupkan menjadi kutip melarikan diri. 656 00:32:58,210 --> 00:33:00,590 >> Jadi, ini adalah apa yang benar-benar terjadi jika anda 657 00:33:00,590 --> 00:33:04,850 menggunakan fungsi pertanyaan CS50 atau mana-mana nombor dari perpustakaan bebas pihak ketiga yang 658 00:33:04,850 --> 00:33:06,000 melakukan perkara yang sama. 659 00:33:06,000 --> 00:33:09,850 Tidak terpakai di dalam kes ini, dengan warna hijau, jika pengguna telah ditaip dalam satu kutipan 660 00:33:09,850 --> 00:33:12,070 kerana pertanyaan fungsi yang kita tulis adalah 661 00:33:12,070 --> 00:33:15,120 akan menambahkan backslashes sebelum sebarang kutipan berbahaya tersebut. 662 00:33:15,120 --> 00:33:17,360 Jadi ini tidak, dalam Malah, akan menjadi legit. 663 00:33:17,360 --> 00:33:20,910 Ini seperti menaip dalam gila mencari kata laluan itu, tentu saja, tidak akan 664 00:33:20,910 --> 00:33:23,490 menjadi kata laluan sebenar skroob ini. 665 00:33:23,490 --> 00:33:28,260 >> Jadi takeaway untuk CS50 adalah satu, benar-benar sentiasa menggunakan sesuatu 666 00:33:28,260 --> 00:33:30,860 seperti fungsi pertanyaan CS50 ini atau perpustakaan yang sedia ada, 667 00:33:30,860 --> 00:33:32,560 yang kebetulan dipanggil PDO. 668 00:33:32,560 --> 00:33:35,880 Tetapi tidak pernah, tidak pernah, tidak pernah melakukan kod seperti ini 669 00:33:35,880 --> 00:33:39,472 tanpa melarikan diri atau menggosok sebagaimana yang mereka katakan input anda. 670 00:33:39,472 --> 00:33:42,430 Dan anda akan pada satu masa nanti mungkin mencari beberapa laman web seperti ini. 671 00:33:42,430 --> 00:33:46,060 Malah, ia seolah-olah menjadi kes itu seperti di lapangan terbang dan hotel di tempat-tempat 672 00:33:46,060 --> 00:33:48,880 di mana mereka memiliki Wi-Fi percuma akses yang anda perlu login ke, 673 00:33:48,880 --> 00:33:51,010 laman web ini selalu teruk dilaksanakan. 674 00:33:51,010 --> 00:33:55,680 Dan sebagainya semacam-senang di rumah latihan, bukan untuk tujuan berniat jahat atau lebih 675 00:33:55,680 --> 00:33:59,170 yang menyenangkan di jalan raya senaman, adalah dengan hanya menaip 676 00:33:59,170 --> 00:34:02,850 apostrof, satu kutipan, ke dalam borang di laman web beberapa 677 00:34:02,850 --> 00:34:03,810 dan melihat apa yang berlaku. 678 00:34:03,810 --> 00:34:06,660 Dan jika server crash atau memberikan anda beberapa jenis mesej ralat, 679 00:34:06,660 --> 00:34:09,690 sangat mungkin bahawa seseorang telah tidak dijangka ini. 680 00:34:09,690 --> 00:34:15,239 Dan kemudian anda harus waspada yang betul pihak berkuasa dan meneruskan lagi. 681 00:34:15,239 --> 00:34:20,843 >> Jadi sekarang kalian harus diharapkan memahami sedikit lebih geek lucu di sini. 682 00:34:20,843 --> 00:34:24,120 >> [Ketawa] 683 00:34:24,120 --> 00:34:27,571 684 00:34:27,571 --> 00:34:29,070 DAVID MALAN: Kau tahu anda seorang geek. 685 00:34:29,070 --> 00:34:30,944 Selama beberapa seterusnya tahun, anda akan ingat 686 00:34:30,944 --> 00:34:33,520 yang sedikit Jadual Bobby kerana kartun ini di sini. 687 00:34:33,520 --> 00:34:36,760 Jadi ingatlah bahawa dalam fikiran kerana kita konteks suis kali terakhir 688 00:34:36,760 --> 00:34:38,770 hari ini untuk JavaScript. 689 00:34:38,770 --> 00:34:41,600 Kami telah menghabiskan agak sedikit masa pada sintaks PHP 690 00:34:41,600 --> 00:34:43,440 kerana ia sebenarnya super sama dengan C. 691 00:34:43,440 --> 00:34:47,300 Dan baik cukup, JavaScript terlalu super mirip dengan sintaks C 692 00:34:47,300 --> 00:34:49,639 dan juga seperti yang akan kita lihat dalam hanya masa dan seperti yang akan kita 693 00:34:49,639 --> 00:34:51,205 lihat pada minggu ini khususnya. 694 00:34:51,205 --> 00:34:54,080 Apa yang boleh anda lakukan dengan bahasa ini walaupun, adalah lebih kuat, 695 00:34:54,080 --> 00:34:55,790 terutama dengan API. 696 00:34:55,790 --> 00:34:56,960 >> Tetapi pertama tur singkat. 697 00:34:56,960 --> 00:35:00,450 Jadi satu, dalam JavaScript, ada tiada fungsi utama, yang bagus. 698 00:35:00,450 --> 00:35:02,650 Seperti PHP, anda hanya boleh menulis kod. 699 00:35:02,650 --> 00:35:04,310 Syarat kelihatan seperti ini. 700 00:35:04,310 --> 00:35:07,100 Dan ungkapan Boolean mungkin kelihatan seperti ini atau seperti ini. 701 00:35:07,100 --> 00:35:09,530 Menukar wujud, dan mereka mungkin kelihatan seperti ini. 702 00:35:09,530 --> 00:35:10,970 Empat gelung kelihatan seperti ini. 703 00:35:10,970 --> 00:35:12,390 Walaupun gelung kelihatan seperti ini. 704 00:35:12,390 --> 00:35:14,160 Adakah sesekali kelihatan seperti ini. 705 00:35:14,160 --> 00:35:16,850 Dan kemudian array kelihatan seperti ini, hampir sama dengan PHP. 706 00:35:16,850 --> 00:35:20,740 Tetapi perhatikan, bahawa dalam JavaScript anda mengisytiharkan pembolehubah tidak dengan satu dolar 707 00:35:20,740 --> 00:35:25,190 menandatangani, tidak dengan jenis data tetapi secara harfiah dengan mengatakan var untuk berubah di hadapannya. 708 00:35:25,190 --> 00:35:27,900 Ia terlalu longgar ditaip dalam hal ini memiliki jenis, 709 00:35:27,900 --> 00:35:29,729 tetapi anda tidak tegas menyatakan mereka. 710 00:35:29,729 --> 00:35:31,520 Dan kemudian string, untuk contoh, mungkin kelihatan 711 00:35:31,520 --> 00:35:34,350 seperti ini, tali yang yang disebut dalam kes ini. 712 00:35:34,350 --> 00:35:35,410 Dan kemudian objek. 713 00:35:35,410 --> 00:35:37,010 Dan kita ini akan melihat lebih banyak tidak lama lagi. 714 00:35:37,010 --> 00:35:41,470 Dan objek adalah mungkin salah satu yang paling kerap berlaku dalam struktur data 715 00:35:41,470 --> 00:35:44,050 dalam JavaScript berdasarkan program kerana ia membolehkan 716 00:35:44,050 --> 00:35:46,680 Anda kaitkan sewenang-wenangnya pasangan nilai utama hanya 717 00:35:46,680 --> 00:35:51,240 seperti array bersekutu PHP ini dan seperti jadual hash anda sendiri 718 00:35:51,240 --> 00:35:54,042 atau seperti yang kita cuba dilaksanakan beberapa minggu kembali. 719 00:35:54,042 --> 00:35:56,250 Jadi mari kita benar-benar melihat apa yang boleh kita lakukan dengan JavaScript. 720 00:35:56,250 --> 00:35:59,410 Dan khususnya, ini adalah daftar cucian ciri- 721 00:35:59,410 --> 00:36:02,300 yang mempunyai pelayar yang membolehkan kita untuk menyambung JavaScript 722 00:36:02,300 --> 00:36:05,470 ke dalam laman web dengan cara yang berikut. 723 00:36:05,470 --> 00:36:09,340 JavaScript sering digunakan sebagai sisi klien bahasa skrip. 724 00:36:09,340 --> 00:36:10,130 Ia tidak disusun. 725 00:36:10,130 --> 00:36:11,370 Ia juga ditafsirkan. 726 00:36:11,370 --> 00:36:15,740 Tetapi tidak seperti PHP, yang sudah berjalan pada pelayan, di pelayan web, 727 00:36:15,740 --> 00:36:18,220 atau di dalam mendalam tentang pelanggan, JavaScript 728 00:36:18,220 --> 00:36:22,190 berbeza di dalamnya yang biasanya berlangsung dalam pelayar. 729 00:36:22,190 --> 00:36:26,060 >> Jadi apa-apa kod JavaScript anda mula menulis untuk Serangga 8, atau projek akhir anda, 730 00:36:26,060 --> 00:36:29,890 atau dalam dunia sebenar umumnya akan yang akan disimpan pada pelayan, benar-benar 731 00:36:29,890 --> 00:36:33,110 dalam HTML atau dot dot JS untuk fail JavaScript. 732 00:36:33,110 --> 00:36:35,770 Tapi browser akan untuk memuat turun yang JavaScript 733 00:36:35,770 --> 00:36:39,530 kod untuk contoh anda sendiri Chrome, atau IE, atau Firefox, atau apa sahaja. 734 00:36:39,530 --> 00:36:43,870 Dan kod tersebut benar-benar akan mendapatkan dijalankan di dalam pelayar anda. 735 00:36:43,870 --> 00:36:46,560 Hanya untuk membuat ini lebih nyata, mari kita lihat ini dalam bentuk konkrit. 736 00:36:46,560 --> 00:36:50,120 >> Kami tidak tahu apa kod ini tidak tanpa benar-benar membaca melaluinya. 737 00:36:50,120 --> 00:36:52,670 Tetapi saya pergi ke Facebook.com tanpa log in. 738 00:36:52,670 --> 00:37:00,440 Biar saya pergi ke Periksa Elemen dan pergi ke, katakanlah, Rangkaian dan memuat semula halaman. 739 00:37:00,440 --> 00:37:04,150 Dan kami akan see-- biarlah saya beralih Reload yang Page untuk mendapatkan semua pertanyaan dengan produk baru. 740 00:37:04,150 --> 00:37:08,850 Dan yang pertama fail yang saya lihat adalah CSS, CSS. 741 00:37:08,850 --> 00:37:10,880 Berikut adalah yang pertama JavaScript fail, dan saya mempunyai 742 00:37:10,880 --> 00:37:14,600 tidak tahu apa yang dilakukan, tetapi di sini adalah beberapa kod JavaScript yang 743 00:37:14,600 --> 00:37:16,180 yang mendorong Facebook. 744 00:37:16,180 --> 00:37:18,400 Ia bukan walaupun benar-benar bahawa mendedahkan untuk zum masuk. 745 00:37:18,400 --> 00:37:20,260 Ia masih sama seperti tidak masuk akal. 746 00:37:20,260 --> 00:37:24,341 >> Tetapi anda akan melihat bahkan di bawah, ada bahkan lebih dari ini fail JavaScript. 747 00:37:24,341 --> 00:37:24,840 Alamak. 748 00:37:24,840 --> 00:37:25,440 Itu ping. 749 00:37:25,440 --> 00:37:28,550 Mari kita turun sedikit lebih lanjut, lebih jauh, lebih lanjut. 750 00:37:28,550 --> 00:37:29,894 Ada satu. 751 00:37:29,894 --> 00:37:31,238 Ada satu. 752 00:37:31,238 --> 00:37:31,880 Ada satu. 753 00:37:31,880 --> 00:37:35,820 >> Jadi walaupun Facebook, di belakang adegan, ditulis dengan bahagian dalam PHP 754 00:37:35,820 --> 00:37:39,100 dan Facebook versi itu sendiri, terdapat sejumlah besar JavaScript. 755 00:37:39,100 --> 00:37:41,330 Malah, mana-mana berbual yang anda lakukan di Facebook, 756 00:37:41,330 --> 00:37:45,520 salah satu update garis masa inline yang berlaku dalam masa sebenar, semua itu 757 00:37:45,520 --> 00:37:47,944 didorong oleh JavaScript. 758 00:37:47,944 --> 00:37:48,444 Ya? 759 00:37:48,444 --> 00:37:50,235 >> PENONTON: Saya tidak pasti jika ini adalah Facebook, 760 00:37:50,235 --> 00:37:53,624 tetapi saya fikir bahawa Facebook dibangunkan di-rumah kod bahasa mereka sendiri? 761 00:37:53,624 --> 00:37:54,540 DAVID MALAN: Mereka punya. 762 00:37:54,540 --> 00:37:58,110 Jadi sebab itu saya mengatakan varians PHP disebut Hip Hop yang mereka benar-benar 763 00:37:58,110 --> 00:38:03,440 ciri-ciri tambahan kepada apa-apa yang apabila Mark mula dilaksanakan Facebook, 764 00:38:03,440 --> 00:38:04,710 ia ditulis dalam PHP. 765 00:38:04,710 --> 00:38:07,370 Dan yang jenis tetap jenis bahasa ujung depan 766 00:38:07,370 --> 00:38:09,030 yang mereka gunakan untuk banyak coding mereka, tetapi 767 00:38:09,030 --> 00:38:11,870 tidak menjadi bahasa itu skala sangat baik untuk berbilion 768 00:38:11,870 --> 00:38:12,630 orang. 769 00:38:12,630 --> 00:38:15,300 Oleh itu mereka telah menambahkan mereka sendiri peningkatan di belakang tabir. 770 00:38:15,300 --> 00:38:17,049 Dan mereka menggunakan apa-apa bilangan bahasa-bahasa lain 771 00:38:17,049 --> 00:38:19,170 untuk berbagai potongan infrastruktur mereka. 772 00:38:19,170 --> 00:38:24,080 Jadi ya, ia adalah satu varians apa yang kita kenali sebagai PHP. 773 00:38:24,080 --> 00:38:26,610 >> Jadi mari kita lihat di beberapa contoh 774 00:38:26,610 --> 00:38:28,890 bagaimana kita boleh menggunakan JavaScript di sini. 775 00:38:28,890 --> 00:38:32,530 Dalam kod sumber hari ini, kita mempunyai sekelompok fail, di mana yang pertama, 776 00:38:32,530 --> 00:38:34,090 mari kita dipanggil DOM sifar. 777 00:38:34,090 --> 00:38:36,770 Jadi DOM sifar kelihatan seperti berikut. 778 00:38:36,770 --> 00:38:40,730 Biar saya pergi ke direktori ini dan membuka domzero.html, 779 00:38:40,730 --> 00:38:44,970 bahagian atas yang mempunyai jenis doc perisytiharan, katakan di sini datang HTML 5. 780 00:38:44,970 --> 00:38:46,440 Dan sekarang inilah tag HTML. 781 00:38:46,440 --> 00:38:47,540 Berikut adalah tag kepala. 782 00:38:47,540 --> 00:38:49,210 Dan inilah apa yang baru hari ini. 783 00:38:49,210 --> 00:38:52,620 >> Kami kini mempunyai tag script dalam kepala halaman. 784 00:38:52,620 --> 00:38:55,290 Dan ini nampaknya tidak sangat sedikit, tetapi notis 785 00:38:55,290 --> 00:38:58,410 bahawa saya telah menetapkan skrip, yang JavaScript. 786 00:38:58,410 --> 00:39:01,050 Dan sebagai samping, kerana ini adalah salah faham umum, 787 00:39:01,050 --> 00:39:05,220 JavaScript mempunyai apa-apa hubungannya dengan Jawa, bahasa 788 00:39:05,220 --> 00:39:08,010 sebahagian dari anda mungkin telah belajar di APC. 789 00:39:08,010 --> 00:39:10,480 Itu lebih dari pemasaran yang perkara daripada apa-apa, 790 00:39:10,480 --> 00:39:12,980 naik coattails Jawa tahun yang lalu. 791 00:39:12,980 --> 00:39:17,300 Tetapi JavaScript, tiada kaitan dengan Jawa, hanya sama, dan mengganggu, 792 00:39:17,300 --> 00:39:18,480 membingungkan dinamakan. 793 00:39:18,480 --> 00:39:21,890 >> Jadi di sini adalah bagaimana anda menyatakan fungsi dalam JavaScript, secara harfiah mengatakan fungsi, 794 00:39:21,890 --> 00:39:24,556 maka nama fungsi, maka apa-apa hujah yang ia mungkin mengambil masa, 795 00:39:24,556 --> 00:39:25,530 sama seperti di PHP. 796 00:39:25,530 --> 00:39:28,990 Rupa-rupanya dalam JavaScript, salah satu yang paling fungsi menjengkelkan yang wujud adalah Pemberitahuan. 797 00:39:28,990 --> 00:39:31,392 Ini adalah sebuah jendela kecil yang akan muncul dan memberi isyarat kepada anda 798 00:39:31,392 --> 00:39:32,600 kepada beberapa keping maklumat. 799 00:39:32,600 --> 00:39:33,766 Ini umumnya disukai. 800 00:39:33,766 --> 00:39:35,980 Tapi kita akan menggunakannya sebagai kami latihan pertama di sini. 801 00:39:35,980 --> 00:39:37,900 >> Perhatikan beberapa ciri JavaScript. 802 00:39:37,900 --> 00:39:41,524 Tanda petik tunggal dan tanda petik sebenarnya tidak penting lagi. 803 00:39:41,524 --> 00:39:43,690 Tanda petikan tunggal dan ganda sebut harga boleh ditukar ganti, 804 00:39:43,690 --> 00:39:46,220 sedangkan dalam bahasa C, anda perlu menggunakan tanda kutip ganda untuk string, 805 00:39:46,220 --> 00:39:48,150 dan anda mempunyai dua single mengutip untuk karakter. 806 00:39:48,150 --> 00:39:51,150 Dalam dunia JavaScript, banyak orang, kebanyakan orang 807 00:39:51,150 --> 00:39:54,970 menggunakan tanda kutip tunggal di tali hanya kerana ia adalah satu perkara yang gaya. 808 00:39:54,970 --> 00:39:58,330 Tetapi apa yang pengendali ditambah di sini, yang kita tidak pernah melihat sebelum ini? 809 00:39:58,330 --> 00:39:59,836 >> PENONTON: Rangkaian. 810 00:39:59,836 --> 00:40:00,960 DAVID MALAN: Rangkaian. 811 00:40:00,960 --> 00:40:02,450 Jadi C bahkan tidak memiliki ini. 812 00:40:02,450 --> 00:40:04,820 PHP mempunyai operator titik, yang melakukan hal ini. 813 00:40:04,820 --> 00:40:09,710 JavaScript mempunyai pengendali ditambah, yang membingungkan adalah seperti Java. 814 00:40:09,710 --> 00:40:11,440 Sekarang apa yang berlaku di sini? 815 00:40:11,440 --> 00:40:14,260 >> Jadi, di sinilah asas pemahaman tentang gambar yang 816 00:40:14,260 --> 00:40:17,010 kita muntah pasangan hari lalu datang ke dalam bermain. 817 00:40:17,010 --> 00:40:19,620 Ingat ketika kami mempunyai mudah versi HTML page-- 818 00:40:19,620 --> 00:40:20,830 ia hanya berkata, hello world. 819 00:40:20,830 --> 00:40:22,770 Dan kemudian kita menarik pokok di sebelah kanan, yang 820 00:40:22,770 --> 00:40:27,320 telah mempunyai banyak segi empat dan garis menghubungkan mereka seperti pohon keluarga. 821 00:40:27,320 --> 00:40:30,820 Jadi itulah yang dipanggil DOM atau Document Object Model. 822 00:40:30,820 --> 00:40:36,759 Dan ternyata bahawa anda boleh mengakses segi empat tepat di pohon dengan sintaks 823 00:40:36,759 --> 00:40:37,550 seperti berikut ini. 824 00:40:37,550 --> 00:40:41,370 Anda benar-benar mengatakan dokumen, yang merupakan variabel global khusus dalam JavaScript 825 00:40:41,370 --> 00:40:45,890 program yang mempunyai fungsi yang yang berkaitan dengannya yang boleh anda akses 826 00:40:45,890 --> 00:40:50,280 sama dengan struct, tetapi anda hanya mengatakan titik dan nama fungsi, 827 00:40:50,280 --> 00:40:52,390 mendapatkan elemen dengan ID. 828 00:40:52,390 --> 00:40:55,460 >> Elemen yang saya mahu dapatkan adalah nampaknya quote nama tanda kutip. 829 00:40:55,460 --> 00:40:57,150 Dan kemudian saya ingin mendapatkan nilainya. 830 00:40:57,150 --> 00:40:58,330 Sekarang kita mendapat lebih awal daripada diri kita sendiri. 831 00:40:58,330 --> 00:41:00,038 Saya tidak pasti apa yang semua ini adalah tentang. 832 00:41:00,038 --> 00:41:03,000 Mari kita maju cepat ke HTML pada halaman, yang super mudah. 833 00:41:03,000 --> 00:41:05,370 >> Perhatikan bahawa Aku telah menetapkan yang membentuk di sini. 834 00:41:05,370 --> 00:41:07,940 Perhatikan Aku telah memberikannya yang unik ID, walaupun kita sudah tidak digunakan 835 00:41:07,940 --> 00:41:08,870 atribut ini sebelumnya. 836 00:41:08,870 --> 00:41:11,300 Tapi ini wujud dalam HTML. 837 00:41:11,300 --> 00:41:15,570 Anda unik boleh mengenal pasti beberapa potongan HTML dengan pengecam seperti ini. 838 00:41:15,570 --> 00:41:19,880 >> Perhatikan sekarang this-- ternyata HTML menyokong, per bahawa senarai dobi 839 00:41:19,880 --> 00:41:22,490 saat yang lalu, keseluruhan sekumpulan pengendali acara. 840 00:41:22,490 --> 00:41:25,060 Dan pengendali acara ini yang tertulis di hantar. 841 00:41:25,060 --> 00:41:28,730 Pada pengemukaan pengguna ini bentuk, panggil kod berikut. 842 00:41:28,730 --> 00:41:31,360 Dan kod yang akan untuk dipanggil atau disempurnakan 843 00:41:31,360 --> 00:41:35,260 adalah tepat ini, Yunani fungsi diikuti dengan pulangan palsu. 844 00:41:35,260 --> 00:41:37,360 Segala sesuatu yang lain harus menjadi cukup akrab. 845 00:41:37,360 --> 00:41:42,050 >> Di sini merupakan input dari jenis teks, di mana ID, dalam kes ini, akan menjadi nama. 846 00:41:42,050 --> 00:41:45,430 Kami tidak mempunyai atribut nama sebenar time-- ini dan butang hantar. 847 00:41:45,430 --> 00:41:48,330 Jadi halaman yang dihasilkan kelihatan seperti ini. 848 00:41:48,330 --> 00:41:52,890 Dan tingkah laku yang dihasilkan, Anda akan melihat, seperti di bawah. 849 00:41:52,890 --> 00:41:56,940 Halaman itu tuan rumah tempatan berkata, halo Daud, hampir tidak dari segi estetik 850 00:41:56,940 --> 00:41:58,340 cara untuk menyambut pengguna. 851 00:41:58,340 --> 00:41:59,950 Tetapi apa yang sebenarnya berlaku? 852 00:41:59,950 --> 00:42:01,360 >> Nah, mempertimbangkan apa ini. 853 00:42:01,360 --> 00:42:02,310 Ini adalah medan teks. 854 00:42:02,310 --> 00:42:04,635 Dan menurut HTML di sini, saya telah memberikannya 855 00:42:04,635 --> 00:42:07,350 pengecam unik disebut sebut nama tanda kutip. 856 00:42:07,350 --> 00:42:09,770 Sementara itu, saya telah berkata apabila pengguna menghantar borang ini 857 00:42:09,770 --> 00:42:13,820 dengan menekan Enter atau klik Submit butang, memanggil fungsi yang disebut Greet 858 00:42:13,820 --> 00:42:15,410 dan kemudian kembali Palsu. 859 00:42:15,410 --> 00:42:16,870 Mari kita menganggap mereka secara terbalik. 860 00:42:16,870 --> 00:42:20,590 Perhatikan apabila saya klik Submit, yang URL halaman ini tidak berubah. 861 00:42:20,590 --> 00:42:22,420 Ikon browser tidak bermula berputar. 862 00:42:22,420 --> 00:42:27,050 Saya tidak ke mana-mana, dan itu secara harfiah kerana saya berkata kembali Palsu. 863 00:42:27,050 --> 00:42:31,534 Kembali litar pintas palsu atau berhenti kelakuan lalai dari borang. 864 00:42:31,534 --> 00:42:33,700 Sehingga kemudian meninggalkan kami dengan ini pertanyaan terakhir satu. 865 00:42:33,700 --> 00:42:34,764 Apa Greet lakukan? 866 00:42:34,764 --> 00:42:36,680 Nah, Salam nampaknya memanggil fungsi yang dipanggil 867 00:42:36,680 --> 00:42:39,250 Alert, lewat di salah satu hujah panjang itu 868 00:42:39,250 --> 00:42:43,950 hasil daripada concatenating bersama-sama sekumpulan substrings, hello ruang koma, 869 00:42:43,950 --> 00:42:45,810 maka apa pun ini kembali. 870 00:42:45,810 --> 00:42:51,490 Jadi dokumen adalah seperti global variabel dengan akar pohon itu, 871 00:42:51,490 --> 00:42:55,560 memanggil fungsi khas, jika tidak, kini dikenali sebagai kaedah a. 872 00:42:55,560 --> 00:42:57,650 Fungsi itu dalam pembolehubah adalah 873 00:42:57,650 --> 00:42:59,640 dikenali sebagai kaedah dan bukannya fungsi. 874 00:42:59,640 --> 00:43:01,570 >> Oleh itu elemen dengan KTP. 875 00:43:01,570 --> 00:43:03,940 Apa elemen yang anda ingin mendapatkan dengan ID? 876 00:43:03,940 --> 00:43:06,970 Sebutkan nama dan tanda kutip kemudian secara khusus menghargai. 877 00:43:06,970 --> 00:43:12,000 Jadi dengan kata lain, kod yang hanya mendapati medan teks di mana ID adalah nama 878 00:43:12,000 --> 00:43:13,380 dan kemudian mendapat nilainya. 879 00:43:13,380 --> 00:43:16,460 Jadi, jika saya mengubah ini dan berkata Davin bukan Daud, 880 00:43:16,460 --> 00:43:20,670 dan klik Submit, sekarang kita mempunyai ucapan untuk Davin. 881 00:43:20,670 --> 00:43:22,890 >> Baiklah, jadi semua baik dan bagus. 882 00:43:22,890 --> 00:43:25,480 Tetapi mari kita lihat jika kita boleh membuat ini sedikit lebih bersih kerana hanya 883 00:43:25,480 --> 00:43:28,190 menulis kod seperti ini adalah umumnya akan disukai. 884 00:43:28,190 --> 00:43:30,060 Ini akan kelihatan menakutkan. 885 00:43:30,060 --> 00:43:32,330 Tetapi apa yang pertama perbezaan bahawa anda ambil perhatian di sini 886 00:43:32,330 --> 00:43:35,970 dalam versi ini selain nama berubah untuk DOM satu? 887 00:43:35,970 --> 00:43:41,110 Apa struktur kelihatan berbeza tentang perkara ini berbanding yang lain? 888 00:43:41,110 --> 00:43:41,932 Ya? 889 00:43:41,932 --> 00:43:43,890 PENONTON: Apakah borang di atas script ini? 890 00:43:43,890 --> 00:43:46,570 DAVID MALAN: Ya, bentuk adalah di atas script untuk sebab-sebab tertentu yang aneh. 891 00:43:46,570 --> 00:43:48,736 Jadi itulah perkara pertama yang yang melompat keluar pada saya juga. 892 00:43:48,736 --> 00:43:50,990 Dan bersyukur kerana sekurang-kurangnya, bahagian ini adalah sama. 893 00:43:50,990 --> 00:43:53,470 Jadi satu-satunya perkara yang seolah-olah untuk berbeza adalah ini. 894 00:43:53,470 --> 00:43:55,296 >> Jadi, inilah yang rapi kira-kira 2 JavaScript. 895 00:43:55,296 --> 00:43:57,420 Dan itu membuat ia sukar untuk memahami pada pandangan pertama, 896 00:43:57,420 --> 00:44:00,670 terutamanya bagi projek-projek akhir jika Anda sedang melihat contoh kod dalam talian, 897 00:44:00,670 --> 00:44:04,200 tetapi itu bermuara pada beberapa ciri sintaksis asas. 898 00:44:04,200 --> 00:44:06,230 Di sini sekali lagi adalah bahawa dokumen pembolehubah global. 899 00:44:06,230 --> 00:44:09,540 Di sini sekali lagi adalah bahawa kaedah atau fungsi yang mengatakan mendapatkan elemen dengan ID. 900 00:44:09,540 --> 00:44:11,570 Kali ini saya ingin mendapatkan ID dipanggil demo. 901 00:44:11,570 --> 00:44:12,490 Di mana itu? 902 00:44:12,490 --> 00:44:15,400 Itu nampaknya tepat di sini, borang itu sendiri. 903 00:44:15,400 --> 00:44:20,010 >> Dan kini melihat bahawa nampaknya jika saya kembali bahawa nod dari pohon yang 904 00:44:20,010 --> 00:44:22,940 mewakili bentuk itu sendiri, bukan medan teks, 905 00:44:22,940 --> 00:44:26,970 ternyata bentuk itu, yang nod atau persegi panjang dari pohon, 906 00:44:26,970 --> 00:44:30,450 mempunyai apa yang kita akan panggil harta, sangat, sangat, sangat mirip 907 00:44:30,450 --> 00:44:35,390 semangat yang struct dalam C. Ia hanya ahli data di dalam persegi panjang ini. 908 00:44:35,390 --> 00:44:38,300 >> Jadi aku punya bentuk di sini, dan saya melampirkan, 909 00:44:38,300 --> 00:44:44,650 atau aku memberi, untuk Sawijining Hantar pengendali atau lebih tepatnya Di Hantar harta 910 00:44:44,650 --> 00:44:45,740 fungsi berikut. 911 00:44:45,740 --> 00:44:49,000 Dan ini adalah, setakat ini, yang paling gila hal yang selama ini sintaksis. 912 00:44:49,000 --> 00:44:53,610 Ternyata dalam JavaScript dan dalam PHP, dan terus terang dalam hal ini dalam bahasa C, 913 00:44:53,610 --> 00:44:58,990 walaupun kita tidak melakukannya, anda boleh menambah tanpa nama, tanpa nama, atau AKA lambda 914 00:44:58,990 --> 00:45:03,000 fungsi-fungsi yang tidak mempunyai nama yang tetapi boleh dipanggil tetap. 915 00:45:03,000 --> 00:45:07,050 >> Jadi apa yang saya lakukan di sini adalah Aku menugaskan ini On Hantar hartanah yang 916 00:45:07,050 --> 00:45:14,330 berada di dalam nod ini pokok DOM saya, fungsi, fungsi penunjuk jika anda akan. 917 00:45:14,330 --> 00:45:16,310 Fungsi yang tidak ada nama, tetapi itu tidak 918 00:45:16,310 --> 00:45:19,110 percaya kita akan melihat dalam sekejap bagaimana untuk menyebutnya. 919 00:45:19,110 --> 00:45:21,780 Apabila fungsi ini dipanggil, kod ini dijalankan, maka 920 00:45:21,780 --> 00:45:24,210 palsu dikembalikan seperti sebelumnya. 921 00:45:24,210 --> 00:45:25,800 >> Tetapi melihat apa yang saya lakukan. 922 00:45:25,800 --> 00:45:27,830 Pada ketika ini di cerita, saya mempunyai borang. 923 00:45:27,830 --> 00:45:30,190 Ia mempunyai ID unik yang dikenali sebagai demo. 924 00:45:30,190 --> 00:45:33,740 Di sini, saya mempunyai tag script yang melaksanakan kod berikut. 925 00:45:33,740 --> 00:45:37,720 Ia melekat dengan nod di pohon untuk itu Pada Hantar 926 00:45:37,720 --> 00:45:40,260 harta fungsi ini di sini. 927 00:45:40,260 --> 00:45:44,310 Dan hanya dengan sifat bagaimana pelayar bekerja, apabila saya sekarang klik Hantar atau tekan Enter, 928 00:45:44,310 --> 00:45:45,889 fungsi yang akan dipanggil. 929 00:45:45,889 --> 00:45:48,680 Ia tidak memerlukan nama kerana yang sih peduli apa namanya. 930 00:45:48,680 --> 00:45:52,540 Satu-satunya masa ia pernah akan mendapatkan disebut ialah apabila saya serahkan borang tersebut. 931 00:45:52,540 --> 00:45:55,130 Tidak perlu bagi saya, pemaju manusia, 932 00:45:55,130 --> 00:45:57,330 untuk benar-benar menyebutnya di tempat lain. 933 00:45:57,330 --> 00:46:00,720 >> Sekarang hanya sebagai teaser, seolah-olah bahawa tidak keberatan cukup lipatan, 934 00:46:00,720 --> 00:46:03,330 kita bahkan dapat membuat ini kelihatan lebih samar menggunakan 935 00:46:03,330 --> 00:46:05,850 perpustakaan super popular dipanggil jQuery. 936 00:46:05,850 --> 00:46:08,760 Malah jQuery dan JavaScript sering dicampurkan. 937 00:46:08,760 --> 00:46:12,790 Dan apa yang kita akan lakukan pada hari Rabu adalah satu permulaan menggunakan bahasa ini dan perpustakaan ini 938 00:46:12,790 --> 00:46:16,030 untuk membina semakin tak segerak dan aplikasi dinamik 939 00:46:16,030 --> 00:46:18,950 seperti peta mendapatkan aplikasi, aplikasi 940 00:46:18,950 --> 00:46:22,360 yang update laman web secara real masa, seperti Facebook atau Gchat 941 00:46:22,360 --> 00:46:27,130 lakukan, dan tidak lagi membataskan diri kita kepada Memukul Dikirim oleh mendapatkan atau hanya jawatan 942 00:46:27,130 --> 00:46:27,630 sahaja. 943 00:46:27,630 --> 00:46:29,055 Jadi saya akan melihat anda pada hari Rabu. 944 00:46:29,055 --> 00:46:31,805 945 00:46:31,805 --> 00:46:35,550 >> [MUSIK BERMAIN] 946 00:46:35,550 --> 00:48:09,728