[MUSIC PLAYING] DAVID J. Malan: Baiklah. Selamat datang kembali. Ini adalah CS50. Ini adalah akhir minggu 8. Dan seperti yang Anda tahu, kami memiliki cukup jam kantor biasa dalam beberapa dari ruang makan, termasuk Annenberg. Dan beberapa tim ramah mengambil beberapa foto akhir-akhir ini. Dan untuk menghormati Halloween, kami pikir kami akan berbagi satu yang agak tertangkap kita oleh kejutan di sini di Annenberg Hall tepat malam itu. Classmate Anda Yakub berpose untuk foto ini, tapi lebih lucu berada di Facebook, yang berikutnya Percakapan yang terjadi sesudahnya. 

Posting pertama dalam menanggapi untuk foto nya ini. Beberapa menit kemudian, ia memutuskan untuk satu sampai dirinya dengan ini. Ia pergi kemudian pergi ke ini, dan kemudian, bahkan lebih menggelikan adalah ketika ibunya menimpali. Dan kemudian akhirnya, tampaknya ini hanya tipu muslihat yang indah untuk bermain yang terjadi. 

Jadi, jika Anda ingin untuk melihat Yakub dan lain-lain, di antara mereka Cynthia Meng, siapa di balik layar dari staf zona CS50, kepala ke URL ini dan bermain ini di sini. Jadi tanpa basa-basi lagi, hari ini kita terus tampilan ini di pemrograman web, dan penciptaan sebenarnya program yang tidak dijalankan pada baris perintah Anda, tetapi berjalan di dalam browser. 

Agaknya sekarang, atau sangat tak lama, Anda akan berada di tengah-tengah pelaksanaan web server Anda sendiri, yang berbeda dengan pemrograman web. Web server di pset6 adalah semua tentang menulis perangkat lunak yang tahu bagaimana untuk mengambil Permintaan HTTP dari browser, atau bahkan dari Anda, manusia, dengan program yang disebut Telnet, dan kemudian menanggapi permintaan tersebut baik dengan menyemburkan file HTML, atau jpeg, atau gif, atau bahkan file php. 

Tapi dengan server web, itu tidak seharusnya hanya membuka file PHP, sesuatu yang berakhiran .php, dan kemudian meludahkan isi. Ini seharusnya dilakukan apa yang harus file yang pertama? Sehingga untuk berbicara. Tidak compile, kita mengatakan pada hari Senin, tapi rather-- Jadi, menafsirkannya. 

PHP adalah bahasa ditafsirkan, dan sebagainya salah satu fitur kunci dalam web Anda Server, meskipun dilaksanakan oleh kami, adalah kemampuannya ini untuk server web Anda untuk melihat, oh. Ini adalah file yang berakhir dengan php. Biar tidak hanya mengirimkannya ke pengguna seperti itu konten statis, melainkan biarkan aku membacanya baris demi line, kiri ke kanan, dan menafsirkannya. 

Dan untuk melakukan, bahwa Anda orang pada dasarnya akan menyepak bola ke program dalam alat, dan pada banyak sistem komputer, hanya disebut PHP. Itu adalah nama PHP penerjemah bahasa sendiri itu. Jadi, bagian yang kita menerapkan untuk Anda, dan apa yang tersisa untuk Anda, akhirnya, adalah angka potongan, di antaranya menerapkan dukungan untuk konten statis. 

Tapi sekarang, dan dengan permasalahan yang tujuh, kau akan mulai transisi ke sebenarnya menulis kode PHP yang akan ditafsirkan dalam berbicara dengan back end database yang menyimpan informasi. Jadi mari kita lebih memahami dulu beberapa superglobals ini dan berapa banyak kekuatan yang Anda keluar dari kotak gratis dengan bahasa seperti PHP. Hal-hal yang tidak memiliki untuk melaksanakan sendiri. 

Jadi, kita melihat pada hari Senin $ _GET, yang merupakan superglobal sebuah, yang hanya PHP berbicara untuk global variabel Anda dapat mengakses di mana saja. Dan apa yang ada di dalamnya dari $ _GET? Apa isinya ini superglobal yang kita lihat? Tentunya statistik pada Setidaknya satu orang tahu. Apa yang ada didalam dari $ _GET? Ya? 

AUDIENCE: Ini adalah variabel Anda masukkan ke dalam string query. 

DAVID J. Malan: Perfect. Ini adalah variabel yang dimasukkan ke dalam string query. Jadi, dalam contoh kita yang lebih tua dari reimplementing Google ketika kita harus URL, dan kemudian tanda tanya, yang demarcates awal HTTP parameter, maka kita memiliki q sama sesuatu, seperti q sama kucing, apa yang akan otomatis masuk ke dalam itu $ _GET global super untuk Anda, karena PHP, adalah kunci dari Q, dan nilai daripadanya kucing. 

Dengan kata lain, $ _GET dan semua hal-hal ini adalah array asosiatif, tabel hash macam, yang kunci toko dan nilai-nilai. Sekarang, kembali pset5, hash meja Anda mungkin telah dilaksanakan, atau mencoba Anda mungkin telah menerapkan, benar-benar secara efektif asosiatif array, struktur data dimana Anda dapat mengaitkan kunci dengan nilai-nilai. 

Namun dalam pset5, nilai-nilai yang sepele. Nilai pada dasarnya benar atau salah. Adalah kata dalam kamus? Jadi, ketika Anda hash kata seperti apple untuk melihat apakah apel dalam kamus, fungsi cek Anda mungkin kembali benar atau salah. Jadi, itu efektif nilai kita sudah kembali. 

Tapi kami melihat pada hari Senin sebentar, Anda pasti bisa mengasosiasikan lebih menarik nilai-nilai dari sekedar benar atau salah dengan kunci, seperti apel. Anda benar-benar bisa mengembalikan sewenang-wenang tali, dan memang, itulah yang $ _GET dan ini variabel lain membiarkan Anda melakukan. 

Jadi $ _POST mirip dalam roh, tetapi jika Anda mengirimkan formulir melalui pos, metode HTTP yang berbeda itu digunakan untuk hal-hal seperti kartu kredit, dan informasi pribadi, dan bahkan informasi biner seperti foto, hal-hal berakhir dalam $ _POST. Dan sebenarnya untuk file seperti JPEG dan yang lainnya, bahkan ada lain yang tidak di sini disebut $ _FILES juga. 

Jadi, server yang kita tidak akan memikirkan terlalu banyak, tapi itu memberi Anda akses untuk menyortir rincian tingkat yang lebih rendah tentang server itu sendiri yang Anda gunakan. Cookie dan sesi, meskipun, kita secara efektif akan lihat sekarang. Yang terakhir adalah apa yang kita gunakan untuk mengimplementasikan gagasan keranjang belanja. Yang super sederhana, tapi ingat bahwa kita memiliki contoh ini di sini, menghitung berapa kali Anda telah mengunjungi halaman ini sebelumnya. 

Tapi hari ini, bukan hanya melihat efek ini, mari kita membuka Chrome Inspektur, yang Anda biasanya dapat lakukan dengan mengklik kanan atau Control mengklik di mana saja pada halaman web, dan kemudian pilih memeriksa elemen. Atau Anda dapat pergi melalui menu yang yang kami jelaskan dalam spesifikasi pset6 ini. Dan aku akan ke tab Jaringan di sini, dan mari kita menonton sejenak lalu lintas HTTP yang akan kembali dan sebagainya. 

Izinkanlah aku pergi dahulu ke depan dan cache Chrome. Jadi beberapa dari Anda mungkin akrab dengan teknik ini sudah, dan kita akan menggunakannya untuk keperluan debugging sini. Sekarang kita sebagai komputer ilmuwan akan memulai melakukan hal ini untuk debugging tujuan, dimana kami akan menghapus cache, biasanya, sehingga kita bisa menyingkirkan hal-hal yang disebut cookies. Jadi Anda mungkin umumnya akrab dengan apa cookie, atau setidaknya bahwa mereka ada, tapi apa pemahaman Anda tentang mereka, hanya sebagai pengguna komputer, apa cookie? Ya. 

AUDIENCE: Ini sedikit of-- baik, tidak bit dalam jangka ilmu komputer. Ini adalah bagian dari data bahwa situs mengirimkan kepada Anda dalam rangka untuk dapat merekam statistik Anda. DAVID J. Malan: OK, baik. Jadi itu adalah bagian dari data bahwa Server, menempatkan ke komputer Anda, dan mari kita menggeneralisasi bahkan lebih, itu kunci value-- baik, yang semakin lebih tepat. Ini adalah bagian dari informasi, sepotong data, bahwa server dapat untuk menempatkan pada komputer Anda dan sangat sering, server melakukan ini sehingga untuk mengingat siapa Anda. Jadi misalnya, peluang adalah Anda mungkin login ke situs-situs seperti Facebook, atau Gmail, atau orang lain sebelumnya, dan Anda log in dengan Anda username dan password, dan kemudian setelah itu, untuk beberapa nomor menit atau jam atau bahkan berhari-hari, server ingat bahwa Anda, pada kenyataannya, login. Sekarang, bagaimana yang benar-benar terjadi? Karena Anda pasti tidak mengetik ulang username dan password setiap kali Anda menavigasi ke halaman yang berbeda di Facebook. Jadi ternyata cookie adalah jawabannya. 

Cookie yang dapat Anda pikirkan sebagai, semacam suka, tangan digital cap yang mungkin Anda dapatkan di sebuah hiburan taman atau klub yang pada dasarnya mengindikasikan Anda telah di sini sebelumnya, dan Anda sudah sudah menunjukkan ID Anda untuk bouncer, untuk Misalnya, dan bahwa klub atau taman sekarang harus berasumsi bahwa Anda telah dikonfirmasi sudah. Anda telah diidentifikasi oleh itu. 

Maka dengan itu dalam pikiran, mari kita membuka konter di sini. Biarkan aku pergi ke depan, aku baru saja melakukannya, dan menghapus semua cookie saya. Dan sekarang apa yang akan saya lakukan adalah terus tombol Shift, hanya untuk mengukur baik, dan secara paksa kembali halaman tersebut. Bergeser pastikan tidak ada yang mendapatkan cache. Dan inilah permintaan yang pergi bolak-balik. Jadi di sini kita memiliki permintaan, dan biarkan saya memperbesar di sini, dan banyak ini adalah rincian semacam menarik untuk sekarang bahwa browser memiliki otomatis dikirim, tapi mari kita klik View Sumber untuk melihat header mentah. 

Dan jika Anda sudah menyelam ke dalam pset6 sudah, Anda pasti akan mengenali hal-hal seperti ini, dan mungkin beberapa dari garis-garis lain di sini, tapi apa yang lebih menarik untuk hari ini jika saya gulir ke bawah, bukan ke permintaan tetapi untuk apa yang disebut respon, baris ini mungkin tampak akrab. Itu hal yang baik ketika Anda melihat 200 OK. Rupanya ini adalah tanggal dan waktu pada server dan ada banyak hal. Oh, ini menarik. 

Ternyata setiap kali Anda menggunakan PHP, setidaknya di server ini, server meludah keluar apa versi PHP yang Anda gunakan. Yang, sebenarnya, untuk keamanan tujuan, bukan hal yang baik. Tapi, kami akan datang kembali ke lain kali mungkin. Tapi sekarang ini adalah garis berair hari ini, dan kita melihat secara singkat beberapa hal tersebut, Saya pikir dengan Facebook ketika kita menjulurkan sekitar Inspektur pada waktu itu, Kumpulan Cookie adalah apa yang menanam yang sedikit sepotong informasi ke komputer Anda. 

Ini adalah header HTTP itu efektif mengatakan browser Anda, Chrome, IE, apa pun, hey toko browser pada pengguna hard drive, atau dalam RAM pengguna, sebuah kunci yang disebut PHPSESSID, yang merupakan notasi singkat untuk ID sesi, dan memberikan nilai 0vlk8t, dot, dot, dot. Sebuah semu sangat panjang String alfanumerik acak. Ini hanya beberapa yang benar-benar besar, tapi itu dikodekan dengan huruf dan angka sehingga ukuran dapat bahkan lebih besar dari angka-angka saja. Dan kemudian, by the way, Path = /, yang hanya berarti bahwa cookie ini harus terkait dengan keseluruhan website, bukan hanya spesifik Halaman semuanya. Jadi ini adalah bahwa cap tangan virtual. Seolah-olah server, Facebook, atau dalam kasus kami alat, memiliki 0vlk8t harfiah ditulis dan sebagainya, di tangan Anda. Perhatikan apa server itu, tidak melakukan itu tidak menyimpan nama pengguna saya, tentu tidak menyimpan kata sandi. 

Sebaliknya, tampaknya menjadi menyimpan informasi pseudo random sehingga tidak ada yang bisa menebak apa cap tangan saya. Di sisi server, Sementara itu, server akan ingat, mungkin dalam database atau sesuatu, bahwa pengguna, yang di masa depan menyajikan cap tangan 0vlk8t, dot, dot, dot, harus terkait dengan ini keranjang belanja tertentu, sehingga untuk berbicara. Dengan kata lain, jika saya sekarang pergi kembali ke sini dan kembali halaman ini, bagaimana server tahu yang saya kunjungi satu waktu? 

Atau jika saya melakukannya lagi, bagaimana server tahu bahwa saya telah mengunjungi dua kali? Nah jika saya pergi ke ini kebanyakan permintaan terbaru, yang sekarang ketiga bahwa saya telah mengirim secara total, perhatikan permintaan saya sekarang. Masih ini meminta di sini, sama seperti sebelumnya, masih ada seluruh bunch barang yang kami telah diabaikan seperti sebelumnya, tapi header yang terakhir, ini waktu, karena saya sudah pernah ke sini, adalah presentasi dari cap tangan maya ini. 

Dimana baris ini di sini, tidak mengatur cookie tapi kue usus PHPSESSI = 0vlk8t, itu hanya browser saya otomatis presentasi ini cap tangan sehingga sekarang server, segera setelah menyadari, ooh, ini adalah pengguna 0vlk8t dot, dot, dot, Saya sekarang dapat mengingat siapa dia atau dia dan reassociate dengan pengguna bahwa apa pun informasi yang saya ingin, dan semua informasi yang dapat disimpan oleh Anda, programmer, di $ _SESSION. 

Jadi harus jelas, jika saya membuka nyata cepat di gedit file yang sebenarnya, counter.php, dalam direktori publik tuan rumah lokal saya seperti sebelumnya, perhatikan bahwa, memang, Aku akhirnya menyimpan dalam $ _SESSION Kutipan tanda kutip "counter," nilai counter sebelumnya yang Saya dapatkan dari garis-garis ini di sini bahwa kita melihat terakhir kali ditambah satu. Jadi di bawah kap mesin, itu semua cookie. Hanya saja jenis digital cap tangan akan bolak-balik, dan terus terang jika Anda membuka Chrome Inspektur pada situs web apapun Anda mengunjungi hari ini, dengan Super probabilitas tinggi, Anda akan melihat mungkin satu, mungkin setengah lusin cookie yang diingat oleh Anda. 

Dan lebih buruk lagi, jika mereka situs web yang dikunjungi semua memiliki iklan, yang tentu sangat umum hari ini, dan jika iklan tersebut datang dari beberapa pihak pusat, seseorang seperti Google atau AdWords karena mereka memanggil salah satu produk mereka atau vendor seperti lainnya yang menjual iklan, yang menarik, dan terus terang apa sedikit mengkhawatirkan, tentang bagaimana HTTP bekerja, adalah bahwa jika Anda memiliki iklan tertanam di Facebook.com, dan Google.com, dan Harvard.edu, sejumlah website, jadi seperti bahwa ada orang tengah yang melayani up iklan untuk semua tiga dari situs-situs, ternyata bahwa cookie per domain. 

Jadi jika Anda memiliki iklan datang dari perusahaan yang sama pada website yang berbeda, perusahaan yang dapat secara efektif melacak siapa Anda di semua situs web tersebut. Harvard mungkin tidak tahu Anda mengunjungi Facebook. Facebook mungkin tidak tahu dan Anda mengunjungi Harvard. Tapi apa pun layanan iklan mereka gunakan jika domain yang hadir di kedua web Harvard.edu halaman dan Facebook.com halaman web, orang tengah ini pasti tahu siapa Anda karena kue ini dibagi seberang, atau lebih tepatnya pada, bahwa apa yang disebut perantara. 

Jadi kami akan kembali ke ini implikasi keamanan daripadanya, tapi ada banyak informasi disimpan tentang Anda setiap kali Anda kunjungi hampir semua halaman web pada internet dan itu benar-benar tereduksi menjadi mekanisme yang sangat sederhana ini. Apa yang terjadi, kemudian, jika Anda super paranoid dan Anda memutuskan untuk pergi ke Chrome atau IE atau apa pun dan mematikan cookies Anda? Apa yang terjadi? Ya? Anda really-- Anda telah dilakukan dengan benar ini? OK. Tidak, pergi ke depan. 

AUDIENCE: website tertentu tidak memiliki fungsi tanpa itu seperti Facebook. DAVID J. Malan: Yeah! Website begitu yakin hanya akan berhenti bekerja. Dan dalam kebanyakan situs hari ini yang fundamental bergantung pada cookie, terutama jika mereka memiliki Anda log di, mereka hanya akan istirahat. Karena mempertimbangkan alternatif, jika website tidak memiliki cara untuk mengingat siapa Anda, dan karena itu web browser Anda tidak mewakili dengan setiap HTTP permintaan cap tangan ini, efektif website seperti yang sedang berlangsung Facebook harus meminta Anda untuk login setiap kali menisik Anda mengubah halaman, atau klik link, yang jelas bukan pengguna yang sangat baik pengalaman. 

Sehingga ada juga, adalah antara trade off. Jadi tanpa basa-basi lagi, mari kita begitu saja bahwa dengan pemrograman web, dalam bahasa seperti PHP, Anda dapat mengingat Informasi seperti itu di permasalahan yang tujuh ketika Anda menerapkan Anda sendiri E * Trade-seperti website yang dapat digunakan untuk membeli dan menjual saham, Anda akan ingat persis apa yang user telah dibeli dan dijual dan siapa dia atau dia dengan cara sesi ini. Tapi kita akan membutuhkan cara menarik daripada email untuk mulai menjaga informasi sekitar. Benar? 

Pada hari Senin, kita berbicara tentang Frosh IM dan bagaimana dalam versi salah satu dari situs tersebut, tahun yang lalu, semua yang kita lakukan adalah email Proctor siapa yang bertanggung jawab atas olahraga intramural Program, nama, dan jenis kelamin, dan apakah atau tidak mereka kapten, dan asrama dari seseorang yang mendaftar untuk olahraga intramural. Jadi itu tidak buruk, tapi dia kemudian harus troll melalui email mereka, membuat spreadsheet atau sesuatu seperti itu, untuk menjaga semuanya terorganisir. Jadi pasti kita sebagai programmer dapat melakukan ini untuk pengawas itu. Dan masuk dalam SQL, Structured Query Language, yang akan terlihat cantik berbeda untuk kedua C dan PHP, dan Anda akan menyelam di lebih banyak tangan pada PHP dan masalah memisahkan tujuh tetapi juga SQL, atau SQL, ini adalah bahasa yang Anda gunakan untuk berbicara dengan database. 

Tapi apa database? Baik Anda memikirkan Database, setidaknya untuk saat ini, sebagai hanya menjadi seperti file Excel, atau jika Anda seorang Mac nomor pengguna file, atau jika Anda seorang Google Apps pengguna spreadsheet Google, itu efektif database, atau benar-benar khususnya database relasional. Sebuah database relasional hanya sesuatu yang memiliki baris dan kolom, dan Anda dapat menyimpan segala jenis informasi dalam baris atau kolom tersebut. 

Tapi apa yang baik tentang SQL, dan tentang database yang sebenarnya, bukan hanya spreadsheet atau Google spreadsheet, adalah bahwa Anda dapat menggunakan bahasa untuk benar-benar mengeksekusi query ke memasukkan data, untuk menghapus data, untuk mencari data, bahkan yang paling penting, dan Anda tidak harus menggunakannya cukup secara manual seperti yang mungkin Anda biasanya Google spreadsheet seperti ini. 

Jadi di SQL, ada sekelompok laporan fundamental atau potongan fungsi built in. Ada banyak lebih dari ini, tetapi Anda dapat pergi jarak besar hanya dengan mengetahui bahwa bahasa ini disebut SQL memiliki setidaknya empat Laporan Anda dapat memanfaatkan. 

Hapus, untuk menghapus data, Masukkan, untuk menambahkan baris, Update, untuk mengubah baris, dan Memilih, untuk mendapatkan kembali baris dan itu memang apa SQL tidak. Ini beroperasi sepenuhnya pada baris sehingga bahwa ketika Anda memasukkan, atau menghapus, atau update, atau pilih apa yang Anda mendapatkan kembali sebagai disebut set hasil, seperti sebuah array dari baris. Sekelompok baris dari tabel. 

Jadi kembali pada hari, dan bahkan sampai hari ini, Anda dapat berinteraksi dengan database menggunakan baris perintah, tapi itu tidak terlalu menyenangkan untuk digunakan jendela hitam dan putih gaya ini dan benar-benar menjalankan perintah dan menyodok sekitar database Anda. Sebuah antarmuka pengguna grafis, atau GUI, jauh lebih disukai, bisa dibilang, dan jadi alat kami sarankan dan terinstal untuk Anda pada alat disebut phpMyAdmin. Ini total kebetulan bahwa nama hal ini memiliki PHP di dalamnya, itu hanya berarti bahwa orang-orang yang menulis program ini sendiri menulisnya di PHP. 

Tapi itu akhirnya tentang administrasi server database, seperti server MYSQL yang mungkin Anda miliki, seperti yang Anda dilakukan, dalam alat CS50. Jadi ada lebih detail di sini daripada kita perlu peduli hari ini, tapi apa kuncinya adalah bahwa di sebelah kiri sisi adalah daftar database yang Anda miliki di komputer Anda, pada alat CS50 Anda, atau datang proyek akhir yang Anda mungkin terhadap pihak ketiga, perusahaan situs atau web server, yang Anda mungkin membayar untuk ruang. Jadi di sebelah kiri adalah database, salah satunya adalah pset7 yang saya pinjam dari depan minggu pset, dan kemudian di atas ada melihat ada sekelompok tab, salah satunya adalah database, SQL, status, pengguna, ekspor dan sebagainya. Jadi Anda bisa pergi lama cara hanya dengan menyadari bahwa sebagian besar user interface ada di kolom kiri atas dan di bagian atas di atas sana. Jadi apa yang bisa kita benar-benar melakukan hal ini? Nah, mari kita mulai membuat bit informasi sebagai berikut. 

Misalkan berikut ini terjadi, sebagaimana akan hanya dalam beberapa hari, Anda ingin menerapkan situs, yang disebut CS50 Keuangan, dan website ini memungkinkan Anda membeli mengutip tanda kutip dan menjual saham. Dan itu akan mencari tahu harga saham-saham, akhirnya Anda akan melihat, dengan berbicara dengan Yahoo Finance. Yang, luar biasa, memiliki layanan gratis dimana Anda dapat lulus dalam ticker saham seperti GOOG untuk Google, dan akan memberikan kembali saham Google saat ini harga dalam masa lalu beberapa menit setidaknya. 

Jadi, Anda akan menggunakan itu, pada akhirnya, berpura-pura untuk pengguna untuk membeli dan menjual aktual saham menggunakan uang virtual, tapi hal pertama pengguna akan melihat adalah layar login ini yang meminta mereka untuk username dan password mereka. Dan, salah satu yang pertama tantangan untuk Anda dalam pset7 akan menjadi menerapkan back end database, spreadsheet jika Anda mau, yang akan menyimpan pengguna nama dan password dan akhirnya apa saham yang mereka miliki, dan berapa banyak, dan berapa banyak uang tunai yang mereka miliki, sehingga banyak hal-hal lain di meja lainnya, atau spreadsheet. 

Jadi mari kita lihat bagaimana ini mungkin muncul pada pandangan pertama. Aku akan kembali ke alat dan aku akan pergi ke URL ini di sini phpMyAdmin localhost / phpmyadmin dan Anda akan melihat bahwa itu membawaku ke sebuah antarmuka persis seperti yang kita lihat pada screen shot, dan di sini saya memiliki database tambahan disebut kuliah untuk hari ini dan biarkan aku pergi ke depan pertama dan klik pada pset7. 

Saya tampaknya memiliki beberapa pilihan, satu untuk yang baru, untuk membuat tabel baru, dan link ke pengguna, yang adalah tabel saya sudah dibuat. Jadi apa meja? Jadi jika Anda menggunakan Excel sebelumnya, dan jika Anda sudah nomor bekas atau Google Spreadsheet, Anda membuka jendela dan Anda mendapatkan seluruh bunch baris dan kolom, tapi kemudian Anda biasanya memiliki lembar kerja sepanjang bagian bawah, atau tab terpisah. Anda dapat menganggap masing-masing worksheet sebagai sebuah tabel sehingga database yang, pada akhirnya, adalah kombinasi dari satu atau lebih tabel, satu atau lebih lembar kerja, di dunia spreadsheet normal. Jadi biarkan aku pergi ke depan dan klik pada lembar kerja ini bahwa aku premade, yang disebut pengguna, a.k.a. Tabel database. Dan jika saya gulir ke bawah sini, biarkan aku tampilannya keluar sedikit, ini adalah apa phpMyAdmin memberitahu kita adalah di dalam tabel ini sekarang. Ini sedikit membingungkan pada awalnya sekilas karena UI tidak hal tercantik di dunia, tetapi apa yang menarik adalah bagian ini di sini. ID, nama pengguna, dan hash. 

Di muka, dan Anda akan tangan ini dalam masalah set tujuh, kami memberikan file yang berisi super tabel database kecil, meminjam sebenarnya dari edisi hacker masalah mengatur dua, dalam yang ada enam baris. Satu untuk Belinda semua jalan ke satu untuk Zamyla, dan perhatikan di sebelah kiri mereka Username ID unik seperti, dua, tiga, empat, lima, enam, bilangan bulat, dan kemudian ke kanan adalah hash. 

Dan jika, kemungkinan besar, Anda tidak melakukan masalah edisi hacker mengatur dua, tapi hash adalah seperti sebuah terenkripsi sandi dengan beberapa batasan. Jadi, apa yang Anda lihat di sini adalah versi terenkripsi dari semua enam password kita dari masalah mengatur dua edisi hacker. Sekarang ke kiri hanya beberapa hal GUI, mengedit baris ini, menyalin baris ini, menghapus baris ini. 

Namun yang menarik sekarang adalah sebagai berikut. Aku benar-benar bisa mulai bereksperimen dengan tabel ini. Jadi jika saya pergi dan klik SQL tab, saya mendapatkan kotak teks besar ini. Dan ini bukan bagaimana kita akan melakukannya ketika benar-benar menulis kode. Untuk menjadi jelas, phpMyAdmin hanyalah alat yang akan membiarkan kita melihat-database dan mari kita bereksperimen dengan pertanyaan. 

Jadi misalnya, anggaplah Saya jalankan persis ini. Pilih, yang merupakan salah satu dari mereka kata kunci yang saya sebutkan sebelumnya, bintang, yang mewakili semua kolom dalam sebuah tabel. Dari apa tabel? Nah, pengguna. Dan pemberitahuan ada ini konvensi aneh di SQL di mana Anda benar-benar menggunakan kembali kutu, biasanya, tanda kutip tidak tunggal dan tanda kutip tidak ganda ketika Anda berbicara tentang nama-nama tabel, sehingga kutipan belakang adalah hal pada atas tangan kiri keyboard Anda yang paling mungkin. 

Jadi biarkan aku pergi ke depan sekarang dan hanya meninggalkan itu saja dan gulir ke bawah dan klik Go, dan kami benar-benar akan melihat hal yang sama. Kami baru saja dieksekusi query SQL mengatakan pilih semua bintang dari tabel yang disebut pengguna, dan apa yang Anda dapatkan kembali adalah ini. Pada akhirnya, kita akan dapat melakukan hal yang sama dalam kode, tapi untuk sekarang semua saya ingin lakukan adalah melihatnya dalam browser saya. Nah mari kita lakukan sesuatu sedikit berbeda. Biarkan aku kembali ke tab SQL, dan mari kita hanya mengatakan bahwa apa? Zamyla telah kehilangan semua nya uang, dan oleh karena itu waktu bagi kita untuk menghapus dirinya sebagai pengguna. Dia tidak lagi log in. 

Jadi aku akan mengatakan menghapus from-- baik, mempertahankan kapitalisasi untuk konsistensi, hapus dari pengguna mana. Dan, kita dapat memiliki ini predikat, atau ini kualifikasi, pada akhir pernyataan saya di mana dan bagaimana saya bisa menghapus Zamyla? Oleh namanya Zamyla, sehingga kolom, salah satu kolom bernama, jadi di mana name = "Zamyla". Dan di sini saya menggunakan double tanda kutip atau tanda kutip tunggal, Anda hanya menggunakan bagian belakang kutu saat berbicara tentang nama-nama, misalnya, tabel atau field. Dan biarkan aku klik Pergi di sini. Dan sekarang, halaman web adalah menjadi sedikit tegang. 

Atau, apakah Anda benar-benar ingin mengeksekusi hapus dari pengguna mana nama sama Zamyla? Ya. Jadi sekarang, jika kita kembali ke meja saya dengan mengklik pengguna, perhatikan bahwa Hm. Aku melakukan kesalahan. Dan pada kenyataannya, aku agak diklik pergi begitu cepat Anda bahkan tidak melihat pesan kesalahan merah, mungkin. Apa yang saya lakukan salah? AUDIENCE: Anda tidak perlu untuk memanfaatkan namanya. DAVID J. Malan: Ya Saya dikapitalisasi namanya, tapi dia benar-benar username-- saya membuat beberapa kesalahan, kan? Satu, username nya adalah zamyla, huruf kecil Z, dan nama kolom nama pengguna, tidak nama, jadi mari kita melakukan ini lagi. Biarkan aku pergi ke depan dan menghapus dari pengguna mana nama sama dengan kutipan tanda kutip "Zamyla". Semua benar? Jadi ini terlihat sedikit lebih baik, biarkan aku pergi gulir ke bawah dan klik Go. Ini masih akan berteriak padaku untuk memastikan. Saya klik Yes, dan sekarang kita melihat, terus terang ini terjadi, benar-benar cepat, kurang dari satu kedua tentu, ini adalah persis query yang mendapat dieksekusi. Untuk konfirmasi, izinkan saya klik pengguna dan memang sekarang Zamyla hilang. Sekarang mari kita melakukan yang sebaliknya. Misalkan Gabe ingin mendaftar untuk website. Apa query SQL, apa perintah saya bisa mengetik untuk menambahkan Gabe? Yah itu cukup sederhana. Masukkan ke pengguna, dan sekarang itu mendapat sedikit samar. Saya harus menentukan, ke server, apa bidang saya ingin menetapkan. Saya tidak terlalu peduli apa Gabe ID nomor, jadi aku akan melewatkan itu. Aku bukannya akan mengatakan nama pengguna, hash, dan kemudian nilai-nilai saya ingin menempatkan ada akan menjadi Gabe. Dan kemudian hash, saya tidak tahu. Jadi untuk saat ini, aku akan meninggalkan bahwa sebagai besar untuk dilakukan. Kami akan kembali ke bahwa dalam masalah set spesifikasi bagaimana Anda benar-benar melakukan itu. 

Jadi perhatikan, sekali lagi, sintaks. Masukkan ke nama tabel, maka Daftar kurung dari ladang, kolom yang ingin Anda tambahkan nilai-nilai, dan kemudian hanya pemesanan yang sama persis tersisa untuk kanan dari nilai-nilai yang ingin Anda tambahkan, dan itu hanya membungkus karena teks agak panjang. Jadi sekarang biarkan aku klik Go. Satu baris dimasukkan. Dan jika aku kembali ke pengguna, yang menarik adalah bahwa tidak hanya Gabe sekarang di Database, apa yang tampaknya ID nya? 

Yah itu tujuh. Mengapa tujuh ketika saya tidak menambahkannya? Jadi ini juga merupakan salah satu fitur yang Anda dapatkan dari database. Banyak dibangun pada fungsi. Ternyata bahwa ketika menciptakan tabel ini, Saya telah dikonfigurasikan itu secara otomatis menetapkan ID sedemikian rupa yang akan menambahkan. Jadi jika Anda pernah menyodok sekitar, dan melihat Facebook ID apa Anda nomor adalah, hari ini tidak benar-benar hal yang harus dilakukan, tetapi Facebook sebagai API, Application Programming Interface, dimana Anda bisa mendapatkan kembali sejumlah besar data tentang diri sendiri, tentang teman-teman Anda, dan koneksi Anda. Dan apa yang digunakan untuk bersikap baik dingin, kembali pada hari, adalah untuk mencari apa yang Anda Nomor ID Facebook adalah. Mark Zuckerberg, misalnya, adalah tiga karena ia adalah penulis situs. Dan seperti ceritanya, dia menciptakan dua account pengujian, pengguna satu dan dua, yang kemudian dihapus. Dan, Zuck, seperti username di Facebook, adalah ID nomor tiga, dan kita semua memiliki nomor banyak lebih besar dari tiga hari ini. Bahkan, di beberapa titik Facebook pindah dari bahkan menggunakan int, yang adalah nilai 32-bit, menggunakan langkah berikutnya, dasarnya lama sehingga bahwa mereka bisa mengakomodasi bahkan lebih banyak pengguna mendaftar. Jadi fakta sejarah kecil yang menyenangkan. 

Jadi itu hanya sintaks dasar dengan yang kita mungkin mengeksekusi beberapa query, tapi kami benar-benar dapat melakukan banyak lebih banyak hal dengan SQL. Dan Anda akan melihat, akhirnya, di masalah set tujuh bahwa Anda harus membuat sejumlah keputusan desain, di antara mereka akan menjadi data apa jenis untuk digunakan. Jadi seperti di C, ada Data jenis dalam database, seperti MySQL, dan jenis data yang Anda miliki untuk memilih dari meliputi bidang ini di sini. Char, varchar, Int, besar int, desimal dan waktu saat ini, dan banyak lainnya. Jadi mari kita benar-benar melakukan hal ini. Mari kita berpura-pura bahwa kita tidak tangan Anda meja pengguna ini dan biarkan aku pergi ke depan dan membuat, untuk sendiri, dalam kuliah database-- benar-benar membiarkan aku pergi ke depan dan menghapus tabel yang saya miliki dalam sini sudah sehingga kita benar-benar dapat membuat ini. Whoops. Aku akan drop ini meja, dan sekarang aku akan pergi lagi ke kuliah basis data di sini, Aku akan membuat tabel disebut pengguna dan mari kita hanya melakukan tiga kolom awalnya dan klik Go. 

Sekarang, untuk sebagian besar, lagi, ini hanya menggunakan alat bantu grafis ini disebut phpMyAdmin, dan apa yang kita lakukan sekarang adalah menciptakan tabel. Jadi ini seperti pergi File, New, dan membuat file Excel baru. Jadi itu meminta saya beberapa pertanyaan, dari kiri ke kanan, apa nama kolom pertama, dan kemudian nama kolom kedua, dan nama ketiga. Jadi mari kita menciptakan ini. ID, dan kemudian nama itu satu, dan kemudian hash adalah lain. Jadi apa yang harus tipe data sekarang untuk bidang seperti ID? 

Berikut adalah seluruh daftar jenis data yang tersedia untuk Anda dalam database, dan untuk saat ini mari kita pergi dengan int. Nilai 32-bit, saya tidak berpikir realistis saya akan memiliki lebih dari 4 miliar pengguna di akun saya, dalam pelayanan saya, jadi aku akan terus bergerak ke pertanyaan berikutnya. Aku tidak akan menentukan panjang atau nilai-nilai, itu tidak berlaku di sini untuk int, per se. Dan sekarang aku dapat menentukan, Rupanya, default nilai, yang aku tidak akan menentukan. Sebuah pemeriksaan, saya tidak tahu apa itu. Sebuah atribut. Sekarang kita benar-benar melakukan memiliki keputusan desain. Jadi ada beberapa bidang di sini, tidak semua dari yang berlaku, tetapi unsigned hanya berarti apa? Bahwa int harus? Hanya non-negatif. Jadi itu harus 0 ke atas. Tidak, aku tidak akan memeriksa karena Saya ingin setiap pengguna memiliki ID, itu tidak dapat null. Dan kemudian, kita bisa lebih banyak keputusan desain yang menarik seperti ini. Kami akan kembali ke ini dalam sekejap, tapi apa fitur lain dari database adalah, adalah bahwa Anda dapat memberitahu server database pergi ke depan dan mengoptimalkan diri sendiri, Anda RAM dan ruang hard disk Anda, sehingga memilih, dan sisipan, dan menghapus, dan update yang sangat cepat. Kontras ini dengan pset5. 

Jika Anda ingin mencari sesuatu dalam tabel hash Anda, yang Anda anggap sebagai database, yang harus melakukan semua bekerja untuk membuat tabel hash Anda dengan cepat. Ini seperti, jelas, Anda. Benar? Anda harus dimasukkan ke dalam semua waktu baik-baik saja menyetel hal, mendapatkan fungsi hash benar, mencari tahu bagaimana banyak ember untuk memiliki. 

Tapi apa yang bagus, sekali lagi, tentang database adalah Anda hanya bergalah semua ini kepada orang lain yang berpikir ini melalui untuk Anda, dan apa Aku akan mengatakan di sini di bawah Indeks adalah bahwa bidang ID saya akan menjadi cara utama mengidentifikasi pengguna dalam database ini. Aku tidak akan berpikir dari Zamyla sebagai Zamyla, Aku akan memikirkan sebagai nomor 6. 

Mengapa, mungkin, lebih baik intuitif untuk memikirkan dan model setiap baris individu menggunakan sejumlah bukannya sesuatu seperti tali, seperti Zamyla atau Gabe atau lebih string yang masih? Ya? 

AUDIENCE: Sebuah ID unik? DAVID J. Malan: Katakanlah lagi? AUDIENCE: Sebuah ID unik? DAVID J. Malan: Sebuah ID unik, tapi suppose-- seperti kasus pada umumnya dengan username, misalkan Saya juga mengatakan hanya ada satu Zamyla di dunia, dan hanya satu Gabe. Aku bisa memaksakan keunikan kendala pada string juga, jika saya ingin. Jadi bukan pikiran buruk. 

AUDIENCE: Lebih aman. 

DAVID J. Malan: Lebih aman, mengapa? AUDIENCE: Anda tidak bisa membedakan mana adalah yang, seperti di pengguna. DAVID J. Malan: OK, Anda tidak bisa membedakan mana pengguna adalah yang jadi ada Aspek privasi untuk itu, terutama jika ID mungkin muncul di URL. Begitu yakin, yang bisa jenis pekerjaan, juga. Pikiran lain? Ya? 

AUDIENCE: Lebih mudah untuk melakukan operasi pada int. DAVID J. Malan: Itu kicker nyata. Hanya saja lebih efisien, atau lebih mudah untuk komputer, untuk melakukan operasi pada bilangan bulat. Benar? Int dijamin menjadi 32-bit, sedangkan Zamyla adalah beberapa karakter, Gabriel adalah beberapa karakter, Davenport benar-benar panjang, dan jadi tidak sangat efisien untuk digunakan string untuk membandingkan nilai-nilai dan mencari untuk bidang, dan bidang pembaruan, jika Anda bisa lolos dengan hanya satu bilangan bulat. Hanya 32 bit. Jadi nama pengguna, juga, cara ini, tidak harus unik, meskipun mereka mungkin harus menjadi, dan bahkan dengan cara ini juga pengguna dapat diizinkan untuk mengubah nya nama pengguna. 

Jadi mari kita sekarang meninggalkan ini sebagai Cara utama untuk mengidentifikasi pengguna. Ini memberitahu database pergi ke depan dan mengoptimalkan diri sehingga terlihat up di ID super cepat. AI, mengerikan bernama, hanya berarti Auto Increment, dan ini adalah cek kotak kita perlu memeriksa untuk menentukan bahwa bidang ID untuk secara otomatis diperbarui untuk saya, dan kemudian aku akan gulir ke kanan di sini dan terus terang aku tidak benar-benar tertarik dalam lagi dari bidang ini. Tentu saja tidak hari ini. 

Jadi aku akan pergi kembali ke sini, ke kolom pertama, di mana Saya perlu memasukkan nama pengguna dan hash, dan mari kita setidaknya fokus pada kedua satu untuk saat ini. Int mungkin bukan panggilan yang tepat, jadi apa lebih masuk akal mungkin? 

AUDIENCE: Teks. DAVID J. Malan: Katakanlah lagi? AUDIENCE: Teks. DAVID J. Malan: Teks? OK, aku mendengar teks. Apa lagi? Kami semacam memiliki banyak pilihan yang tekstual di alam. Jadi kapan, dan mengapa, lakukan Anda menggunakan beberapa dari ini? Nah char, bertentangan dengan apa yang Anda mungkin berpikir, bukan karakter tunggal. Ini adalah jumlah tertentu karakter. Jadi, jika kita tahu bahwa semua nama pengguna harus seperti delapan karakter, seperti yang digunakan untuk menjadi umum pada orang tua sistem komputer, saya bisa mengatakan arang dan kemudian saya bisa mengatakan 8 di sini. Saat itulah kolom ketiga menjadi berlaku saat membuat tabel. 

Tapi itu agak menjengkelkan karena beberapa orang mungkin ingin memiliki username lagi dari delapan karakter, beberapa orang mungkin ingin memiliki username yang lebih pendek, jadi mengapa melakukan sendiri ke nomor tertentu? Mengapa tidak memiliki variabel jumlah karakter dan hanya mengatakan bahwa panjang maksimum nama adalah, saya tidak tahu, seperti 64 karakter. Saya tidak bisa memikirkan teman-teman yang memiliki nama lebih panjang dari 64 karakter, dan bahkan jika itu terlalu pendek Anda bisa tentu benjolan itu sewenang-wenang. 

Jadi varchar adalah variabel jumlah karakter. Teks bukanlah naluri buruk, dan terus terang semacam melakukan apa yang dikatakannya, tapi kolom teks dapat seperti 65.000 bytes setidaknya. Itu mungkin berlebihan untuk lapangan, dan pada kenyataannya, yup, 65,535. Itu mungkin berlebihan untuk nama, jadi kita akan tetap, biasanya, dengan varchars untuk tekstual lapangan dan hash, juga. Hash, ternyata, kita bisa melakukan varchar juga atau sesuatu seperti itu, tapi kami tidak akan fokus hari ini di kriptografi sana dan angka bahwa kita mungkin benar-benar akan digunakan untuk panjangnya. 

Tapi biarkan aku gulir ke bawah ke kanan. Anda hanya dapat memiliki satu indeks utama untuk tabel, tapi saya ingin menerapkan salah satu, sekarang, untuk nama pengguna, yang akan Anda katakan? Apa yang harus nama pengguna didasarkan pada kabur pemahaman dari empat pilihan tersebut? Hanya dengan nama mereka? 

AUDIENCE: Unik. 

DAVID J. Malan: Jadi unik, kan? Jadi ternyata bahwa tidak hanya bisa Anda memberitahu database, di muka, ini adalah cara utama mengidentifikasi bidang. Anda juga dapat mengatakan ini adalah akan menjadi bidang yang unik. Ini tidak akan menjadi hal yang saya bergantung pada, tapi saya ingin database untuk dasarnya memiliki jika kondisi, jadi bahwa jika saya pernah mencoba untuk mendaftar dua pengguna dengan nama yang sama, database datar keluar tidak akan membiarkan saya. Saya mungkin memiliki beberapa kode tambahan dalam PHP yang mencegah banyak, tapi database, juga, dapat memastikan bahwa tidak akan pernah terjadi. 

Sekarang, sebagai samping, terutama karena Anda berpikir tentang proyek akhir, perlu indeks itu pikiran dan penuh teks sebenarnya cukup berguna. Jika Anda memiliki database yang lebih besar, bukan dengan puluhan, tetapi dengan ratusan atau ribuan atau bahkan jutaan bidang, Anda bisa juga memberitahu database di muka ini adalah bidang saya akan untuk mencari di banyak. Mungkin nama nya, mungkin itu bio, jika Anda membuat website Facebook-seperti itu memiliki paragraf pengguna diperbolehkan untuk menyimpan, dan jika Anda ingin memberitahu database di muka Aku akan mencari di bidang ini banyak, tapi itu tidak selalu unik, Anda dapat menentukan membuat saya indeks. Atau, Anda juga dapat mengucapkan memungkinkan saya untuk melakukan semacam pencarian sewenang-wenang seperti Command atau Control F, seperti Anda mungkin di Word Processor, sehingga Anda bisa melihat string sewenang-wenang atau substring di bidang ini. Dengan kata lain, kita sudah ke titik di semester di mana Anda tidak perlu khawatir tentang bagaimana menerapkan hal-hal secara efisien. Anda hanya perlu tahu tentang apa keputusan desain untuk membuat sehingga Anda menggunakan alat yang tepat untuk perdagangan dalam rangka untuk meningkatkan fitur bahwa orang lain telah dibangun untuk Anda. Jadi untuk rekap, primer hanya harus memiliki satu, Anda hanya dapat memiliki satu, dan itu hal yang Anda berkomitmen untuk gunakan untuk mengidentifikasi bidang unik. Unik hanya mirip dalam roh, tetapi Anda mungkin hanya sesekali menggunakannya, tetapi Anda ingin database untuk memaksakan itu. Indeks hanya berarti Terlebih Dahulu mempercepat di masa depan sehingga saya dapat mencari hal di bidang ini. Dan kemudian teks lengkap umumnya untuk paragraf, atau esai, atau badan besar teks di mana Anda mungkin juga ingin memiliki wild card seperti setara bintang. Tepat. 

Jadi itu semacam banyak sekaligus. Mari kita lihat jika kita tidak dapat menyaring beberapa fitur tersebut dan kemudian membangun sesuatu cukup sederhana, tapi kuat. Jadi antara lain keputusan desain Anda akhirnya akan memiliki adalah bersama garis mesin penyimpanan. Dan biarkan aku hanya membuat menyebutkan ini untuk mengantisipasi proyek akhir, dan antisipasi mari kita say-- tidak mari kita lakukan ini. Mari kita membangun ini sedikit aplikasi pertama. Aku akan pergi ke terminal saya jendela, dan di sini tidak hanya counter.php, yang kita sekarang akan untuk menyingkirkan karena tidak ada lagi erat, tapi kami memiliki seluruh banyak direktori dan ini akan menjadi sangat mirip dalam roh dengan apa yang akan Anda lihat dalam masalah set tujuh. 

Jadi kita memiliki tiga direktori termasuk publik dan template, yang adalah persis di mana kami tinggalkan di Senin dengan seluruh MVC paradigma kita. Dan untuk rekap, di depan umum akan pergi file apa saja yang saya ingin pengguna untuk benar-benar v dapat mengunjungi di browser mereka melalui URL. Template. Apa yang kita masukkan ke dalam template? Apa hal? Tidak ada banyak tapi pasangan file setidaknya pada hari Senin. Ya. 

AUDIENCE: Header dan Footer? 

DAVID J. Malan: Header and Footer. Jadi kita memiliki sesuatu yang mirip saat ini juga. Kami punya beberapa file lebih tapi Footer Saya melihat, Header saya lihat, dan kemudian sekelompok file lainnya. Jadi ini adalah setara dari tampilan V MVC, yang, lagi, akan menjadi sedikit lebih jelas dalam masalah set tujuh, tapi ini hanya folder saya menempatkan banyak estetika saya. Banyak HTML saya, banyak bentuk saya. Sementara itu, meliputi, adalah hal lain direktori yang memiliki ketiga file dan mari kita cepat melihat ini. 

Aku akan pergi ke depan dan membuka config.php. Ternyata, banyak seperti sebelumnya dalam istilah, Anda tajam termasuk CS50 dot h dengan pset7. Dalam contoh hari ini, Anda akan untuk melakukan setara dengan yang dengan pernyataan memerlukan yang efektif termasuk ini beberapa baris. Jadi harus jelas, ini adalah file bernama config.php. Dan perhatikan apa yang dilakukannya. Ini tampaknya melakukan sesuatu samar, menyalakan pesan kesalahan sehingga Anda dapat melihat mereka dalam browser. Ini, kemudian, rupanya membutuhkan dua file lainnya jadi ini adalah seperti # include di C, dan kemudian yang satu ini kita lihat, dan kami telah mengandalkan, ini akan mengaktifkan bahwa keranjang belanja seperti fungsi. 

Ini berarti akan kuki dikirim kembali dan sebagainya. Lalu mengapa ini menarik? Nah, jika kita kembali ke ini direktori dan membuka, misalnya, constance.php. Perhatikan bahwa PHP tidak konstanta dukungan, itu tidak cukup seperti #define dalam C. Sebaliknya, Anda benar-benar mengatakan didefinisikan, dan pemberitahuan bahwa saya telah disimpan di muka empat konstanta dalam file ini. Salah satu untuk database saat ini, untuk kata sandi, username saya, dan untuk nama server. Jadi ini benar-benar akan menjadi sangat mirip dalam masalah set tujuh. Dan terakhir, dan ini adalah di mana aku akan mendapatkan beberapa fungsi bagus dari staf, di functions.php adalah sekelompok kode yang kami telah menulis, dan aku mencuri beberapa ini dari permasalahan yang tujuh untuk hari ini, yang melakukan banyak hal dan mari kita lihat saja salah satu dari mereka pada khususnya. Fungsi ini di sini, query, akan menjadi fungsi PHP yang kita sebut dalam rangka melaksanakan SQL. Sesaat lalu kami menggunakan phpMyAdmin, tapi itu hanya untuk jenis tujuan pembelajaran dan tujuan diagnostik dan melupakan set database Anda. Ketika Anda benar-benar menggunakan Anda Database, Anda, manusia, jelas tidak akan akan menarik up web Halaman setiap kali seseorang register. Anda akan menulis kode yang menyisipkan dan menghapus pengguna pada permintaan, dan kita akan melakukan hal ini dengan cara fungsi query. Jika saya sekarang gulir ke bawah, ada akan menjadi beberapa fitur. Redirect akan menjadi fungsi kita menulis untuk Anda yang memungkinkan Anda untuk mengirim pengguna ke URL lain, dan membuat adalah fungsi, cukup seperti kita lihat pada hari Senin, yang benar-benar membuat template, tetapi lebih pada ini dalam bentuk pset7 berjalan sendiri melalui. Untuk saat ini, mari kita pergi ke depan dan melakukannya. 

Biarkan aku pergi ke meja kuliah saya dan melihat itu saat ini ada apa-apa di sini dulu, dan biarkan aku juga pergi ke direktori publik saya, di mana hanya ada satu file, index.php. Berkas ini tampaknya super sederhana pada saat ini, itu terlihat seperti ini. Sangat banyak seperti bagaimana kita tinggalkan pada hari Senin. Aku membutuhkan file ini, config.php, yang dalam sebuah meliputi direktori, yang dalam dot dot, orang tua saya, dan kemudian itu hanya render file ini. Jadi apa file ini? 

Mari kita membuka di template saya form.php, dan kami akan melihat ini. Super sederhana, ternyata formulir ini akan mengajukan oleh $ _GET atau $ _POST. Cek kewarasan cepat. Secara harfiah visual pencarian file. Metode sama dengan pos. Sehingga tidak akan menggunakan URL, seperti Google tidak, itu akan mengurutkan dari kulit informasi belakang adegan dan itu akan tunduk kepada file yang bernama register.php, dan itulah file kita belum ditulis tapi apa ini akan terlihat seperti apakah ini. 

Jika saya pergi ke halaman terpisah ini apa localhost / index.php terlihat seperti. Dan lagi, server ini hanya asumsi index.php. Enter. Jadi, di sanalah kami di, dan apa yang ingin saya lakukan adalah dapat mengetik hal-hal seperti Daud, dan kemudian nomor telepon saya, yang akan mengatakan 617-555-1212 untuk saat ini, daftar dan sekarang register.php tidak ditemukan. Jadi saya perlu untuk mengimplementasikan ini. Jadi mari kita cepat cambuk sesuatu seperti up ini. Biarkan aku pergi ke direktori publik saya dan melakukan gedit dari register.php, dan sekarang aku akan pergi ke depan dan memulai modus PHP, seperti yang kita lakukan pada hari Senin, dan tag tutup PHP, dan mari kita lakukan beberapa hal. 

Jadi satu, saya tahu, dari setelah menulis formulir itu, bahwa saya ingin memeriksa berikut. Jika kosong, apa pun pengguna diketik ke kolom nama, kemudian Aku akan mengatakan sesuatu seperti meminta maaf nama hilang. Minta maaf, sementara itu, adalah tidak built in PHP hal, itu fungsi kita menulis functions.php untuk pset7 sehingga Anda memiliki akses ke sana. Lain jika bidang lain kosong, nomor, maka aku akan meminta maaf kepada pengguna dan mengatakan jumlah yang hilang. Simpan file ini. 

Sekarang mari kita kembali ke browser saya, kembali ke forum coba lagi. Mendaftar. OK. Tidak ada yang terjadi, yang baik. Aku tidak mendapatkan pesan kesalahan. Tapi jika sebaliknya, mari kita ulang ini Halaman, dan tidak memberikan apa-apa. Sialan. Lakukan itu. Mendaftar. Apa yang saya lakukan salah? Jika kosong, nama $ _POST. Katakanlah lagi? 

Oh, tentu saja. Aku lupa bagian yang paling penting, yang adalah membutuhkan ("../ includes / config.php."). Saya perlu memiliki akses ke meminta maaf fungsi, yang mengapa tidak ada yang terjadi. Fungsi tidak benar-benar ada. Jadi mari kita coba ini lagi. Mari kembali halaman tersebut, klik Daftar. OK. Itu dia. Jadi, output kami lihat di sini adalah hasilnya dari memanggil minta maaf fungsi, super sederhana, dan itu hanya print out apa pun Aku memberikannya sebagai argumen. 

Baiklah, jadi mari kita bekerja sama. Mari kita memberikan nama saya seperti Daud, daftar, hilang nomor OK mari kita menyediakan itu juga. 617-555-1212. Mendaftar. OK. Jadi semuanya baik-baik sekarang, hanya ada menarik yang terjadi. Jadi sekarang mari kita membuat sesuatu yang lebih menarik terjadi seperti ini. Biarkan aku pergi ke phpMyAdmin, dan mari kita benar-benar membuat tabel yang disebut pengguna, Aku akan memberikan tiga kolom, dan aku akan cepat membuat ID, dan kemudian nama, dan kemudian nomor, dan bidang ID saya akan meninggalkan sebagai int. Nama field aku akan untuk meninggalkan sebagai varchar, dan kita akan mengatakan 64, agak sewenang-wenang. Jumlah Aku akan untuk membuat, Anda tahu apa? Kita akan ke mendukung nomor US sini, jadi saya akan melakukan sesuatu seperti char dan kemudian 10 karakter max untuk kode area dan kemudian tujuh digit. Dan kemudian di sini, aku akan tentukan auto increment bidang ini, membuat kunci primer, dan Aku akan pergi ke depan dan tidak memeriksa semua ini kotak lainnya. 

Jadi ketika saya sekarang akhirnya klik Save, dan aku kembali ke meja pengguna saya, ini adalah apa yang tampak seperti jika saya sekarang klik struktur Tab Baru. Jadi ini, harus jelas, hanya cara phpMyAdmin ini mengatakan tabel database Anda memiliki ID, nama, dan nomor dengan orang-konfigurasi tertentu dan kami akan mengabaikan sisa bidang ada untuk saat ini. 

Jadi sekarang apa yang ingin saya lakukan? Jadi jika saya pergi sekarang ke saya kode sumber, jika semuanya baik-baik Saya ingin mengeksekusi query berikut. Masukkan ke dalam, dan aku hanya bisa mengatakan pengguna saya tidak ketat membutuhkan orang-orang kembali kutu jika bukan kata yang berbahaya seperti pengguna. Aku akan mengatakan nama, nomor, dan kemudian di sini aku tidak akan kode keras digit dari nilai-nilai belum. Aku akan menempatkan dua tanda tanya. Dan ini adalah konvensi dalam banyak bahasa dimana jika Anda ingin memiliki sebuah tempat untuk string Anda akan menggunakan pertanyaan tanda, untuk alasan kita akan datang kembali untuk chatting tentang keamanan, dan di sini Aku akan lulus pada mereka dua bidang nama posting, dan kemudian posting nomor, dan sekarang menyimpan file. 

Dan sekarang aku akan turun di sini adalah super hanya mengatakan rendersuccess.php, yang akan menjadi template lain. Aku akan membuat sangat cepat. Geditsuccess.php dan aku hanya akan mengatakan keberhasilan H1 dalam file tersebut. Baik. Jadi sekarang, mari kita kembali ke Browser, di mana saya kunjungi sebelumnya. Mari kita pergi ke depan dan mengkonfirmasi saya menulis di David, saya tulis dalam nomor telepon, mendaftar. Sialan. Apa yang saya lakukan salah? Jadi saya lihat kesalahan di sini, Anda memiliki kesalahan dalam sintaks SQL Anda. Biarkan aku melompat kembali ke gedit, biarkan saya kembali ke register.php, dan apa yang saya menghilangkan bahwa penting terakhir kali? Saya mau ini. Anda ingin tahu bahwa selain dari memiliki melihat sebelumnya, tapi aku butuh ini. 

Jadi sekarang mari kita kembali, dan ini adalah membantu untuk melihat di browser dan itulah mengapa di config.php kami meludahkan kesalahan. Mari kita pergi ke depan dan kembali, klik Lanjutkan, sukses. Jadi sekarang biarkan aku pergi ke saya Database di sini dan klik Pengguna, dan browsing, dan melihat saya sekarang memiliki David dalam database saya di sini. Sekarang teknis situs ini belum di internet publik, jadi saya tidak dapat memiliki lain orang dalam menempatkan di sini, tetapi jika aku sekarang ingin, untuk Misalnya, mengirim diriku pesan teks. Mari kita pergi mengambil risiko di sini dan melihat apakah ini benar-benar bekerja. Aku akan pergi ke depan dan menghapus baris ini dan kami akan mengaburkan ini di video nanti jadi kita tidak memiliki Seluruh internet SMS saya, dan sekarang kita akan pergi ke Browser dan kami akan pergi ke kuliah dan kami akan ketik berbeda Jumlah sini, daftar, keberhasilan. 

Jadi sekarang, nomor saya sendiri yang mungkin dalam database, dan sekarang bagian yang menyenangkan. Mari kita benar-benar menggunakan PHP untuk melakukan sesuatu pemrograman, baik dari perintah line atau dari tempat lain, dan untuk saat ini aku hanya akan tetap sederhana dan aku akan pergi ke saya direktori di sini dan melakukan hal berikut. Skrip Gedit katakanlah, kita akan menyebutnya teks, #! / user / bin / env PHP, seperti kita melihat terakhir kali. PHP. 

Sekarang aku akan memang membutuhkan termasuk config.php, meskipun kekuatan ini menginduksi kesalahan sedikit. Dan sekarang aku akan pergi ke depan dan berkata baris, query, pilih bintang dari pengguna, dan sekarang di sini aku akan melakukan teknik dari terakhir kali untuk setiap baris sebagai baris. Dan aku akan melakukan sesuatu yang sederhana. Printf katakanlah namanya ini, dan nomor adalah ini, backslash n. Dan sekarang aku akan lulus berturut-turut mengutip nama tanda kutip, dan nomor baris kutipan tanda kutip, dan sekarang mari kita pergi ke depan dan jendela terminal saya chmod a + x ini untuk membuat script ini disebut teks executable. Dan sekarang mari kita jalankan teks. 

OK, jadi kemajuan. Jadi aku sekarang sudah menulis baris perintah skrip, dalam bahasa yang disebut PHP, bahwa, karena itu memerlukan line, memiliki akses ke semua konfigurasi tersebut konstanta yang saya ditentukan. Nama database dan sebagainya. Bahkan, hanya harus jelas bahwa ini bukan kebetulan, biarkan aku pergi ke depan dan mendaftar, sangat cepat, orang lain seperti Rob dan akan memberinya nomor 555-1212. 

Dan sekarang, jika saya menjalankan script lagi, perhatikan daya dari apa yang kita lakukan dengan database. Sekarang saya sudah langsung melihat apa yang dua baris lainnya dalam database saya. Jadi sekarang mari kita coba untuk melakukan sesuatu bahkan lebih menarik dalam, dan ini adalah bagian kami telah tidak diuji terlebih dahulu, jadi terakhir kali aku melakukan ini semua berjalan mengerikan kacau, kita punya video yang berlaku. 

Sebenarnya, ya, lucu samping. Jadi terakhir kali, dalam kuliah seperti dua tahun yang lalu, kami memutuskan, saya memutuskan, untuk menjadi semua ini akan menjadi ide bagus untuk secara dinamis menghasilkan email di kelas, menggunakan seluruh database CS50 siswa, yang telah memberi kami jumlah mereka dan operator ponsel mereka yang Anda mungkin ingat dari pset0, bagaimana alasan, ternyata Aku punya bug kecil dalam program saya dan melakukan beberapa kesalahan pada tahun 2012, saya pikir. 

Dimana, yang saya punya untuk loop yang melakukan persis hal semacam ini, iterasi database, mendapatkan nama dari database, nama dari database, dan kemudian pada masing-masing iterasi dari loop bahwa saya mengirim email. Tapi bukannya mengirimkan satu email, saya mengirim satu email iterasi pertama, dan dua email iterasi kedua, dikirim tiga email iterasi kedua, yang seperti yang mungkin Anda ingat dari kami pembahasan notasi asimtotik ini O besar buruk, seperti n kuadrat adalah berapa banyak pesan yang saya kirim, tapi itu tidak bahkan email itu pesan teks. 

Dan seperti yang Anda tahu, kehadiran tidak super high menjelang akhir semester dan jadi saya pikir ini akan menjadi lucu di waktu untuk mengatakan, "Mengapa tidak kelas Anda?" Dalam teks pesan yang saya dikirim ke seluruh kelas, dan itu lucu seperti 50% dari kelas, tapi yang lain 50%, beberapa di antaranya panik, saya dikirim sangat catatan manis menyesal kepada staf meminta maaf untuk setelah ketinggalan kuliah hanya ini sekali, kan? 

Sehingga akan mengerikan kacau. Dalam semangat ini, mari kita coba ini lagi tapi hanya dengan nomor saya. Di muka, di functions.php, Aku sudah menulis fungsi ini di sini. Ini disebut teks, dan diperlukan tiga argumen. Sejumlah, pembawa, dan pesan. 

Saya menggunakan pernyataan switch, yang mengagumkan PHP mengambil string, bukan hanya bilangan bulat, dan saya tidak menerapkan semua dukungan untuk ini belum, Aku baru saja melakukan AT & T dan Verizon. Karena ternyata bahwa dengan ini operator mereka memiliki email ke gateway SMS, dimana Anda benar-benar dapat kirim email ke alamat seperti nomor telepon di vtext.com dan jika pengguna tidak diblokir pesan, itu akan pergi melalui adalah pesan teks. 

Sekarang untuk melakukan hal ini, aku akan harus menambahkan satu bidang yang benar-benar cepat ke database saya. Aku akan pergi ke struktur saya, dan saya akan pergi ke depan dan menambahkan lapangan di ujung meja. Mari kita klik Go, dan aku akan memanggil operator ini dan untuk saat ini aku akan meninggalkan ini sebagai bar teks, tapi kita bisa lebih menarik di masa depan. Aku akan cepat pergi ke meja saya, dan saya akan menyingkirkan Rob, karena itu adalah nomor palsu, Aku akan pergi ke mengedit sini dan aku akan mengubah operator saya secara manual menjadi Verizon, yang adalah, dan sekarang di sini. 

Mari kita lakukan sebuah pemeriksaan cepat. Mari kita membuka naskah teks kami, yang terlihat seperti ini, pembawa% s. Kami melakukan lebih banyak kesalahan memeriksa daripada yang saya lakukan pada tahun 2012, pembawa. Dan sekarang, aku akan pergi depan dan menjalankan ulang script. OK. Carrier Verizon, yang berarti sekarang mudah-mudahan saya bisa melakukan hal ini. Benar tahun ini, mudah-mudahan, di sini kita pergi. 

Jadi dalam hal ini untuk loop, aku akan tidak hanya memiliki printf ini, Saya juga akan menelepon teks dan penggunaan fungsi recall ini apakah itu mengambil nomor, sebuah carrier, dan pesan. Jadi mari kita lihat, jumlah akan menjadi baris kutipan tanda kutip "nomor," baris kutipan tanda kutip "carrier," dan yang terakhir adalah pesan. Jangan mengacaukan tahun ini, titik koma. 

OK. Semoga. Mari kita lihat apakah ini bekerja. Baiklah, jadi. Di sini kita pergi. Mari kita membuka telepon, lintas jari Anda, sialan. Undefined variable may-- oh tunggu, tunggu, tunggu, sangat cepat. Sangat cepat, sangat cepat. Ini benar-benar layak. Biarkan aku ambil, biarkan aku ambil, uh-oh. Terima kasih, teks memiliki mulai dari orang lain. Biarkan aku pergi ke depan dan membuka nyata cepat, dropbox.php / mail di sini. Standby. Benar-benar layak. Downloads. OK, sumber src8m. OK. 

Butuh satu baris lagi di sini. Oh ada itu, itu di Frosh IM, itu dalam register di tiga. Oh halo, Margo, terima kasih banyak. OK, dan saya hilang baris ini di sini. Jadi biar cepat ambil baris kode ini, yang meliputi surat atau perpustakaan bahwa saya benar-benar ingin menggunakan, Aku akan cepat kembali ke fungsi, Aku akan pergi ke atas ini file dan membutuhkan file ini juga, dan sekarang aku akan benar-benar menyeberang saya jari ketika aku kembali ke perintah skrip line, yang dalam direktori host lokal hari ini. Teks berjalan. Enter. Mail. Standby. Standby. Mail. Oh, OK. Di sini kita pergi. 

Mail mendapat PHP mailer baru. Apakah aku melakukan ini dengan benar? Sialan. To-- oh, tunggu, tunggu, tunggu. Stand by. Aku berjanji, ini adalah akan menjadi begitu berharga. Alamat. Ini adalah mengapa saya tidak membuat contoh tepat sebelum kelas. Ugh. Para penerima berikut gagal. Mari kita coba satu hal. SMTP set dari, menambahkan alamat, alamat memang itu. Mari kita coba bagian terakhir ini di alamat. Ah, aku benar-benar sedih sekarang. Terima kasih. Tapi aku benar-benar menghargai semua teks Anda telah mengirim. Anda punya David ini. Anda meniup itu. Mari kita meninggalkannya di sana dan kami akan memperbaikinya pada hari Senin. Melihat Anda kemudian. 

Daven Farnham: Dan sekarang Jauh Pikiran oleh Daven Farnham. Jika pohon biner jatuh di hutan dan tidak ada di sekitar untuk C itu-- [tertawa].