[Powered by Google Translate] [Week 9] [David J. Malan - Universiti Harvard] [Ini adalah CS50. - CS50.TV] Semua hak. Selamat kembali. Ini adalah CS50, dan ini adalah permulaan sebanyak 9 minggu. Hari ini kita memberi tumpuan khususnya pada reka bentuk, tidak lagi dalam konteks C tetapi dalam konteks PHP dan sedikit SQL dan sedikit JavaScript, terutamanya ke arah akhir kedua-dua pset 7 dan juga projek akhir anda. Malah, jika anda berada di titik itu dalam projek akhir anda mana mungkin seperti satu jam atau lebih yang lalu anda sekurang-kurangnya mula memberikan beberapa pemikiran projek akhir anda dan anda berfikir anda ingin bekerjasama dengan 1 atau 2 rakan sekelas, jika anda mempunyai masalah menyambung dengan berkata rakan sekelas, berasa bebas untuk mengisi borang di cs50.net/partners/form. Ia hanya meminta anda siapa anda, apa jenis projek anda memikirkan, di mana anda tinggal hanya atas sebab-sebab logistik. Dan kemudian jika anda mahu untuk memerhatikan pada sepanjang minggu depan atau jadi URL spreadsheet di situ, maka anda boleh melihat versi baca sahaja doc Google di mana kami mengumpul maklumat tersebut. Jadi jika anda mahu bekerja dengan seseorang, dengan cara semua berasa bebas untuk mendekati rakyat melalui mekanisme itu. Tetapi majoriti orang melakukan kerja solo. Itu betul-betul halus. Jadi tidak merasakan bahawa ini adalah dalam apa jua cara wajib. Pada hari Jumaat ia hanya saya dan beberapa pasukan di sini, teater kosong untuk sebahagian besar. Terdapat 3 pelancong duduk di sana, jadi yang agak janggal. Apa yang kita bercakap tentang adalah pangkalan data dan kita bercakap tentang pset 7 sedikit. Dan jika anda tidak berlaku untuk menangkap bahawa pada video sahaja lagi, yang halus. Saya akan cuba untuk menentukan apa-apa terma yang kita sebaliknya akan mengambil untuk diberikan berdasarkan kuliah Jumaat. Tetapi hari ini kita akan cuba untuk mendapatkan anda ke titik bukan hanya dapat melakukan sesuatu seperti pset 7 tetapi benar-benar memahami apa yang berlaku di bawah hood, terutamanya beberapa abstrak bahawa kita meletakkan di tempat dalam fail functions.php untuk membuat hidup anda sedikit lebih mudah tetapi supaya anda akhirnya memahami supaya apabila roda latihan datang dalam beberapa minggu anda masih boleh hidup dalam dunia sebenar dan melakukan barangan ini tanpa rangka kerja mana-mana CS50 bawahnya anda. Ini _SESSION $, bagi mereka yang biasa atau yang sudah ditangkap video pada hari Jumaat, apakah SESI marilah kita lakukan dalam aplikasi PHP berasaskan web? Ini adalah pembolehubah Superglobal, yang bermakna ia adalah serupa dalam semangat untuk GET dan POST dan beberapa yang lain, tetapi apa yang perkara ini berguna? Apakah SESI digunakan untuk? Yeah. [Pelajar] Pembalakan masuk Maaf? [Pelajar] Pembalakan masuk Pembalakan masuk Sesungguhnya. Dalam pset 7 kita menggunakan Superglobal SESI untuk memudahkan log masuk Dan apa yang bagus tentang Superglobal ini adalah bahawa ia adalah satu array bersekutu. Array bersekutu, ingat, hanya pelbagai tetapi mempunyai tidak lagi yang indeks untuk menjadi nombor seperti 012. Mereka boleh menjadi nombor atau mereka boleh menjadi lebih rentetan. Dan sebagainya jika anda menyelam ke dalam pset 7 lagi, anda mungkin ingat bahawa kita menyimpan ID utama dipanggil di dalam array ini bersekutu yang nilai adalah sesuatu seperti 123 - apa dilog masuk ID pengguna. Motivasi untuk ini adalah bahawa walaupun selepas pengguna telah melawat localhost atau laman web saya lebih amnya dan kemudian mereka telah log masuk, walaupun mereka tidak klik link atau kembali ke laman web saya selama 5 minit atau walaupun sejam atau walaupun sehari tetapi mereka meninggalkan tetingkap pelayar mereka terbuka, melalui Superglobal ini saya boleh ingat bahawa mereka log masuk Dalam erti kata lain, ia membolehkan saya untuk menyimpan apa-apa sedikit jangka panjang saya mahu tentang pengguna. Dan anda boleh berfikir ia benar-benar sebagai penjelmaan shopping cart. Tempat seperti Amazon jelas membolehkan anda meletakkan perkara-perkara ke dalam troli membeli-belah, tetapi HTTP, protokol bahawa kuasa Web, adalah bernegara dalam erti kata bahawa apabila anda melawat laman web, bagi sebahagian besar anda tidak mempunyai beberapa sambungan rangkaian malar antara pelayar anda dan pelayan. Sebaik sahaja anda telah turun HTML dan JPEG dan GIF dan semua itu, sambungan hilang dan anda hanya mempunyai salinan HTML dan barang kecil dari pelayan. Tetapi jika pelayan mahu ingat sesuatu tentang anda, beban pada pelayan sebenarnya merekodkan maklumat itu. Dan supaya anda pengaturcara yang mempunyai kawalan ke atas pelayan boleh meletakkan apa-apa yang paling anda mahu di dalam array ini bersekutu Superglobal dan ia akan berada di sana masa depan pengguna datang kembali, sama ada minit atau walaupun hari kemudian, melainkan mereka menutup tetingkap pelayar mereka, di mana SESI titik hilang. Jadi ia adalah simpanan tidak kekal, ia adalah non-persistent, dan ia bertujuan untuk pergi secepat pengguna menutup pelayar mereka - tidak hanya bahawa tab, sering pelayar keseluruhan, sekali gus berkesan pembalakan pengguna. Jadi bagaimana perkara ini sebenarnya dilaksanakan? Mari kita lihat cepat di satu contoh mudah kita melihat pada hari Jumaat. Bagi mereka yang tidak biasa, ia adalah semudah ini. Ini adalah satu laman web yang tunggal tujuan dalam kehidupan adalah untuk memberitahu saya berapa kali saya telah melawat halaman ini. Ini adalah kali pertama di sini pada hari Isnin bahawa saya melawat, jadi ia mengatakan 0 times. Tetapi jika saya mula muatkan semula halaman ini, ia mengatakan 1 kali, 2, 3, 4, 5, dan ini akan akhirnya hanya menyimpan pada membilang sehingga, up, up, up, up bagi setiap kali saya sebenarnya klik Reload di atasnya. Jadi bagaimana ini bekerja? Biar saya pergi di dalam fail ini dipanggil counter.php. Bahagian atas ia adalah semua komen biru, tetapi bahagian yang menarik di sini. Pada 13 baris kita panggil ini session_start fungsi, dan itu adalah benar-benar semua yang anda perlu lakukan jika anda mahu mempunyai akses ini Superglobal khas dipanggil $ _SESSION. Yang menjadikan ia semua mungkin, dan kita akan melihat dalam seketika bagaimana itu semua mungkin. Dalam talian notis 16 apa yang saya lakukan. Jika kunci, dipanggil kaunter - dalam erti kata lain, nilai indeks - "kaunter" wujud dalam pelbagai ini dipanggil SESI, maka apa yang saya lakukan dengan ia dalam baris bawah? Apakah line 18 melakukan? [Sambutan pelajar didengar] Apa itu? [Pelajar] Menyimpan nilai. Baik. Ia menyimpan nilai yang dalam SESI sekarang dalam pembolehubah baru sementara tempatan, $ Kaunter dalam huruf kecil semua. Notis bahawa PHP sudah menjadi sedikit malas di sini. Notis kita tidak mempunyai apa-apa sebutan int atau float atau tali atau apa-apa seperti yang kerana PHP adalah lemah ditaip, di mana anda tidak perlu untuk menentukan jenis pembolehubah, dan dalam kes ini di sini saya telah tidak diisytiharkan lagi. Saya mengisytiharkan ia di dalam ini pendakap kerinting dan tidak seperti C, ini adalah sebenarnya okay. Tidak kira berapa mendalam bersarang pengisytiharan pembolehubah adalah dalam PHP - dalam pendakap, kerinting dalam pendakap kerinting dan sebagainya - ia akan pada ketika itu dalam masa wujud bagi baki program, bagi yang lebih baik atau untuk lebih teruk. Jadi ia segera menjadi global secepat anda menentukan ia seperti yang kita lakukan di sini. Jika tidak, jika saya tidak mendapati bahawa ada apa-apa dalam Superglobal SESI, Saya nampaknya Memulakan ini kounter pembolehubah kepada 0, sekali gus hanya menganggap pengguna telah tidak pernah hadir sebelum. Dan maka ini sudah tentu incrementing kaunter bagaimana? Saya mengemaskini nilai yang di dalam array ini bersekutu dengan menetapkan ia sama dengan apa jua kaunter kini + 1. Jika saya tatal ke bawah di sini untuk HTML halaman, ia sebenarnya agak mudah. Saya mempunyai dalam badan halaman ini, "Anda telah melawat laman ini kali jadi-dan-jadi." Dan ini adalah membina PHP. Jika anda lakukan