>> [MUSIK BERMAIN]
DAVID J. MALAN: Baiklah.
Selamat kembali.
Ini adalah CS50.
Ini adalah akhir minggu ke-8.
Dan seperti yang anda tahu, kita mempunyai cukup jam kerja biasa dalam beberapa
satu ruang makan, termasuk Annenberg.
Dan beberapa pasukan sila mengambil beberapa foto yang akhir-akhir ini.
Dan untuk menghormati Halloween, kami pikir kami akan
berkongsi satu yang agak menangkap kami oleh kejutan di sini di Annenberg Hall tepat
malam.
Yakub rakan sekelas anda berpose untuk foto ini, tetapi lebih lucu
itu di Facebook, yang berikutnya perbualan yang berlaku selepas itu.
>> Jawatan pertamanya sebagai tindak balas pada foto beliau ini.
Beberapa minit kemudian, beliau mengambil keputusan untuk satu sehingga dirinya dengan hal ini.
Ia pergi kemudian pergi ke ini, dan kemudian, lebih lucu
adalah ketika ibunya menimpali.
Dan kemudian akhirnya, ia seolah-olah ini adalah hanya
tipu muslihat yang indah untuk bermain bahawa yang sedang berlaku.
>> Jadi, jika anda ingin untuk melihat Yakub dan lain-lain,
di antara mereka Cynthia Meng, siapa yang di belakang tabir kakitangan zon CS50,
menuju ke URL ini dan bermain di sini.
Jadi tanpa berlengah-lengah lagi, hari ini kita terus ini melihat pengaturcaraan web,
dan penciptaan sebenar program yang tidak berjalan di baris arahan anda,
tetapi bukan berjalan dalam browser.
>> Agaknya sekarang, atau sangat tidak lama lagi, anda akan
berada di tengah-tengah melaksanakan pelayan web anda sendiri, yang
adalah berbeza daripada pengaturcaraan web.
Pelayan web dalam pset6 adalah tentang perisian yang tahu menulis bagaimana untuk mengambil
Permintaan HTTP dari browser, atau bahkan dari anda, manusia,
dengan program yang dikenali sebagai Telnet, dan kemudian bertindak balas kepada permintaan tersebut sama ada
dengan menyemburkan fail HTML, atau jpeg, gif atau, atau bahkan file .php.
>> Tetapi dengan web server, ia bukan sepatutnya hanya membuka fail PHP,
sesuatu yang berakhir dengan php, dan kemudian memuntahkan isinya.
Ia seharusnya dilakukan apa yang perlu fail yang pertama?
Jadi untuk bercakap.
Tidak compile, kita berkata pada hari Isnin, tetapi rather-- Jadi, menafsirkannya.
>> PHP adalah bahasa yang diterjemahkan, dan sebagainya salah satu ciri-ciri utama dalam web anda
pelayan, meskipun dilaksanakan oleh kami, adalah kemampuan untuk pelayan web anda
untuk melihat, oh.
Fail ini berakhir di .php.
Biarkan saya tidak hanya menghantar kepada pengguna seperti itu kandungan statik,
tetapi biarlah saya membaca baris demi line, kiri ke kanan, dan menafsirkannya.
>> Dan untuk berbuat demikian, bahawa anda lelaki akan dasarnya
menyepak bola ke program dalam perkakas, dan pada banyak sistem komputer,
hanya disebut PHP.
Itu adalah nama PHP penerjemah bahasa sendiri.
Jadi, bagian yang kita melaksanakan untuk anda, dan apa yang ditinggalkan untuk anda,
akhirnya, adalah angka keping, di antaranya
sedang melaksanakan sokongan untuk kandungan statik.
>> Tetapi sekarang, dan dengan permasalahan yang tujuh, anda
akan mula peralihan kepada benar-benar menulis kod PHP
yang akan ditafsirkan dalam berbicara dengan back end
pangkalan data yang menyimpan maklumat.
Jadi mari kita lebih memahami pertama beberapa superglobals ini
dan betapa banyak kuasa anda keluar dari kotak percuma
dengan bahasa seperti PHP.
Hal-hal yang tidak perlu untuk melaksanakan sendiri.
>> Jadi, kita lihat pada hari Isnin $ _GET, yang superglobal a,
yang hanya bercakap bagi PHP global pembolehubah anda boleh mengakses mana-mana sahaja.
Dan apa yang di dalam dari $ _GET?
Apa yang di dalam ini superglobal yang kita lihat?
Sesungguhnya statistik pada kurangnya satu orang yang tahu.
Apa yang di dalam dari $ _GET?
Ya?
>> PENONTON: Ini pembolehubah anda masukkan ke dalam tali query.
>> DAVID J. MALAN: Perfect.
Ini satu variabel yang dimasukkan ke dalam rentetan pertanyaan.
Jadi, dalam contoh kita yang lebih tua dari reimplementing Google apabila kami terpaksa
URL, dan kemudian tanda tanya, yang menandakan permulaan HTTP
parameter, maka kita mempunyai q sama sesuatu, seperti q sama dengan kucing,
apa yang secara automatik akan masuk ke dalam yang $ _GET super global untuk anda,
kerana PHP, adalah kunci dari Q, dan nilai itu pada kucing.
>> Dengan kata lain, $ _GET dan semua perkara-perkara ini adalah array bersekutu,
jadual hash sejenis itu, yang menyimpan kunci dan nilai-nilai.
Sekarang, kembali pset5, hash jadual anda mungkin telah dilaksanakan,
atau cuba anda mungkin telah dilaksanakan, benar-benar
secara efektif asosiatif sebuah array, struktur data
di mana anda boleh mengaitkan kunci dengan nilai-nilai.
>> Tetapi dalam pset5, nilai-nilai yang remeh.
Nilai pada dasarnya benar atau salah.
Apakah perkataan di dalam kamus?
Jadi, apabila anda hash kata seperti epal untuk melihat apakah epal ada di dalam kamus,
fungsi cek anda mungkin kembali benar atau salah.
Jadi, itu berkesan nilai kita sudah kembali.
>> Tetapi kita lihat pada hari Isnin secara ringkas, anda boleh pasti
mengaitkan lebih menarik nilai-nilai daripada hanya benar atau salah
dengan kunci, seperti epal.
Anda benar-benar boleh mengembalikan tali sewenang-wenang, dan memang,
itulah yang $ _GET dan ini pembolehubah lain membiarkan anda lakukan.
>> Jadi $ _POST adalah sama di hadapan Allah, tetapi jika anda menyerahkan borang melalui pos,
kaedah HTTP yang berbeza itu digunakan untuk perkara-perkara seperti kad kredit,
dan maklumat peribadi, dan juga maklumat binari seperti foto,
perkara-perkara berakhir dalam $ _POST.
Dan sebenarnya untuk fail seperti JPEG dan yang lainnya,
bahkan ada lain yang bukan di sini dipanggil $ _FILES juga.
>> Jadi, server kita tidak akan kekal di atas juga banyak, tetapi ia memberikan anda akses
untuk menyusun butiran tingkat yang lebih rendah kira-kira pelayan itu sendiri yang anda gunakan.
Cookie sesi, walaupun, kita secara efektif akan melihat sekarang.
Yang terakhir adalah apa yang kita gunakan untuk melaksanakan gagasan troli membeli-belah.
A satu super mudah, tetapi penarikan balik bahawa kita mempunyai contoh ini di sini,
mengira berapa kali anda telah melawat halaman ini sebelumnya.
>> Tetapi hari ini, bukan hanya melihat kesan ini, mari kita membuka
Inspektor Chrome, yang anda boleh biasanya
lakukan dengan klik-kanan atau Control klik di mana-mana laman web,
dan kemudian pilih memeriksa elemen.
Atau anda boleh pergi melalui menu yang kami terangkan di dalam spec pset6 ini.
Dan saya akan ke tab Rangkaian di sini, dan mari kita menonton seketika
trafik HTTP itu akan bolak-balik.
>> Terlebih dahulu saya pergi ke depan dan cache jelas Chrome.
Jadi sebahagian daripada anda mungkin tidak asing lagi dengan teknik ini sudah,
dan kami akan menggunakannya untuk tujuan debugging sini.
Sekarang kita sebagai komputer saintis akan memulakan
melakukan hal ini untuk debugging tujuan, di mana
kami akan mengosongkan cache, biasanya, supaya kita
dapat membuang perkara-perkara yang dipanggil kuki.
Jadi anda mungkin umumnya biasa dengan apa cookie, atau sekurang-kurangnya
yang mereka ada, tetapi apa yang pemahaman anda daripada mereka,
hanya sebagai pengguna komputer, apa yang cookie?
Yeah.
>> PENONTON: Ini sedikit daripada- baik, tidak sedikit dalam istilah sains komputer.
Ini adalah sepotong data yang yang laman web menghantar kepada anda agar
dapat merakam statistik anda.
DAVID J. MALAN: OK, baik.
Jadi itu adalah sepotong data yang yang pelayan, meletakkan ke komputer anda,
dan mari kita umum bahkan lebih dari itu, kunci value-- baik,
yang semakin lebih tepat.
Ini adalah bagian dari maklumat, sekeping data,
bahawa pelayan mampu untuk meletakkan pada komputer anda
dan sangat sering, server tidak ini untuk ingat siapa anda.
Jadi misalnya, kemungkinan adalah anda mungkin
log masuk ke dalam laman web seperti Facebook, atau Gmail, atau lain-lain sebelum ini,
dan log in dengan anda nama pengguna dan kata laluan,
dan kemudian setelah itu, untuk beberapa jumlah minit atau jam atau hari,
server ingat bahawa anda, sebenarnya, login.
Sekarang, bagaimana yang benar-benar berlaku?
Kerana anda pasti tidak mengetik ulang nama pengguna dan kata laluan anda setiap kali
anda menavigasi ke halaman yang berbeza di Facebook.
Jadi ternyata yang cookies adalah jawabannya.
>> Cookie boleh anda fikirkan sebagai, semacam suka, tangan digital
setem yang anda mungkin akan mendapat di sebuah hiburan taman atau kelab yang pada dasarnya
menandakan anda telah berada di sini sebelum ini, dan anda telah pun
ditunjukkan ID anda ke penjaga pintu, untuk misalnya, dan bahawa kelab atau taman
sekarang hendaklah menganggap bahawa anda telah disahkan sudah.
Anda telah pun dikenal pasti olehnya.
>> Maka dengan itu dalam fikiran, mari kita membuka kaunter di sini.
Biar saya pergi ke hadapan, saya hanya melakukan, dan jelas semua cookies saya.
Dan sekarang apa yang saya akan lakukan ialah tahan Shift, hanya sebagai tambahan,
dan secara paksa memuat semula halaman.
Shift pastikan apa-apa yang akan di-cache.
Dan inilah permintaan yang pergi bolak-balik.
Jadi di sini kita mempunyai satu permintaan, dan biarkan saya mengezum masuk di sini, dan banyak ini
adalah butiran semacam tidak menarik untuk sekarang bahawa browser memiliki secara automatik
dihantar, tetapi mari kita klik Lihat Sumber melihat header mentah.
>> Dan jika anda telah menyelam ke dalam pset6 sudah, Anda pasti akan mengenali hal-hal
seperti ini, dan mungkin beberapa dari garis-garis lain di sini,
tetapi apa yang lebih menarik untuk hari ini jika saya tatal ke bawah, tidak dengan permintaan
tetapi sambutan yang dipanggil, baris ini mungkin kelihatan biasa.
Itu satu perkara yang baik apabila anda melihat 200 OK.
Rupa-rupanya ini adalah tarikh dan masa pada pelayan
dan ada banyak hal.
Oh, ini menarik.
>> Rupa-rupanya, apabila anda menggunakan PHP, sekurang-kurangnya dalam server ini,
pelayan tersebut mengeluarkan apa versi PHP anda gunakan.
Yang, sebenarnya, untuk keselamatan tujuan, bukan satu perkara yang baik.
Tetapi, kami akan kembali kepada yang suatu masa yang lain mungkin.
Tetapi sekarang ini adalah garis berair hari ini, dan kami melihat secara ringkas beberapa,
Saya rasa dengan Facebook apabila kita mencucuk sekitar Inspektor yang pada masa itu,
set Cookie adalah apa yang menanam potongan yang sedikit maklumat
ke komputer anda.
>> Ini adalah HTTP header yang berkesan
memberitahu browser anda, Chrome, IE, apa pun,
hey kedai browser pada pengguna ini cakera keras, RAM atau pengguna,
utama yang dipanggil PHPSESSID, yang merupakan notasi singkat untuk ID sesi,
dan memberikan nilai 0vlk8t, dot, dot, dot.
A pseudo yang sangat panjang string abjad angka rawak.
Ia hanya beberapa benar-benar besar, tetapi ia dikodkan dengan huruf dan angka
sehingga saiz ia boleh bahkan lebih besar daripada nombor semata-mata.
Dan kemudian, dengan cara itu, jalan = /, yang hanya bererti bahawa kuki ini harus
yang berkaitan dengan keseluruhan laman web ini,
bukan hanya tertentu Laman segala-galanya.
Jadi ini adalah bahawa cap tangan maya.
Seolah-olah pelayan, Facebook, atau dalam kes kami perkakas,
mempunyai 0vlk8t-benar ditulis dan lain-lain, di tangan anda.
Perhatikan apa yang pelayan itu, tidak melakukan ini ia tidak
menyimpan nama pengguna saya, sudah tentu tidak menyimpan kata laluan saya.
>> Sebaliknya, ia kelihatan menyimpan maklumat pseudo rawak
sehingga tidak ada orang boleh meneka apa cap tangan saya.
Di sebelah pelayan, Sementara itu, pelayan
akan ingat, mungkin dalam pangkalan data atau sesuatu,
bahawa pengguna, yang pada masa akan datang membentangkan suatu cap tangan 0vlk8t, dot,
dot, dot, harus dikaitkan dengan ini kart membeli-belah tertentu, jadi untuk bercakap.
Dalam erti kata lain, jika saya sekarang pergi kembali ke sini dan muat semula laman ini,
bagaimana server tahu yang saya lawati satu masa?
>> Atau jika saya melakukannya lagi, bagaimana pelayan tahu yang saya kunjungi itu dua kali?
Nah jika saya pergi ke ini permintaan yang paling baru-baru ini, yang
kini ketiga yang saya telah dihantar secara total, melihat permintaan saya sekarang.
Masih ini meminta di sini, sama
seperti sebelum ini, masih ada sejumlah besar barang yang kami telah mengabaikan seperti sebelumnya,
tetapi kepala yang terakhir, ini masa, kerana saya sudah pernah ke sini,
ialah kenyataan yang ini cap tangan maya.
>> Mana talian ini di sini, tidak menetapkan cookie tetapi cookie kolon PHPSESSI = 0vlk8t,
itu hanya browser saya automatik pembentangan ini cap tangan sehingga
kini pelayan, segera setelah ia menyadari, aduh, ini adalah pengguna 0vlk8t dot, dot, dot,
Saya kini boleh ingat yang dia adalah dan reassociate dengan pengguna tersebut apa sahaja
maklumat yang saya mahu, dan semua maklumat yang dapat disimpan oleh anda,
pengaturcara, dalam $ _SESSION.
>> Jadi untuk menjadi jelas, jika saya membuka nyata cepat dalam gedit bahawa fail yang sebenarnya, counter.php,
di dalam direktori awam tuan rumah tempatan saya seperti sebelum ini, perhatian bahawa, memang,
Saya akhirnya menyimpan dalam $ _SESSION Kutipan tanda kutip "kaunter,"
nilai kaunter yang lalu Saya dapat dari ayat-ayat ini di sini bahawa kita
melihat pada masa lalu ditambah satu.
Jadi di bawah hood, itu sahaja cookie.
Ia hanya jenis digital cap tangan akan bolak-balik,
dan terus terang jika anda membuka Chrome Inspektor pada mana-mana laman web
anda melawat hari ini, dengan super kebarangkalian tinggi,
Anda akan melihat mungkin satu, kuki mungkin setengah lusin
yang diingat oleh anda.
>> Dan lebih buruk lagi, jika orang-orang laman web yang anda kunjungi
semua mempunyai iklan, yang sudah pasti perkara biasa hari ini,
dan jika orang-orang iklan yang datang dari beberapa pihak pusat, seseorang
seperti Google AdWords atau kerana mereka memanggil salah satu daripada produk-produk mereka
atau lain-lain vendor seperti yang menjual iklan, yang menarik,
dan terus terang apa yang sedikit membimbangkan, kira-kira bagaimana HTTP bekerja,
adalah bahawa jika anda mempunyai iklan terbenam di Facebook.com, dan Google.com,
dan Harvard.edu, apa-apa jumlah dari laman web, jadi ia seperti
bahawa ada orang tengah yang sedang menjalani up iklan untuk ketiga-tiga laman web tersebut,
ternyata bahawa cookies adalah untuk sebuah domain.
>> Jadi jika anda mempunyai iklan yang datang dari syarikat yang sama di laman web yang berbeza,
syarikat yang berkesan boleh mengesan orang yang anda di semua laman-laman web.
Harvard mungkin tidak tahu Anda kunjungi Facebook.
Facebook mungkin tidak tahu dan anda melawat Harvard.
Tetapi apa sahaja perkhidmatan iklan mereka gunakan jika domain yang
yang terdapat di dalam kedua-dua Harvard.edu web halaman dan laman web Facebook.com,
orang tengah ini pasti tahu siapa anda kerana kuki ini dikongsi
di, atau lebih kepada, bahawa apa yang dipanggil orang tengah.
>> Oleh itu, kita akan kembali kepada ini di implikasi keselamatan itu,
tapi ada banyak maklumat disimpan mengenai anda bila-bila masa anda
melawat paling mana-mana halaman web pada internet dan ia benar-benar
mengurangkan mekanisme ini sangat mudah.
Apa yang berlaku, maka, jika Anda super paranoid
dan anda membuat keputusan untuk pergi ke Chrome atau IE atau apa pun dan mematikan kuki anda?
Apa yang berlaku?
Ya?
Anda really-- anda telah melakukan hak ini?
OK.
Tidak, pergi ke depan.
>> PENONTON: laman web tertentu yang tidak mempunyai fungsi tanpa itu seperti Facebook.
DAVID J. MALAN: Ya!
Laman web begitu yakin hanya akan berhenti kerja.
Dan dalam kebanyakan laman web hari ini yang pada dasarnya bergantung pada kuki,
terutamanya jika mereka mempunyai anda log masuk dalam, mereka hanya akan pecah.
Kerana mempertimbangkan alternatif, laman web yang
tidak memiliki cara untuk mengingat siapa anda, dan oleh pelayar web anda tidak
mewakili dengan setiap HTTP permintaan cap tangan ini,
berkesan laman web seperti sedang berjalan Facebook
harus meminta Anda untuk login setiap kali darn
anda menukar halaman, atau klik link, yang pasti bukan pengguna sangat baik
pengalaman.
>> Sehingga ada juga, adalah antara perdagangan off.
Jadi tanpa berlengah-lengah lagi, mari kita saja bahwa dengan pengaturcaraan web,
dalam bahasa seperti PHP, anda boleh ingat maklumat seperti itu dalam permasalahan yang
tujuh apabila anda melaksanakan sendiri Laman web E * Trade-seperti dengan mana untuk membeli
dan menjual saham, anda akan ingat apa yang pengguna telah dibeli dan dijual
dan yang dia adalah melalui sesi ini.
Tetapi kita akan memerlukan cara yang lebih menarik daripada e-mel
untuk mula memelihara maklumat sekitar.
Betul?
>> Pada hari Isnin, kita berbincang mengenai Frosh IM dan bagaimana dalam versi salah satu laman web itu,
tahun yang lalu, semua yang kita lakukan adalah email Proctor siapa
yang bertanggungjawab bagi sukan intramural program, nama, dan jantina,
dan sama ada atau tidak mereka kapten, dan asrama dari seseorang yang
mendaftar untuk sukan intramural.
Jadi ia bukan yang buruk, tetapi dia kemudian terpaksa troll melalui e-mel mereka,
membuat spreadsheet atau sesuatu seperti itu, untuk menjaga segala sesuatu yang dianjurkan.
Jadi pasti kita sebagai programmer dapat melakukan ini untuk pengawas itu.
Dan jadi masukkan di SQL, Structured Query Language,
yang akan kelihatan cantik yang berbeza untuk kedua-dua C dan PHP,
dan anda akan menyelam di banyak lagi tangan pada PHP dan permasalahan yang tujuh tetapi juga SQL,
atau SQL, ini adalah bahasa yang anda gunakan untuk bercakap dengan database.
>> Tetapi apa yang database?
Baik anda memikirkan pangkalan data, sekurang-kurangnya buat masa ini,
sebagai hanya menjadi seperti fail Excel, atau jika anda seorang pengguna Mac nombor fail,
atau jika anda seorang Google Apps pengguna spreadsheet Google,
itu berkesan pangkalan data, atau benar-benar khusus pangkalan data hubungan.
Satu pangkalan data hubungan adalah hanya sesuatu yang mempunyai baris dan kolom,
dan anda boleh menyimpan apa-apa jenis maklumat dalam baris atau lajur.
>> Tetapi apa yang baik tentang SQL, dan tentang database sebenarnya, bukan hanya
spreadsheet atau spreadsheet Google, adalah bahawa anda boleh menggunakan bahasa yang
untuk benar-benar melaksanakan pertanyaan kepada memasukkan data, untuk menghapus data,
untuk mencari data, bahkan yang paling penting, dan anda
tidak perlu menggunakannya cukup secara manual seperti yang mungkin biasanya Google
spreadsheet seperti ini.
>> Jadi dalam SQL, ada sekumpulan pernyataan keping atau asas
fungsi terbina dalam.
Ada banyak lagi dari ini, tetapi anda boleh pergi jarak yang besar
hanya dengan mengetahui bahawa bahasa ini disebut
SQL mempunyai sekurang-kurangnya empat kenyataan anda boleh memanfaatkan.
>> Padam, untuk menghapus data, Masukkan, untuk menambah baris,
Update, untuk mengubah baris, dan Memilih,
untuk mendapatkan kembali baris dan itu memang apa SQL tidak.
Ia beroperasi sepenuhnya pada baris sehingga bahawa apabila anda memasukkan, atau mengeluarkan,
atau update, atau pilih apa yang anda kembali sebagai satu set hasil yang dipanggil,
seperti pelbagai baris.
Sekelompok baris dari jadual.
>> Jadi kembali pada hari itu, dan sehingga ke hari ini,
Anda boleh berinteraksi dengan pangkalan data menggunakan baris perintah,
tetapi ia tidak terutamanya menyenangkan untuk digunakan tetingkap gaya hitam dan putih ini
dan benar-benar melaksanakan perintah dan melihat-pangkalan data anda.
Antara muka pengguna grafik, atau GUI, adalah lebih lebih lebih baik, boleh dikatakan,
dan sebagainya alat yang kami cadangkan dan diprapasang untuk anda pada alat
dipanggil phpMyAdmin.
Ia adalah satu jumlah kebetulan bahawa nama benda ini mempunyai PHP di dalamnya,
itu hanya bererti bahawa orang-orang yang menulis program ini sendiri
menulis dalam PHP.
>> Tapi itu akhirnya tentang mentadbir pelayan pangkalan data, seperti pelayan MYSQL
bahawa anda mungkin mempunyai, kerana anda lakukan, dalam perkakas CS50 ini.
Jadi ada lebih terperinci di sini daripada kita perlu mengambil berat tentang hari ini,
tetapi apa yang penting adalah bahawa di sebelah kiri sebelah adalah senarai pangkalan data
yang ada pada komputer anda, perkakas CS50 anda,
atau datang projek akhir yang anda mungkin terhadap pihak ketiga, syarikat
laman web atau web server, yang Anda mungkin akan membayar untuk ruang.
Maka pada sebelah kiri adalah pangkalan data, satu daripadanya
adalah pset7 yang saya pinjam dari depan minggu Serangga, dan kemudian di atas
ada melihat ada sekumpulan tab, satu daripadanya
adalah pangkalan data, SQL, status, pengguna, eksport dan sebagainya.
Jadi, anda boleh pergi yang lama cara hanya dengan mewujudkan
bahawa sebahagian besar daripada antara muka pengguna adalah dalam ruang sebelah kiri bahagian atas
dan di atas yang betul di sana.
Jadi apa yang boleh kita benar-benar buat dengan ini?
Nah, mari kita mulai menciptakan sedikit maklumat seperti berikut.
>> Katakan berikut ini adalah kes itu, seperti yang akan hanya dalam beberapa hari,
Anda ingin melaksanakan laman web, yang dipanggil CS50 Kewangan,
dan laman web ini membenarkan anda membeli tanda kutip mengutip dan menjual saham.
Dan ia akan memikirkan harga saham-saham,
akhirnya seperti yang anda akan lihat, dengan bercakap dengan Yahoo Kewangan.
Yang, hebat, mempunyai perkhidmatan percuma di mana anda boleh lulus dalam ticker saham
seperti GOOG untuk Google, dan akan memberikan kembali saham saat ini Google
harga dalam masa lalu beberapa minit sekurang-kurangnya.
>> Jadi, anda akan menggunakannya, pada akhirnya, berpura-pura untuk pengguna
untuk membeli dan menjual sebenarnya saham dengan menggunakan wang maya,
tetapi perkara yang pertama pengguna akan melihat
adalah skrin log masuk ini yang meminta mereka untuk nama pengguna dan kata laluan mereka.
Dan sebagainya, salah satu yang pertama cabaran untuk anda dalam pset7
akan menjadi untuk melaksanakan hujung belakang pangkalan data, hamparan jika anda akan,
yang akan menyimpan pengguna nama dan kata laluan
dan akhirnya apa saham mereka sendiri, dan berapa banyak dan berapa banyak wang tunai yang mereka ada,
begitu banyak hal yang lain dalam meja lain, atau kertas kerja.
>> Jadi mari kita lihat bagaimana ini mungkin kelihatan pada pandangan pertama.
Saya akan kembali ke perkakas dan saya
akan pergi ke URL ini di sini phpMyAdmin localhost / phpmyadmin
dan anda akan melihat bahawa ia membawaku ke antara muka
persis seperti yang kita lihat di tembakan skrin, dan di sini saya
mempunyai pangkalan data tambahan dipanggil kuliah untuk hari ini
dan biarkan aku pergi ke depan pertama dan klik pada pset7.
>> Saya seolah-olah mempunyai beberapa pilihan, satu untuk baru, untuk membuat jadual baru,
dan pautan kepada pengguna, yang adalah jadual saya sudah buat.
Jadi apa meja?
Jadi, jika anda menggunakan Excel sebelum ini, dan jika anda mempunyai
nombor digunakan atau Google Spreadsheet, anda membuka tingkap
dan anda mendapatkan sejumlah besar baris dan lajur,
tetapi kemudian anda biasanya mempunyai lembaran kerja sepanjang bahagian bawah, atau tab berasingan.
Anda boleh memikirkan setiap lembaran kerja sebagai meja
jadi pangkalan data itu, akhirnya, adalah gabungan satu atau lebih jadual, satu
atau lebih lembaran kerja, dalam dunia spreadsheet biasa.
Jadi, saya pergi ke depan dan klik pada lembaran kerja ini
yang saya premade, yang disebut pengguna, a.k.a.
Jadual pangkalan data.
Dan jika saya tatal ke bawah di sini, biarkan aku zum keluar sedikit,
ini adalah apa yang phpMyAdmin memberitahu kita adalah di dalam jadual ini sekarang.
Ini agak mengelirukan pada mulanya pandangan kerana UI bukan
perkara yang tercantik di dunia, tetapi apa yang menarik ialah bahagian ini di sini.
ID, nama pengguna dan hash.
>> Terlebih dahulu, dan anda akan tangan ini dalam permasalahan yang tujuh,
kami memberi anda fail yang mengandungi super jadual pangkalan data yang kecil, yang dipinjam sebenarnya
dari edisi penggodam dari permasalahan yang dua,
yang di dalamnya terdapat enam baris.
Satu untuk Belinda semua jalan ke satu untuk Zamyla,
dan perhatikan di sebelah kiri orang-orang nama pengguna adalah ID yang unik seperti satu,
dua, tiga, empat, lima, enam, bilangan bulat, dan kemudian ke kanan adalah hash.
>> Dan jika, kemungkinan besar, anda tidak melakukan masalah edisi penggodam menetapkan dua,
tetapi hash adalah seperti disulitkan kata laluan dengan beberapa kaveat.
Dan sebagainya, apa yang anda lihat di sini adalah versi dienkripsi kesemua enam
kata laluan kami dari masalah ditetapkan hacker edisi dua itu.
Sekarang ke kiri adalah hanya beberapa perkara GUI, mengedit baris ini, menyalin baris ini,
memotong baris ini.
>> Namun yang menarik sekarang adalah sebagai berikut.
Saya benar-benar boleh mula bereksperimen dengan jadual ini.
Jadi jika saya pergi dan klik SQL tab, saya mendapat kotak teks ini besar.
Dan ini bukan bagaimana kita akan melakukannya ketika benar-benar menulis kod.
Untuk menjadi jelas, phpMyAdmin hanyalah alat itu
akan membiarkan kita melihat-pangkalan data dan biarlah kami bereksperimen dengan pertanyaan.
>> Jadi misalnya, kira Saya betul-betul melaksanakan ini.
Pilih, yang merupakan salah satu dari orang-orang kata kunci yang saya nyatakan sebelum ini, bintang,
yang mewakili semua ruangan dalam jadual.
Dari apa yang jadual?
Nah, pengguna.
Dan notis ada ini konvensyen aneh di SQL
di mana anda benar-benar menggunakan kembali kutu, biasanya,
sebut harga tidak tunggal dan kutipan tidak double apabila anda bercakap tentang jadual nama,
sehingga kutipan belakang adalah perkara yang di tangan kiri atas papan kekunci yang paling
mungkin.
>> Jadi, saya pergi ke depan sekarang dan hanya meninggalkan itu sahaja
dan tatal ke bawah dan klik Go, dan kami benar-benar akan melihat perkara yang sama.
Kita baru sahaja dilaksanakan query SQL mengatakan pilih bintang semua
dari meja dipanggil pengguna, dan apa yang Anda dapatkan adalah ini.
Pada akhirnya, kita akan dapat melakukan perkara yang sama dalam kod,
tetapi buat masa ini semua saya mahu lakukan adalah melihatnya dalam pelayar saya.
Nah mari kita melakukan sesuatu sedikit berbeza.
Mari kita kembali ke tab SQL, dan mari kita hanya mengatakan bahawa apa?
Zamyla telah kehilangan semua nya wang, dan oleh itu
masa bagi kita untuk memadam sebagai pengguna.
Dia tidak lagi log masuk.
>> Jadi, saya akan mengatakan memadam from-- baik, mengekalkan permodalan
untuk konsistensi, menghapus daripada pengguna di mana.
Dan sebagainya, kita boleh mempunyai ini predikat, atau ini
kelayakan, pada akhir kenyataan saya di mana dan bagaimana saya boleh memadam Zamyla?
Dengan nama Zamyla beliau, sehingga lajur, salah satu kolom
dinamakan, jadi di mana nama = "Zamyla".
Dan di sini saya menggunakan dua sebut harga atau sebut harga tunggal,
Anda hanya menggunakan belakang kutu apabila berbicara tentang nama-nama, misalnya,
jadual atau medan.
Dan biarkan aku klik Buka di sini.
Dan kini, laman web tersebut menjadi sedikit tegang.
>> Atau, adakah anda benar-benar ingin melaksanakan memadam daripada pengguna di mana nama sama Zamyla?
Ya.
Jadi sekarang, jika kita kembali ke meja saya oleh pengguna mengklik, melihat bahwa Hm.
Saya melakukan kesalahan.
Dan sebenarnya, aku agak diklik pergi begitu cepat
Anda bahkan tidak melihat mesej ralat merah, mungkin.
Apa yang saya lakukan salah?
PENONTON: Anda tidak perlu untuk mengambil kesempatan namanya.
DAVID J. MALAN: Ya saya dipermodalkan namanya,
tetapi beliau sebenarnya saya Nama pengguna membuat beberapa kesilapan, kan?
Satu, beliau adalah nama pengguna zamyla, huruf kecil Z,
dan nama lajur adalah nama pengguna, bukan nama, jadi mari kita melakukan ini lagi.
Biar saya pergi ke depan dan memotong daripada pengguna di mana
nama pengguna sama dengan kutipan tanda kutip "Zamyla".
-Baik saja?
Jadi ini kelihatan sedikit lebih baik, mari saya pergi tatal ke bawah dan klik Buka.
Ia masih akan menjerit pada saya untuk memastikan.
Saya klik Ya, dan sekarang kita melihat, terus terang ini berlaku, benar-benar
cepat, kurang daripada satu kedua tentu, ini
betul-betul pertanyaan yang tidak perlu lagi dilaksanakan.
Untuk mengesahkan, biarlah saya pengguna klik dan memang sekarang Zamyla hilang.
Sekarang mari kita melakukan yang sebaliknya.
Katakan Gabe mahu mendaftar untuk laman web ini.
Apa pertanyaan SQL, apa perintah saya boleh menaip untuk menambah Gabe?
Nah itu cukup mudah.
Masukkan ke pengguna, dan sekarang mendapat sedikit samar.
Saya perlu menentukan, ke server, apa bidang saya hendak berikan.
Saya tidak peduli apa yang ID Gabe jumlah adalah, jadi saya akan melangkau itu.
Saya bukan akan mengatakan nama pengguna, hash, dan kemudian
nilai-nilai saya mahu meletakkan ada akan menjadi Gabe.
Dan kemudian hash, saya tidak tahu.
Jadi buat masa ini, saya akan meninggalkan yang sebagai besar yang perlu dilakukan.
Kami akan kembali ke bahwa dalam masalah yang telah ditetapkan
spec bagaimana anda benar-benar melakukannya.
>> Jadi melihat, sekali lagi, sintaks.
Masukkan ke dalam nama table, maka senarai kurung dari ladang,
lajur, anda mahu menambah nilai-nilai, dan kemudian hanya
pesanan yang sama persis kiri ke kanan dari nilai yang anda mahu tambah,
dan ia hanya membungkus kerana teks yang agak panjang.
Jadi sekarang biarlah saya klik Buka.
Satu baris dimasukkan.
Dan jika saya kembali ke pengguna, yang menarik
adalah bahwa tidak hanya Gabe kini dalam pangkalan data, apa yang nampaknya ID?
>> Baik itu tujuh.
Mengapa tujuh apabila saya tidak menambahkannya?
Jadi, ini juga adalah salah satu penginapan mendapatkan database.
Banyak dibina dalam fungsi.
Ia ternyata bahawa apabila dibuat jadual ini,
Saya dipratatarajahkan itu secara automatik menetapkan ID dalam apa-apa cara yang
yang akan bertambah.
Jadi jika anda pernah menjulurkan sekitar, dan memandang ID Facebook apa yang anda
jumlah adalah, hari ini ia tidak benar-benar apa-apa yang perlu dilakukan, tetapi Facebook sebagai API,
Antara Muka Pengaturcaraan Aplikasi, di mana anda boleh mendapatkan kembali
sejumlah besar data mengenai diri sendiri, tentang kawan-kawan anda,
dan sambungan anda.
Dan apa yang digunakan untuk menjadi baik yang sejuk dan kembali pada hari,
adalah untuk mencari apa yang anda Facebook adalah nombor ID.
Mark Zuckerberg, misalnya, adalah tiga
kerana dia adalah penulis laman web ini.
Dan seperti cerita pergi, dia menciptakan dua akaun ujian, pengguna pertama dan kedua,
yang kemudian dihapuskan.
Dan sebagainya, Zuck, seperti username di Facebook, adalah nombor ID tiga,
dan kita semua mempunyai jumlah yang jauh yang lebih besar daripada tiga hari ini.
Malah, pada satu masa nanti Facebook berpindah
dari bahkan menggunakan int, yang adalah nilai 32-bit, untuk menggunakan
langkah seterusnya ke atas, dasarnya yang lama lama jadi
bahawa mereka boleh menampung mungkin pengguna mendaftar.
Jadi fakta yang menyenangkan sejarah sedikit.
>> Jadi itu hanya sintaks asas dengan yang
kita mungkin melaksanakan beberapa pertanyaan, tetapi kita benar-benar dapat
melakukan banyak perkara-perkara yang lebih dengan SQL.
Dan anda akan melihat, pada akhirnya, dalam masalah yang ditetapkan tujuh
bahawa anda perlu membuat beberapa keputusan reka bentuk,
di antara mereka akan menjadi apa jenis data untuk digunakan.
Jadi sama seperti dalam C, ada data jenis dalam pangkalan data, seperti MySQL,
dan jenis data yang anda perlu memilih dari termasuk bidang-bidang ini di sini.
Char, varchar, Int, int besar, perpuluhan dan masa kini, dan lain-lain lagi.
Jadi mari kita benar-benar melakukan ini.
Mari kita berpura-pura bahawa kita tidak tangan anda meja pengguna ini
dan biarkan aku pergi ke depan dan membuat, untuk diri saya sendiri, dalam kuliah database--
benar-benar membiarkan saya pergi ke depan dan memadam meja saya ada di sini sudah
supaya kita benar-benar boleh membuat ini.
Alamak.
Saya akan turun ini meja, dan sekarang aku
akan pergi lagi ke kuliah pangkalan data di sini,
Saya akan membuat tabel disebut pengguna dan mari kita
hanya melakukan tiga lajur awalnya dan klik Buka.
>> Sekarang, untuk sebahagian besar, sekali lagi, ini hanyalah
menggunakan alat ini grafis yang disebut phpMyAdmin, dan apa yang kita lakukan sekarang
mewujudkan meja.
Jadi ini adalah seperti fail, Baru, dan mewujudkan fail Excel baru.
Jadi itu meminta saya beberapa soalan, dari kiri ke kanan,
apa nama kolom pertama, dan kemudian nama ruang kedua,
dan nama ketiga.
Jadi mari kita mencipta ini.
ID, dan kemudian nama pengguna adalah satu, dan kemudian hash merupakan satu lagi.
Jadi apa yang harus jenis data sekarang untuk bidang seperti ID?
>> Berikut adalah keseluruhan senarai jenis data disediakan untuk anda dalam pangkalan data,
dan untuk saat ini mari kita pergi dengan int.
Nilai 32-bit, saya tidak berfikir secara realistik saya
akan mempunyai lebih daripada 4 bilion pengguna di dalam akaun saya, dalam perkhidmatan saya,
jadi saya akan terus bergerak kepada soalan yang berikutnya.
Saya tidak akan menentukan panjang atau nilai-nilai,
ia tidak berlaku di sini untuk int an, per se.
Dan sekarang saya boleh menentukan, nampaknya, lalai
nilai, yang saya tidak akan menentukan.
Pemeriksaan A, saya tidak tahu apa itu.
Atribut.
Sekarang kita sebenarnya mempunyai keputusan reka bentuk.
Jadi ada beberapa bidang di sini, tidak semua yang berlaku, tetapi tidak ditandatangani
hanya bermaksud apa?
Itu int mesti?
Hanya bukan negatif.
Jadi ia perlu 0 ke atas.
Tidak, saya tidak akan memeriksa kerana Saya mahu setiap pengguna untuk mempunyai ID,
ia tidak boleh batal.
Dan kemudian, kita dapat lebih banyak lagi keputusan reka bentuk yang menarik seperti ini.
Kami akan kembali ke ini dalam sekejap, tetapi apa yang satu lagi ciri pangkalan data
adalah, adalah bahawa anda boleh memberitahu pelayan pangkalan data yang pergi ke depan
dan mengoptimumkan diri anda, anda RAM dan ruang cakera keras anda,
supaya memilih, dan sisipan, dan menghapus, dan kemas kini benar-benar cepat.
Kontras ini dengan pset5.
>> Jika anda ingin mencari sesuatu dalam jadual hash anda, yang
Anda anggap sebagai pangkalan data, yang terpaksa melakukan semua
berfungsi untuk membuat jadual hash anda dengan cepat.
Ia seperti, jelas, anda.
Betul?
Anda harus dimasukkan ke dalam semua baik masa memperhalusi perkara, mendapatkan fungsi hash
benar, mencari tahu bagaimana banyak baldi untuk memiliki.
>> Tetapi apa yang baik, sekali lagi, tentang database adalah
Anda hanya menyepak bola semua ini kepada orang lain
yang berpikir ini melalui untuk anda, dan apa yang
Saya akan katakan di sini di bawah Indeks ialah bidang ID saya
akan menjadi jalan utama mengenal pasti pengguna dalam pangkalan data ini.
Saya tidak akan berfikir dari Zamyla sebagai Zamyla,
Saya akan memikirkan sebagai nombor 6.
>> Mengapa, mungkin, lebih baik intuitif untuk memikirkan dan model
setiap baris individu anda dengan menggunakan beberapa bukan sesuatu
seperti string, seperti yang Zamyla atau Gabe atau tali lagi masih?
Ya?
>> PENONTON: Satu ID unik?
DAVID J. MALAN: Katakanlah lagi?
PENONTON: Satu ID unik?
DAVID J. MALAN: Satu ID unik, tetapi suppose--
mengikut mana-mana pada umumnya dengan nama pengguna, kira
Saya juga berkata terdapat hanya boleh menjadi salah satu Zamyla di dunia, dan hanya satu Gabe.
Saya boleh mengenakan keunikan kekangan pada tali, juga, jika saya mahu.
Jadi bukan pikiran yang buruk.
>> PENONTON: Lebih selamat.
>> DAVID J. MALAN: Lebih selamat, mengapa?
PENONTON: Anda tidak boleh memberitahu yang mana, seperti dalam pengguna.
DAVID J. MALAN: OK, anda tidak boleh memberitahu mana pengguna
adalah yang jadi ada aspek privasi kepadanya,
terutama jika ID mungkin yang terdapat dalam URL.
Jadi pasti, yang bisa jenis pekerjaan juga.
Pemikiran yang lain?
Ya?
>> PENONTON: Lebih mudah untuk melakukan operasi pada int.
DAVID J. MALAN: Itu kicker sebenar.
Ia hanya lebih efisien, atau lebih mudah untuk komputer,
untuk melakukan operasi pada integer.
Betul?
Int dijamin 32-bit, manakala Zamyla
adalah watak-watak beberapa lama, Gabriel adalah beberapa karakter,
Davenport adalah benar-benar panjang, dan sebagainya itu tidak terlalu cekap dalam penggunaan
tali untuk membandingkan nilai-nilai dan melihat untuk bidang, dan bidang kemas kini,
jika anda boleh pergi dengan hanya satu integer.
Hanya 32 bit.
Jadi nama pengguna, juga, dengan cara ini, tidak perlu menjadi unik,
walaupun mereka mungkin harus yang berkenaan, dan juga dengan cara ini juga
pengguna boleh dibenarkan menukar nama pengguna masing-masing.
>> Sekarang, mari kita meninggalkan ini sebagai cara utama untuk mengenal pasti pengguna.
Ini memberitahu pangkalan data pergi ke depan dan mengoptimumkan diri
supaya up raut ID super cepat.
AI, mengerikan bernama, hanya bermakna Auto Kenaikan,
dan ini adalah cek kotak kita perlu memeriksa
untuk menentukan bahawa bidang ID untuk secara automatik dikemaskini untuk saya,
dan kemudian saya akan tatal ke kanan di sini
dan terus terang saya tidak benar-benar berminat dalam mana-mana lebih bidang ini.
Sudah tentu tidak hari ini.
>> Jadi, saya akan kembali ke sini, di lajur pertama, di mana
Saya perlu memasukkan nama pengguna dan goreng, dan mari kita
pada fokus kurangnya pada yang kedua sekarang.
Int mungkin bukan panggilan yang betul, jadi apa yang masuk akal lebih mungkin?
>> PENONTON: Teks.
DAVID J. MALAN: Katakanlah lagi?
PENONTON: Teks.
DAVID J. MALAN: Teks?
OK, saya mendengar teks.
Apa lagi?
Kami semacam memiliki banyak pilihan yang teks di alam.
Oleh itu, apabila, dan mengapa, lakukan anda menggunakan beberapa?
Baik arang, bertentangan dengan apa yang anda mungkin berfikir, bukan satu karakter.
Ia adalah satu jumlah tertentu aksara.
Jadi, jika kita tahu bahawa semua nama pengguna harus seperti lapan aksara,
seperti yang digunakan untuk menjadi biasa di lebih tua sistem komputer, saya boleh mengatakan char
dan kemudian saya boleh mengatakan 8 di sini.
Saat itulah ruang ketiga menjadi yang berlaku semasa membuat meja.
>> Tetapi itu agak menjengkelkan kerana beberapa orang mungkin
ingin mempunyai nama pengguna yang lebih lama daripada lapan aksara,
sesetengah orang mungkin mahu mempunyai nama pengguna yang lebih pendek,
jadi mengapa melakukan sendiri ke nombor tertentu?
Mengapa tidak mempunyai variabel beberapa aksara dan hanya
mengatakan bahawa panjang maksimum nama adalah, saya tidak tahu, seperti 64 aksara.
Saya tidak boleh berfikir apa-apa kawan-kawan yang mempunyai nama lebih dari 64 aksara,
dan bahkan jika itu terlalu singkat anda boleh pasti benjolan itu sewenang-wenangnya.
>> Jadi varchar dijadikan pemboleh ubah beberapa karakter.
Teks tidak adalah naluri yang tidak baik, dan terus terang semacam itu tidak apa yang dikatakan,
tetapi medan teks boleh seperti 65,000 bait sekurang-kurangnya.
Itu mungkin pembunuhan besar-besaran untuk lapangan, dan pada kenyataannya, yup, 65.535.
Itu mungkin pembunuhan besar-besaran untuk nama, jadi kita akan tetap, biasanya,
dengan varchars untuk teks lapangan dan hash juga.
Hash, ternyata, kita boleh melakukan varchar juga atau sesuatu seperti itu,
tetapi kita tidak akan memberi tumpuan hari ini di kriptografi ada dan nombor-nombor
bahawa kita mungkin sebenarnya akan digunakan untuk panjangnya.
>> Tetapi saya tatal ke bawah ke kanan.
Anda hanya boleh mempunyai satu indeks utama untuk meja,
tetapi saya ingin memohon mana-mana, sekarang, kepada nama pengguna, anda akan berkata?
Apakah yang perlu username didasarkan pada kabur pemahaman tentang keempat-empat pilihan?
Hanya dengan nama-nama mereka?
>> PENONTON: unik.
>> DAVID J. MALAN: Jadi, yang penting
Jadi ternyata yang tidak sanggup Anda memberitahu pangkalan data, terlebih dahulu,
ini adalah cara yang utama mengenal pasti bidang.
Anda juga boleh katakan ini adalah akan menjadi satu bidang yang unik.
Ia tidak akan menjadi perkara yang aku mengandalkan,
tetapi saya ingin database untuk pada dasarnya memiliki bahawa jika keadaan, jadi
bahawa jika saya pernah cuba untuk mendaftar dua pengguna dengan nama yang sama,
daripada pangkalan data yang rata tidak akan membiarkan saya.
Saya mungkin mempunyai beberapa kod tambahan dalam PHP yang menghalang lebih banyak,
tetapi pangkalan data juga dapat memastikan yang yang tidak pernah akan terjadi.
>> Sekarang, sebagai samping, terutama karena Anda berfikir tentang projek akhir,
ingat itu indeks dan penuh teks sebenarnya cukup berguna.
Jika anda mempunyai pangkalan data yang lebih besar, tidak dengan puluhan, tetapi dengan beratus-ratus atau beribu-ribu
atau bahkan berjuta-juta ladang, anda boleh juga memberitahu pangkalan data terlebih dahulu
ini adalah bidang yang saya akan untuk mencari di banyak.
Mungkin nama pengguna nya, mungkin itu bio, jika anda
membuat laman web Facebook seperti yang mempunyai perenggan yang pengguna itu dibenarkan
untuk menyelamatkan, dan jika anda mahu memberitahu pangkalan data terlebih dahulu
Saya akan mencari di bidang ini banyak, tetapi ia tidak semestinya unik,
anda boleh menentukan membuat saya indeks.
Atau, anda boleh mengatakan juga membolehkan saya untuk melakukan semacam carian sewenang-wenang seperti Perintah
atau Control M, seperti anda mungkin di Word Processor,
supaya anda boleh melihat string sewenang-wenangnya atau substrings dalam bidang ini.
Dengan kata lain, kita sudah ke titik pada semester
di mana anda tidak perlu bimbang tentang bagaimana untuk melaksanakan perkara-perkara yang efisien.
Anda hanya perlu tahu tentang apa yang keputusan reka bentuk untuk membuat supaya anda
menggunakan alat-alat yang tepat untuk perdagangan dalam rangka untuk meningkatkan ciri-
bahawa orang lain telah dibina untuk anda.
Jadi untuk recap, utama harus hanya mempunyai satu, anda hanya boleh mempunyai satu,
dan ia adalah perkara yang anda sedang melakukan untuk gunakan untuk mengenal pasti bidang yang unik.
Unik hanya sama di hadapan Allah, tetapi Anda mungkin hanya kadang-kadang menggunakannya,
tetapi anda ingin database untuk mengenakan ia.
Indeks hanya berarti preemptively mempercepat pekerjaan pada masa akan datang
supaya saya dapat mencari perkara dalam bidang ini.
Dan kemudian teks lengkap umumnya untuk paragraf, atau esei, atau badan-badan besar
teks di mana anda juga mungkin ingin memiliki
kad liar seperti setara bintang.
Betul.
>> Jadi yang agak banyak untuk semua sekali gus.
Mari kita lihat apakah kita tidak boleh menyaring beberapa ciri-ciri ini
dan kemudian membina sesuatu agak mudah, tetapi berkuasa.
Jadi di antara yang lain keputusan reka bentuk anda
akhirnya akan mempunyai yang bersama-sama garis mesin penyimpanan.
Dan saya hanya masyhurkan ini pada menjangkakan projek akhir,
dan antisipasi mari say-- tidak mari kita lakukan ini.
Mari kita membina ini sedikit permohonan pertama.
Saya akan masuk ke terminal saya tingkap, dan di sini bukan
hanya counter.php, yang kita sekarang akan untuk menghapuskan sebagai tidak lagi erat,
tetapi kami mempunyai sejumlah besar direktori dan ini
akan menjadi hampir sama dalam semangat apa yang anda akan melihat dalam permasalahan yang tujuh.
>> Oleh itu, kita mempunyai tiga direktori termasuk awam dan template, yang
betul-betul di mana kita berhenti pada Isnin dengan MVC paradigma seluruh kami.
Dan untuk rekap, di khalayak ramai akan pergi mana-mana fail yang saya mahu pengguna untuk benar-benar
v dapat melawat di browser mereka melalui URL.
Template.
Apa yang kita masukkan ke dalam template?
Apakah jenis barangan?
Tidak banyak tetapi pasangan fail sekurang-kurangnya pada hari Isnin.
Yeah.
>> PENONTON: Header dan Footer?
>> DAVID J. MALAN: Header dan Footer.
Oleh itu, kita mempunyai sesuatu yang serupa pada hari ini juga.
Kami telah mendapat lebih beberapa fail tetapi Footer saya lihat, Header saya lihat,
dan kemudian sekelompok fail lain.
Jadi, ini adalah setara dari pandangan V MVC, yang,
lagi, akan menjadi sedikit lebih yang jelas dalam permasalahan yang tujuh,
tetapi ini hanyalah sebuah folder Saya meletakkan banyak estetika saya.
Banyak HTML saya, banyak bentuk saya.
Sementara itu, termasuk, adalah satu lagi direktori yang mempunyai ketiga-tiga fail
dan mari kita cepat melihat ini.
>> Saya akan pergi ke depan dan membuka config.php.
Ternyata, banyak seperti sebelum ini dalam jangka masa,
Anda tajam termasuk CS50 dot h dengan pset7.
Dalam contoh hari ini, anda akan untuk melakukan hal yang sama dengan yang
dengan pernyataan memerlukan yang berkesan
termasuk ini beberapa baris.
Jadi untuk menjadi jelas, ini adalah fail yang dipanggil config.php.
Dan perhatikan apa yang dilakukannya.
Ia nampaknya melakukan sesuatu samar, menghidupkan mesej ralat
supaya anda boleh melihat mereka dalam pelayar.
Ini, maka, nampaknya memerlukan dua fail lain
jadi ini adalah seperti #include di C, dan kemudian yang satu ini kita lihat,
dan kami telah mengandalkan, ini ternyata pada bahawa keranjang belanja seperti fungsi.
>> Ini bermakna wasiat Cookie dihantar kembali dan sebagainya.
Jadi mengapa ini menarik?
Nah, jika kita kembali ke ini direktori dan membuka, misalnya,
constance.php.
Perhatikan bahawa PHP yang pemalar sokongan, ia tidak cukup seperti #define di C.
Sebaliknya, anda secara literal mengatakan yang ditetapkan, dan notis
yang saya telah disimpan terlebih dahulu empat konstan dalam fail ini.
Satu untuk pangkalan data hari ini, untuk kata laluan saya, untuk nama pengguna saya,
dan untuk nama pelayan.
Jadi ini benar-benar akan menjadi cukup yang sama di dalam permasalahan yang tujuh.
Dan akhir sekali, dan ini adalah di mana saya akan mendapatkan beberapa fungsi bagus
dari staf, functions.php adalah sekumpulan kode kami telah menulis,
dan saya mengambil sesuatu dari barang ini dari permasalahan yang tujuh
untuk hari ini, yang melakukan banyak hal dan mari kita melihat salah seorang daripada mereka
khususnya.
Fungsi ini di sini, pertanyaan, akan menjadi
fungsi PHP yang kita panggil dalam rangka melaksanakan SQL.
Sesaat yang lalu kami yang menggunakan phpMyAdmin, tapi itu hanya
untuk jenis tujuan pembelajaran dan tujuan diagnostik
dan melupakan set pangkalan data anda.
Apabila anda benar-benar menggunakan anda pangkalan data, anda, manusia,
jelas tidak akan yang akan menarik ke atas web
halaman setiap kali seseorang mendaftar.
Anda akan menulis kod yang menyisipkan dan menghapuskan pengguna apabila diminta,
dan kami akan melakukan hal ini melalui fungsi query.
Jika sekarang saya tatal ke bawah, ada akan menjadi beberapa ciri-ciri.
Redirect akan menjadi fungsi kita menulis
untuk anda yang membolehkan anda untuk menghantar pengguna ke URL yang lain,
dan membuat adalah fungsi, yang seperti yang kita lihat pada hari Isnin, yang benar-benar membuat
templat, tetapi lebih kepada ini dalam bentuk kaki pset7 sendiri melalui.
Buat masa ini, mari kita pergi ke depan dan melakukan hal ini.
>> Biar saya pergi ke dalam jadual kuliah saya dan melihat bahawa pada masa apa-apa
di sini dulu, dan biarkan aku juga pergi ke dalam direktori awam saya, di mana
hanya ada satu file, index.php.
Fail ini muncul menjadi super mudah pada masa ini, ia kelihatan seperti ini.
Sangat banyak seperti bagaimana kita tinggalkan pada Isnin.
Saya memerlukan fail ini, config.php, yang dalam
adalah termasuk direktori, yang adalah di dot dot, ibu bapa saya,
dan kemudian ia hanya menjadikan fail ini.
Jadi apa fail ini?
>> Mari kita buka dengan template yang saya form.php, dan kita akan melihat ini.
Super mudah, rupanya borang ini adalah akan mengirimkan oleh $ _GET atau $ _POST.
Cepat check kewarasan.
Secara harfiah visual mencari fail.
Kaedah sama pos.
Jadi ia tidak akan menggunakan URL, seperti Google tidak, ia akan menyusun petak
maklumat yang di belakang tabir dan ia
akan tunduk kepada file bernama register.php,
dan itulah fail kita belum ditulis
tetapi apa yang ini akan kelihatan seperti adalah ini.
>> Jika saya pergi ke halaman yang berasingan ini apa localhost / index.php kelihatan seperti.
Dan sekali lagi, pelayan ini hanya asumsi index.php.
Enter.
Supaya di mana kami di, dan apa yang saya ingin lakukan
adalah dapat mengetik perkara seperti Daud, dan kemudian
nombor telefon saya, yang akan berkata 617-555-1212 untuk saat ini, daftar
dan sekarang login.php tidak dijumpai.
Jadi saya perlu melaksanakan hal ini.
Jadi mari kita cepat cambuk sesuatu seperti sehingga ini.
Biar saya pergi ke dalam direktori awam saya dan melakukan gedit dari register.php,
dan sekarang saya akan pergi ke depan dan memulakan mod PHP, seperti yang kami lakukan pada hari Isnin,
dan tag dekat PHP, dan mari kita lakukan beberapa perkara.
>> Jadi satu, saya tahu, dari setelah menulis bentuk itu,
yang saya mahu untuk memeriksa perkara-perkara berikut.
Jika ia adalah kosong, apa pun pengguna ditaip masuk ke medan nama, kemudian
Saya akan mengatakan sesuatu seperti meminta maaf tiada nama.
Minta maaf, sementara itu, tidak terbina dalam PHP hal,
itu fungsi kita menulis functions.php untuk pset7
supaya anda mempunyai akses kepadanya.
Lain jika bidang yang lain kosong, nombor, maka saya
akan minta maaf kepada pengguna dan berkata jumlah yang hilang.
Simpan fail ini.
>> Sekarang mari kita kembali ke browser saya, kembali ke forum cuba lagi.
Mendaftar.
OK.
Tiada apa yang berlaku, yang baik.
Saya tidak mendapat mesej ralat.
Tetapi jika sebaliknya, mari kita menambah nilai ini halaman, dan tidak memberikan apa-apa.
Sialan.
Melakukan itu.
Mendaftar.
Apa yang saya lakukan salah?
Jika kosong, nama $ _POST.
Katakanlah lagi?
>> Oh, sudah tentu.
Saya terlupa bahagian yang paling penting, yang adalah memerlukan ("../ includes / config.php.").
Saya perlu mempunyai akses ke memohon maaf fungsi, yang
Sebab tidak ada yang terjadi.
Fungsi ini tidak benar-benar wujud.
Jadi mari kita cuba ini lagi.
Mari kita kembali halaman tersebut, klik Daftar.
OK.
Ada itu.
Jadi, keluaran kami lihat di sini adalah hasil
memanggil meminta maaf satu fungsi, super mudah,
dan ia hanya mencetak apa sahaja Saya memberikan sebagai hujah.
>> Baiklah, jadi mari kita bekerja sama.
Mari kita memberikan nama saya seperti Daud, daftar,
hilang nombor OK mari kita memperuntukkan bahawa, juga.
617-555-1212.
Mendaftar.
OK.
Jadi semuanya baik-baik sekarang, hanya tidak menarik sedang berlaku.
Jadi sekarang mari kita membuat sesuatu yang lebih menarik berlaku seperti ini.
Biar saya pergi ke phpMyAdmin, dan mari kita sebenarnya buat jadual yang dipanggil pengguna,
Saya akan memberikan tiga tiang, dan saya akan dengan cepat
mewujudkan ID, dan kemudian nama, dan kemudian nombor,
dan medan ID saya akan meninggalkan int an.
Medan nama saya akan untuk meninggalkan varchar,
dan kami akan mengatakan 64, agak sewenang-wenangnya.
Bilangan aku akan untuk membuat, anda tahu apa?
Kami akan ke menyokong nombor Amerika Syarikat di sini,
jadi saya akan melakukan sesuatu seperti char dan kemudian 10 aksara
maksimum untuk kod kawasan dan kemudian tujuh digit.
Dan kemudian di sini, saya akan menentukan kenaikan otomatis bidang ini,
membuat ini kunci utama, dan Saya akan pergi ke depan dan tidak
memeriksa mana-mana kotak yang lain.
>> Oleh itu, apabila saya kini akhirnya klik Simpan, dan saya kembali ke meja pengguna saya,
ini adalah apa yang ia kelihatan seperti jika saya sekarang klik struktur Tab Baharu.
Jadi perkara ini, yang jelas, hanya cara phpMyAdmin ini
mengatakan jadual pangkalan data anda mempunyai ID, nama, dan nombor yang
dengan orang-orang konfigurasi tertentu dan kami akan mengabaikan sisa ladang
ada buat masa ini.
>> Jadi sekarang apa yang saya mahu lakukan?
Jadi jika saya pergi sekarang ke dalam akaun saya kod sumber, jika semuanya berjalan dengan lancar
Saya ingin menjalankan pertanyaan berikut.
Masukkan ke dalam, dan saya boleh hanya mengatakan pengguna saya tidak ketat
perlu kembali orang-kutu jika ia bukan kata yang berbahaya seperti pengguna.
Saya akan menyebut nama, nombor, dan kemudian di sini saya
tidak akan kode keras angka dari nilai-nilai lagi.
Saya akan meletakkan dua tanda tanya.
Dan ini adalah konvensyen dalam pelbagai bahasa
dimana jika anda mahu mempunyai sebuah tempat untuk rentetan
Anda akan menggunakan soalan tanda, atas sebab-sebab kita akan
kembali untuk berbual tentang keselamatan, dan di sini
Saya akan lulus pada mereka dua bidang menyiarkan nama,
dan kemudian posting nombor, dan sekarang menyimpan fail.
>> Dan sekarang saya akan turun di sini adalah super
hanya mengatakan rendersuccess.php, yang akan menjadi template lain.
Saya akan membuat benar-benar cepat.
Geditsuccess.php dan saya hanya akan mengatakan kejayaan H1 dalam fail itu.
Baik.
Jadi sekarang, mari kita kembali kepada pelayar, di mana saya lawati sebelum ini.
Mari kita pergi ke depan dan mengesahkan bahawa saya menulis David, saya menulis di nombor telefon,
mendaftar.
Sialan.
Apa yang saya lakukan salah?
Jadi, saya melihat kesalahan di sini, anda mempunyai kesalahan dalam sintaks SQL anda.
Biar saya melompat kembali ke gedit, mari saya kembali ke login.php,
dan apa yang saya meninggalkan bahawa adalah penting masa yang lalu?
Saya mau ini.
Adakah anda ingin tahu bahawa selain daripada mempunyai perasan sebelum ini, tetapi saya perlu ini.
>> Jadi sekarang mari kita kembali, dan ini sangat membantu untuk melihat dalam pelayar
dan sebab itu di config.php kita meludahkan kesalahan.
Mari kita pergi ke depan dan mengambil kembali, klik Teruskan, kejayaan.
Jadi sekarang biarlah saya pergi ke saya pangkalan data di sini dan klik pada Pengguna,
dan semak imbas, dan perhatikan saya sekarang mempunyai Daud dalam pangkalan data saya di sini.
Sekarang teknikal laman web ini adalah belum di internet awam,
jadi saya tidak boleh mempunyai lain orang dalam meletakkan di sini,
tetapi jika saya kini mahu, untuk Contohnya, menghantar saya mesej teks.
Marilah kita pergi risiko di sini dan melihat apakah ini benar-benar bekerja.
Saya akan pergi ke depan dan memadam baris ini
dan kami akan mengaburkan ini dalam video kemudian
jadi kami tidak mempunyai seluruh internet menghantar mesej saya,
dan kami kini akan pergi ke pelayar dan kami akan pergi ke kuliah
dan kami akan menaip berbeza jumlah di sini, daftar, kejayaan.
>> Jadi sekarang, nombor saya sendiri yang mungkin dalam pangkalan data, dan sekarang bahagian yang menyeronokkan.
Mari kita benar-benar menggunakan PHP untuk melakukan sesuatu pemrograman,
sama ada dari perintah talian atau dari tempat lain,
dan buat masa ini saya cuma akan tetap sederhana
dan aku akan pergi ke dalam akaun saya direktori di sini dan melakukan hal berikut.
Skrip gedit katakan, kita akan menyebutnya teks, #! / user / bin / plates PHP,
seperti yang kita lihat masa lalu.
PHP.
>> Sekarang saya akan memang membutuhkan termasuk config.php,
walaupun kekuatan ini mendorong sedikit kesalahan.
Dan sekarang aku akan pergi ke depan dan berkata baris, pertanyaan, pilih bintang daripada pengguna,
dan sekarang di sini saya akan melakukan teknik yang dari waktu terakhir untuk setiap baris sebagai baris.
Dan saya akan melakukan sesuatu yang sederhana.
Printf katakanlah Nama ini, dan nombor adalah ini, garis miring terbalik n.
Dan sekarang saya akan lulus berturut-turut mengutip nama tanda kutip,
dan bilangan baris kutipan tanda kutip, dan sekarang mari kita pergi ke depan
dan tetingkap terminal saya chmod a + x ini untuk membuat
skrip ini dipanggil laku teks.
Dan sekarang mari kita jalankan teks.
>> OK, jadi kemajuan.
Sehingga Aku sekarang bertulis perintah naskah baris,
dalam bahasa yang dikenali sebagai PHP, bahawa, kerana itu memerlukan line,
mempunyai akses kepada semua konfigurasi yang pemalar yang saya ditetapkan.
Nama pangkalan data dan lain-lain.
Malah, hanya untuk menjadi jelas bahawa ini bukan suatu kebetulan,
biarlah saya pergi ke depan dan mendaftar, benar-benar cepat, orang lain seperti Rob
dan akan memberinya bilangan 555-1212.
>> Dan kini, jika saya menjalankan skrip sekali lagi, perhatikan kuasa
dari apa yang kami lakukan dengan database.
Sekarang saya telah melihat langsung apa yang Dua baris yang dalam pangkalan data saya.
Jadi sekarang mari kita cuba untuk melakukan sesuatu bahkan lebih bagus dalam,
dan ini adalah bahagian yang kita sudah tidak diuji terlebih dahulu,
maka kali terakhir saya melakukan ini perkara yang pergi teruk serba salah,
kita mempunyai video yang bermaksud sedemikian.
>> Sebenarnya, ya, lucu samping.
Jadi masa yang lalu, dalam kuliah seperti dua tahun yang lalu,
kami membuat keputusan, saya membuat keputusan, untuk menjadi semua ini akan menjadi satu idea yang hebat
untuk secara dinamik menghasilkan e-mel dalam kelas, dengan menggunakan CS50 pangkalan data keseluruhan
pelajar yang telah memberi kami nombor mereka dan operator telefon mereka yang anda
mungkin ingat dari pset0, bagaimana untuk alasan, ternyata
Saya mempunyai minor bug dalam program saya dan melakukan beberapa kesilapan pada tahun 2012, saya fikir.
>> Di mana, satu aku untuk loop yang melakukan hal semacam ini,
iterasi pangkalan data, mendapat nama dari pangkalan data,
nama dari database, dan kemudian pada setiap lelaran gelung bahawa saya menghantar e-mel.
Tapi bukannya menghantar satu e-mel, saya menerima satu email lelaran pertama,
dan dua email yang lelaran kedua, dihantar tiga email yang lelaran kedua, yang
kerana anda mungkin ingat dari kami perbincangan notasi asimptot
O ini besar tidak baik, seperti n kuasa dua adalah berapa banyak mesej yang saya dihantar,
tetapi ia tidak bahkan email ia adalah mesej teks.
>> Dan seperti yang anda tahu, kehadirannya tidak adalah super tinggi menjelang akhir semester
dan saya fikir ia akan menjadi lucu di masa untuk mengatakan, "Mengapa tidak kelas anda?"
Dalam teks mesej saya dihantar kepada seluruh kelas,
dan ia adalah lucu untuk suka 50% daripada kelas, tetapi 50% itu, beberapa di antaranya
panik, saya dihantar luar biasa nota manis minta maaf
kepada kakitangan untuk meminta maaf setelah ketinggalan kuliah hanya
ini sekali, kan?
>> Sehingga akan teruk serba salah.
Jadi dengan semangat ini, mari kita cuba ini lagi tetapi hanya dengan nombor saya.
Terlebih dahulu, functions.php, Saya telah menulis fungsi ini di sini.
Ia dipanggil teks, dan ia mengambil masa dalam tiga hujah.
Beberapa, pembawa, dan mesej.
>> Saya menggunakan pernyataan switch, yang hebat PHP mengambil tali, bukan sahaja
bilangan bulat, dan saya tidak melaksanakan semua sokongan untuk ini lagi,
Aku baru saja melakukan AT & T dan Verizon.
Sebab ternyata yang dengan pembawa ini
mereka mempunyai e-mel ke SMS gateway, di mana anda boleh benar-benar
menghantar e-mel kepada alamat seperti nombor telefon di vtext.com
dan jika pengguna tidak disekat mesej-mesej, ia akan pergi melalui
adalah mesej teks.
>> Sekarang untuk melakukan hal ini, saya akan perlu menambah satu bidang yang sangat cepat untuk pangkalan data saya.
Saya akan pergi ke struktur saya, dan saya
akan pergi ke depan dan menambah lapangan di hujung meja.
Mari kita klik Go, dan saya akan memanggil syarikat penerbangan ini
dan buat masa ini saya akan pergi ke meninggalkan ini sebagai teks bar,
tetapi kita boleh menjadi lebih menarik pada masa akan datang.
Saya akan pergi dengan cepat ke meja saya, dan saya
akan menyingkirkan dari Rob, kerana itulah beberapa palsu,
Saya akan pergi ke edit di sini dan saya akan berubah operator saya secara manual
menjadi Verizon, yang adalah, dan kini di sini.
>> Mari kita buat cek kewarasan cepat.
Mari kita membuka naskah teks kami, yang kelihatan seperti ini, syarikat penerbangan adalah% s.
Kami sedang melakukan kesalahan lebih banyak memeriksa daripada yang saya lakukan pada tahun 2012, syarikat penerbangan.
Dan sekarang, saya akan pergi ke depan dan kembali menjalankan skrip.
OK.
Carrier adalah Verizon, yang bermaksud sekarang mudah-mudahan saya boleh melakukan hal ini.
Benar tahun ini, mudah-mudahan, di sini kita pergi.
>> Jadi dalam ini untuk gelung, saya akan tidak hanya memiliki printf ini,
Saya juga akan memanggil teks dan penggunaan fungsi recall ini
adalah ia mengambil nombor, yang pembawa, dan mesej.
Jadi mari kita lihat, jumlah yang akan menjadi barisan kutipan tanda kutip "nombor,"
baris kutipan tanda kutip "pengangkut," 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 kunci telefon, silakan berdoa, sialan.
Boleh- ubah Undefined oh tunggu, tunggu, tunggu, sangat cepat.
Sangat cepat, cepat nyata.
Ini benar-benar berbaloi.
Biar saya ambil, biar saya ambil, uh-oh.
Matur nuwun, teks mempunyai mulai dari orang lain.
Biar saya pergi ke hadapan dan membuka nyata cepat, dropbox.php / mel di sini.
Siap sedia.
Benar-benar layak.
Muat turun.
OK, sumber src8m.
OK.
>> Perlu satu baris lebih lanjut di sini.
Oh ada itu, itu di Frosh IM, itu dalam daftar pada tiga.
Oh hello, Margo, matur nuwun kanthi sanget.
OK, dan saya hilang talian ini di sini.
Jadi, saya cepat ambil baris kode ini,
yang merangkumi mel atau perpustakaan bahawa saya benar-benar ingin untuk digunakan,
Saya akan cepat kembali ke dalam fungsi,
Saya akan pergi ke bahagian atas ini file dan memerlukan fail ini juga,
dan sekarang saya akan benar-benar menyeberang saya jari ketika saya kembali kepada perintah
naskah baris, yang ada dalam diri Direktori tuan rumah tempatan hari ini.
Teks berjalan.
Enter.
Mail.
Siap sedia.
Mail.
Oh, OK.
Di sini kita pergi.
>> Mail mendapat PHP mailer baru.
Adakah saya melakukan ini?
Sialan.
Supaya- oh, tunggu, tunggu, tunggu.
Stand by.
Saya berjanji, ini adalah akan menjadi begitu berharga.
Alamat.
Ini adalah mengapa saya tidak membuat contoh di depan kelas.
Ugh.
Para penerima berikut gagal.
Mari kita cuba satu hal.
SMTP diatur dari, tambah alamat, alamat memang itu.
Mari kita cuba bahagian ini lalu di alamat.
Ah, saya benar-benar sedih sekarang.
Matur nuwun.
Tetapi saya benar-benar menghargai semua teks-teks anda telah dihantar.
Anda telah mendapat Daud ini.
Kau meniup.
Mari kita meninggalkannya di sana dan kami akan memperbaikinya pada Isnin.
Jumpa.
>> Daven Farnham: Dan kini Deep Pemikiran oleh Daven Farnham.
Jika pohon binari jatuh di hutan dan tiada orang menjawab kepada C itu-- [tertawa].