[Powered by Google Translate] [Masalah Walkthrough Tetapkan 7] [Zamyla Chan] [Universiti Harvard] [Ini adalah CS50] [CS50.TV] Hello everyone, dan mengalu-alukan kepada 7 Walkthrough, CS50 Kewangan. Sekarang kita secara rasmi dilakukan dengan semua yang psets di CS50, dan kami hanya ditinggalkan dengan satu lagi yang akan menjadi pelaksanaan yang menyeronokkan laman web di mana pengguna boleh log masuk ke CS50 Kewangan dan membeli dan menjual saham. Hari ini, kita akan mempunyai beberapa alat di tangan kita. Kami akan bercakap tentang kebenaran. Apabila anda mempunyai satu folder web, anda akan mahu untuk membolehkan pengguna untuk melaksanakan fail tertentu tetapi juga hanya membaca yang lain, jadi kita akan melihat ke dalam kebenaran dan bagaimana anda boleh menetapkan mereka. Kemudian kita akan melihat ke dalam PHP, HTML, dan kod SQL. Pertama, kebenaran. Apabila anda berada di terminal dalam direktori tertentu, maka apa yang anda mahu lakukan adalah anda mahu menjalankan arahan chmod. Itu diikuti oleh sama ada huruf atau nombor sepadan dengan apa yang anda pada dasarnya mahu dunia untuk melihat, anda sendiri untuk melihat, dan lain-lain Sebagai contoh, apabila anda mempunyai folder, maka anda mahu folder bahawa untuk menjadi laksana oleh semua orang yang melihat ia, jadi apa yang anda akan lakukan adalah anda boleh menjalankan arahan chmod + x dan kemudian nama folder anda. Apabila anda mempunyai fail seperti CSS fail atau fail imej - seperti JPEG dan bitmap, hal-hal seperti itu, atau mana-mana kod JavaScript - anda mahu bahawa boleh dibaca oleh semua orang, demikian maka apa yang anda lakukan ialah anda boleh menggunakan wildcard - yang asterisk - pada dasarnya menunjukkan dalam folder CSS - segala-galanya di dalam folder itu -  Saya akan mengatakan bahawa akan boleh dibaca oleh semua orang. Dengan kebenaran, apabila kita menggunakan huruf, kita juga boleh menggunakan nombor sebaliknya. Jadi, anda melihat bahawa akhirnya apabila anda mahukan sesuatu untuk menjadi laksana - yang diwakili oleh nombor 1 - sesuatu yang boleh dibaca adalah nombor 4 dan kemudian - ditulis adalah nombor 2 - dan sebagainya asasnya apabila anda mahu gabungan mereka, maka anda menambah mereka. Jika anda mahu sesuatu yang boleh dibaca, ditulis, dan laku, maka anda akan menambah sehingga 4, 2, dan 1 dan yang akan memberi anda 7, maka apabila anda mempunyai folder anda mahu bahawa untuk menjadi laksana oleh semua orang - serta boleh dibaca dan ditulis - maka anda membuat bahawa 7, 1, 1. Itu akan menjadi 7 untuk anda, maka 1 untuk orang lain. Apabila anda mempunyai spesifikasi, ia sebenarnya akan menentukan mana folder dan fail mana perlu chmod-ed khusus. Sebagai contoh, apabila anda mempunyai folder - mereka adalah 7-1-1 - apabila anda mempunyai imej, atau HTML, CSS, JavaScript, maka mereka akan menjadi 6, 0, 4 - atau 6, 4, 4 - dan kemudian fail PHP akan menjadi 6, 0, 0. Idea di sebalik ini adalah bahawa pengguna sebenarnya tidak perlu melihat kod PHP anda, tetapi hanya mampu untuk melihat output. Hebat! Melangkah ke PHP. Cuma, bila-bila masa anda mahu fail PHP, akhiran fail. Php. Anda juga boleh mencampurkan HTML dengan kod PHP. Jika anda mempunyai fail HTML, misalnya, maka anda boleh sertakan dengan sudut kiri, tanda tanya, php - meletakkan kod php anda - dan kemudian menutup dengan tanda tanya yang lain dan sudut kanan. Pembolehubah dalam PHP adalah lebih mudah untuk berurusan dengan daripada pembolehubah dalam C. Sebarang pemboleh ubah hanya bermula dengan tanda dolar di depan, dan mereka lemah ditaip. Ini bermakna bahawa anda tidak perlu bimbang tentang penetapan sesuatu bersamaan dengan tali atau integer. Anda boleh hanya sekadar mengatakan, ini adalah nama saya pembolehubah dan maka ini adalah nilainya, jadi ia akan menjadi lebih mudah untuk berurusan dengan sana. Satu lagi perkara ialah PHP membolehkan anda untuk menggunakan array bersekutu. Anda boleh hanya sekadar menentukan pelbagai seperti yang anda lakukan dalam C dengan berkata, dolar tanda-nama pelbagai-sama, dan kemudian dalam kurungan persegi mempunyai asasnya hanya senarai nilai semua unsur dalam array. Tetapi, dalam PHP apa yang anda juga boleh lakukan ialah nyatakan pada asasnya - ia adalah jenis seperti fungsi hash. Anda boleh menentukan indeks - apa yang anda akan memanggilnya - dan kemudian yang sepadan dengan nilai. Jika anda benar-benar lulus dalam a = 1, b = 2, c = 3, maka pelbagai anda di indeks akan memberikan anda 1. Pset Ini akan memanaskan anda dengan beberapa PHP dalam seksyen soalan, dan kemudian kita menyelam ke dalam CS50 Kewangan. Kami mempunyai beberapa - kita mempunyai beberapa fungsi, pada dasarnya, untuk melaksanakan dalam laman web ini. Kita mahu untuk membenarkan pengguna untuk mendaftar di laman web kami dengan nama pengguna dan kata laluan. Kami mahu membenarkan mereka untuk mencari sebut harga, dan kemudian kita akan mencetak nama quote itu serta harga semasa bahawa ia adalah pada. Kami mahu membenarkan mereka untuk melihat portfolio semua saham bahawa mereka telah dibeli setakat. Kami juga mahu membenarkan mereka untuk membeli saham serta menjual mereka. Dan akhirnya, kita mahu membenarkan mereka untuk melihat sejarah semua transaksi yang mereka telah dibuat. Kemudian, akhirnya, selepas anda telah melaksanakan semua itu, maka anda bebas untuk melaksanakan satu ciri tambahan. Kami akan pergi ke mereka. Mereka boleh sama ada membenarkan pengguna untuk mendapatkan wang tunai tambahan dengan mendepositkan wang tunai tambahan, atau anda boleh membenarkan mereka untuk menukar kata laluan mereka, atau sesuatu seperti itu, e-mel mereka resit apabila mereka membeli atau menjual saham. Ada senarai terhad ciri-ciri yang anda boleh melaksanakan sendiri, jadi itulah yang terakhir di sana. Sejak ini adalah sebuah laman web, anda semua juga mempunyai banyak kebebasan untuk menyesuaikan. Kami menyediakan beberapa kod CSS, tetapi anda pasti bebas untuk tweak, membuat ia kelihatan lebih bagus, tetapi yang mendasari ia adalah fungsi asas supaya sentiasa merujuk kepada spesifikasi tentang apa yang sebenarnya anda perlu termasuk di sana. Berikutan spesifikasi, kita akan menggunakan perkakas seperti juga pelayan. Ia akan menjadi tuan rumah laman web kami untuk kami, pada pelayan tempatan. Jika anda mengikuti arahan ini dan unzip kod pset 7 pengedaran ke tuan rumah / tuan rumah tempatan folder maya anda,  maka anda hanya boleh melawat http://localhost/ dalam Google Chrome dalam perkakas, dan kemudian anda akan mencapai kod di mana anda telah ditulis pset 7. Pset 7 datang dengan sekumpulan kod pengedaran, dan diharapkan we've - melalui semua psets sebelum ini - biasa kita untuk membaca melalui kod pengedaran, memahami apa fungsi yang telah disediakan, dan bagaimana kita mungkin boleh menggunakan mereka dan fungsi-fungsi lain bahawa kita akan melaksanakan. Dalam kes ini, kita mempunyai 3 folder. Kami mempunyai folder HTML, termasuk folder, dan folder template. Apa yang kita akan lakukan dengan pset ini adalah jenis memisahkan pemikiran - pemikiran pengaturcaraan - kod PHP dengan aspek visual sebenar. Kami akan mempunyai satu PHP fail yang melakukan semua berfikir, membaca ke dalam pangkalan data, cetakan perkara-perkara, jika penyata - perkara seperti itu - dan kemudian yang akan lulus data ke dalam fail template kami - atau fail template.php. Apa yang akan melakukan membaca data dan kemudian ia akan mencetak ia keluar. Kita boleh merawat template sebagai "bodoh" dalam bahawa kita tidak benar-benar mahu mereka akan melakukan banyak kerja dalam mengira perkara. Kami mahu pengawal kami untuk berbuat demikian. A sedikit tentang itu - mari kita lihat pada beberapa kod pengagihan. Di sini kita mempunyai fail index.html kami, dan ia agak kosong. Pada asasnya apa yang ia - ia mengatakan, baik, saya akan memerlukan fail configuration.php. Kami tidak melihat bahawa di sana, tetapi ia pada asasnya memanggil fail configuration.php, dan melaksanakan. Selepas ia itu, ia akan menyebabkan portfolio. Rendering adalah fungsi, jadi apabila kita berada dalam pengawal, kami akan memanggil render, kami akan memberikan fail dan kemudian data yang kita lulus di, supaya ia akan memanggil portfolio.php-jenis pas dalam data supaya portfolio yang boleh berurusan dengan itu. Dan kini, di sini, kita mempunyai bentuk Ubah Suai Pengatas kami.  Ini adalah pengawal yang pada dasarnya menjaga pembalakan masuk Di sini, ia memeriksa jika borang itu diserahkan kepada fail ini dan tawaran dengan mengesahkan penyerahan. Kita akan melihat ke dalam fungsi Apologize ini. Apabila kita ingin mencetak keluar mesej ralat, kita gunakan memohon maaf dan yang akan mengarahkan pengguna ke halaman tertentu yang akan mencetak mesej ralat tertentu bahawa kita menunjukkan. Berterusan ke atas, ia akan query pangkalan data - we'll masuk ke dalam lebih daripada itu kemudian. Kemudian anda melihat yang turun di sini jika borang itu tidak diserahkan, maka ia menjadikan bentuk. Ini bermakna bahawa ia pergi untuk login_form.php, jadi mari kita melihat bahawa. Ubah Suai Pengatas sebenarnya di mana kita lihat urusan HTML dengan aspek visual sebenar. Di sini kita mempunyai tag input untuk nama pengguna, input untuk kata laluan, serta sebagai butang submit. Itulah sebenarnya mana aspek visual dan bentuk HTML akan diadakan. Di sini, ia mengatakan bahawa ia akan dikemukakan oleh kaedah tertentu, dipanggil pos. Kami akan masuk ke dalam perbezaan antara kaedah - hantar berbanding mendapatkan, terdapat juga sesuatu yang dinamakan meletakkan - kita akan mendapat kaedah ke dalam orang-orang kemudian, tetapi untuk kepentingan pset ini, Saya sangat akan menggalakkan anda untuk menggunakan pos. Kita tahu bahawa pada dasarnya sekali borang ini diserahkan - dari login_form.php-- maka ia akan pergi ke tindakan - Ubah Suai Pengatas - pada dasarnya lulus dalam semua parameter daripada mereka bentuk ke dalam Ubah Suai Pengatas. Hasil daripada bentuk yang terkandung dalam array ini bersekutu pos. Indeks unsur-unsur yang berlainan dalam pelbagai jawatan adalah apa yang anda nyatakan di sini. Anda mengatakan bahawa nama input ini adalah username. Nama yang satu ini adalah kata laluan. Begitu juga, anda melihat username sebagai indeks array bersekutu di sana. Jika kita pergi ke folder termasuk, kita mempunyai fungsi fail ini yang akan menjadi sangat berguna. Semua fungsi-fungsi ini dilaksanakan untuk anda. Anda tidak perlu khusus untuk melaksanakan apa-apa ini sendiri, tetapi mereka pergi agak berguna. Kami telah meminta maaf, yang seperti yang saya katakan sebelum ini, pada dasarnya akan mencetak mesej ralat untuk anda pada halaman tertentu - apology.php. Kemudian kita mempunyai sampah, jadi jika anda hanya panggil dump dan kemudian lulus dalam pembolehubah, maka ia akan membawa anda ke halaman yang akan memaparkan pembolehubah untuk anda. Kemudian kami telah logout, yang pada asasnya akan menamatkan sesi pengguna tertentu. Lookup akan menjadi berguna. Oleh kerana kita sedang berurusan dengan memetik dan stok, kita akan dapat - dan ia adalah asasnya masa sebenar. Kita perlu tahu apa yang mereka nilai saham, jadi kita mempunyai fungsi lookup yang berkaitan dengan dokumentasi Yahoo stok. Sebaik sahaja anda mencari simbol tertentu saham, ia akan kembali kepada anda simbol saham serta nama dan harga semasa saham itu. Itulah fungsi lookup. Kemudian kita sedang berurusan dengan mySQL, jadi kita akan mahu untuk melaksanakan pertanyaan tertentu pada pangkalan data SQL kami. Kami mempunyai pertanyaan untuk menangani jenis beberapa abstrak daripada itu. Kami akan lulus dalam rentetan keseluruhan query SQL kita - dan semua pembolehubah yang pergi - dan apakah ini tidak adalah sebenarnya melaksanakan bahawa untuk kita. Sebaliknya mempunyai untuk menulis semua ini keluar setiap kali yang anda mahu query - dengan mendapat semua keputusan dari pertanyaan yang - maka anda hanya boleh memanggil fungsi query, dan ia akan kembali kepada anda - bergantung kepada apa yang anda menggunakan untuk pertanyaan anda - mungkin deretan semua keputusan yang sepadan dengan pertanyaan atau serupa. Lebih pada itu kemudian sekalipun. Akhirnya, kita mempunyai redirect yang, seperti namanya, pelencongan anda ke laman yang berbeza. Dan kemudian kita mempunyai render, yang kita akan memanggil beberapa kali. Apabila anda berada dalam pengawal, anda memanggil menyebabkan ke halaman template dan kemudian lulus dalam nilai-nilai yang template maka akan berurusan dengan. Mereka nilai-nilai yang mungkin akan berurusan dengan jenis output yang anda mahu akan ditunjukkan pada halaman template anda. Okay. Mereka adalah fungsi, dan terdapat lebih banyak kod pengagihan ini. Saya menggalakkan anda untuk pergi melalui ini dan meneroka sendiri. Juga, spec mungkin akan berjalan anda melalui beberapa elemen-elemen lain kod pengagihan. Berikut adalah ringkasan fungsi yang ditemui di functions.php. Okay. Tugas pertama adalah untuk membenarkan pengguna untuk mendaftar di laman web. Sekarang, terdapat satu bentuk login di laman web, dan anda akan disediakan dengan beberapa pengguna dengan kata laluan. Anda boleh menggunakan nama pengguna dan log masuk, tetapi anda mahu membenarkan orang ramai untuk membuat nama pengguna mereka sendiri dan menambah diri mereka kepada laman web. Susun atur untuk pendaftaran adalah agak serupa dengan borang login, kecuali username tidak sedia ada, dan pengguna juga perlu menyediakan kata laluan baru, dan kemudian biasanya kita mempunyai pengesahan kata laluan. Apabila input pengguna semua maklumat tersebut, kita mahu untuk menambah mereka ke pangkalan data pengguna kami. Kami akan mempunyai pangkalan data - pangkalan data SQL - bahawa kita pergi untuk rujukan. Dalam pangkalan data itu, kita akan mempunyai sebuah meja dengan semua pengguna mengandungi nama pengguna, kata laluan mereka, dan juga berapa banyak wang tunai yang mereka ada. Dalam daftar, kita mahu membenarkan mereka untuk memasukkan maklumat itu. Kami mahu memaparkan bentuk itu. Kami mahu pastikan bahawa kata laluan mereka - bahawa mereka memasuki satu, dan kemudian juga bahawa kata laluan sepadan apabila mereka memasuki dua kali. Selepas semua itu dilakukan dengan anggapan bahawa mereka kesilapan diperiksa - maka kita mahu untuk menambah mereka pengguna untuk pangkalan data kami. Akhirnya, sekali anda telah didaftarkan, ia agak mudah jika anda tidak perlu untuk log masuk sekali lagi apabila anda telah berdaftar, jadi kita pergi untuk log mereka masuk ke laman web jika mereka telah didaftarkan dengan jayanya. Tugas pertama adalah untuk memaparkan borang, dan ini sebenarnya akan menjadi - ini proses pendaftaran keseluruhan akan dimodelkan agak rapat selepas login kecuali bukannya Ubah Suai Pengatas anda mungkin mempunyai register.php. Sebaliknya login_form.php-mana template - anda telah akan mendaftar borang. Anda akan mahu untuk menambah satu medan yang lebih - medan kata laluan pengesahan - bukannya hanya satu nama pengguna dan kata laluan satu. Seterusnya, kita mahu untuk memeriksa sama ada kata laluan sepadan atau kosong. Kami mempunyai pengawal - register.php-yang akan menjaga melakukan pemeriksaan ini. Apabila borang dikemukakan melalui kaedah pos, maka semua orang-orang pembolehubah yang terkandung dalam pelbagai jawatan. Anda ingin memastikan bahawa nilai pos array pada kata laluan indeks sepadan dengan elemen pengesahan. Anda ingin memastikan bahawa mereka tidak kosong, dan anda ingin memastikan bahawa mereka berada sama. Satu perkara yang mudah tentang PHP adalah bahawa kita tidak perlu menggunakan tali bandingkan lagi. Kita boleh menggunakan operator sama-sama  untuk memeriksa sama ada rentetan adalah sama antara satu sama lain. Untuk pengendalian ralat, anda akan mahu untuk memohon maaf. Meminta maaf, anda hanya memanggil fungsi  dan kemudian nyatakan jenis mesej yang anda mahu output. Anda kemudian mahu untuk menambah pengguna untuk pangkalan data. Sehingga kini, semua kita telah melakukan hanya berurusan tempatan dengan keputusan borang. Sekarang, kita benar-benar mahu untuk menambah mereka ke pangkalan data kami. Untuk ini, kita ingin memastikan bahawa username tidak kosong. Memahami bahawa di laman web, anda tidak boleh mempunyai pengguna berganda dengan nama pengguna yang sama, supaya anda akan mahu memastikan bahawa apabila anda memasukkan sesuatu ke dalam pangkalan data anda - memasukkan pengguna baru - maka anda tidak mendapatkan perlanggaran antara nama pengguna sedia ada dan username bahawa pengguna cuba untuk mengemukakan. Untuk ini, apabila anda melaksanakan pertanyaan - memasukkan pengguna tertentu dengan kata laluan dan mereka satu jumlah tunai yang awal - apabila anda memanggil bahawa pertanyaan, maka mySQL sebenarnya akan kembali palsu jika ia gagal. Struktur pengguna adalah seperti yang username adalah nilai yang unik, jadi anda tidak boleh mempunyai lebih daripada satu. Apabila anda cuba dan memasukkan baris baru dengan nama pengguna yang sudah wujud, yang akan kembali palsu - seperti Boolean-nilai palsu. Satu perkara yang sukar di sini adalah bahawa anda akan mahu untuk memeriksa jika hasilnya adalah hasil daripada pertanyaan anda. Jika ia gagal, maka anda akan mahu untuk memeriksa dengan pengendali triple-sama. Itu sebenarnya akan memeriksa sama ada terdapat kegagalan atau tidak, manakala, dalam hanya mudah sama-sama, ia akan menjadi benar jika baris kosong. Hasil daripada kegagalan jika terdapat perlanggaran antara nama pengguna adalah nilai palsu yang sebenar. Berikut adalah bagaimana anda akan memasukkan ke dalam pangkalan data. Berikut adalah pertanyaan yang anda akan berjalan tegas dalam SQL. Satu perkara adalah bahawa anda sebenarnya boleh pergi ke laman web yang menguruskan pangkalan data SQL anda dan bermain-main di sana dengan memasukkan secara manual sama ada nilai atau baris. Ia akan mengeluarkan apa output SQL. Anda juga boleh menjalankan arahan SQL dalam pangkalan data anda  dan kemudian lihat apa sintaks mungkin, dan kemudian diterjemahkan ke dalam fungsi query bahawa kita mempunyai dalam pset 7, yang akan menjadi sangat serupa dengan pertanyaan yang anda sebenarnya menjalankan. Jika saya mahu memasukkan baris baru ke dalam jadual pengguna saya, maka saya akan nyatakan masukkan ke dalam pengguna, yang merupakan nama jadual saya. Maka saya akan nyatakan nama lajur. Kemudian saya akan memberikan nilai-nilai bersama-sama dengan kata laluan saya. Kata laluan dalam jadual pengguna kami tidak disimpan sebagai hanya rentetan. Mereka disimpan sebagai versi disulitkan, supaya anda akan mahu menjalankan kubur fungsi kata laluan sebenar, dan yang akan memberikan anda jenis yang betul penyimpanan untuk pelbagai pengguna. Running ini akan memasukkan baris baru ke dalam jadual pengguna anda. Untuk berurusan dengan fungsi query, sebelum di C kita menggunakan tanda peratus sebagai pemegang tempat. Begitu juga, konsep yang sama pemegang tempat terpakai di sini. Dengan pertanyaan, anda menentukan keseluruhan pertanyaan, kecuali apabila anda berurusan dengan pembolehubah sebagai input anda ke pertanyaan, maka bukan sebenarnya meletakkan mereka dalam - seperti apabila kita mempunyai penyata printf dalam C. Kami akan meletakkan tali dan kemudian mempunyai placeholder di sana, dan kemudian selepas setiap koma, nyatakan pembolehubah yang kita mempunyai. Di sini, kita akan menggunakan tanda soalan tanda sebagai placeholder kami dan kemudian lulus dalam setiap pemboleh ubah, masing-masing dalam usaha, untuk ruang letak - mana mereka pembolehubah perlu pergi. Jadi di sini, tanda soalan pertama akan digantikan dengan nama pengguna sebenar maka tanda soalan kedua oleh kata laluan. Kemudian akhirnya, sebaik sahaja anda telah mendaftar mereka dan menambah mereka untuk pangkalan data, maka anda mahu log mereka ke dalam laman web ini. Kami mempunyai jenis sesi super-ubah global yang dipanggil. Sesi mengambil id tertentu, dan id yang sepadan dengan pengguna yang sedang log masuk Apa yang anda akan mahu lakukan adalah mencari apa id pengguna mereka adalah dan kemudian menetapkan bahawa id sesi sebagai id bahawa pengguna tertentu. Satu fungsi yang anda akan mahu menggunakan di sini adalah arahan SQL yang akan mengambil nombor id terakhir dimasukkan dari jadual anda. Kemudian baris akan memanggil - it'll memanggil id - it'll memberikan nama kepada nombor bahawa ia kembali. Ia akan memanggil id itu. Sekarang kita telah selesai mendaftar, dan kita boleh bergerak dengan memetik. Quote membolehkan pengguna untuk input nama saham tertentu, dan kemudian ia akan kembali ciri-ciri saham itu. Apa yang anda akan mahu lakukan di sini adalah mempunyai pengawal dan beberapa template. Dalam kes ini, kita akan mempunyai pengawal yang akan melakukan semua pemikiran untuk kita. Ia akan melihat simbol dan kemudian lulus dalam nilai kepada template yang akan mencetak. Kami akan mempunyai 2 template sini. Kami akan mempunyai 1 template yang menyediakan borang di mana pengguna akan input nama stok - nama saham. Kemudian kita juga akan mahu satu lagi template yang memaparkan nilai-nilai. Anda boleh melihat ke dalam login untuk contoh bagaimana anda akan mempunyai satu bentuk yang menerima input, kecuali di sini, kita hanya mahu 1 bidang. Kita tidak mahu nama pengguna dan medan kata laluan. Kami hanya mahu 1 teks bidang yang membolehkan pengguna untuk input nama saham tertentu. Kemudian anda mahu untuk menghantar data - sekali anda telah melihat saham itu - untuk quote_form.php. Lookup akan kembali simbol saham, nama, dan harga. Mereka yang terkandung dalam pelbagai bersekutu. Cari fungsi lookup di dalam functions.php untuk maklumat lanjut pada jenis pulangan mereka. Hebat! Jadi akhirnya, anda akan mahu untuk memaparkan maklumat saham. Anda akan mahu mungkin memaparkan - karena mahu mengakses pembolehubah-pembolehubah. Sebaik sahaja anda mempunyai harga dalam pembolehubah - serta nama dan simbol - maka anda akan mahu untuk memaparkan mereka dalam halaman template anda. Bahawa halaman template boleh dipanggil show_quote.php atau sesuatu. Laman quote.php anda akan menyebabkan quote menunjukkan dan kemudian lulus dalam semua nilai-nilai. Kemudian dalam halaman php anda, anda sebenarnya mencetak nilai-nilai kepada aspek HTML halaman. Anda hanya menggunakan fungsi cetak dan lulus dalam harga. Terdapat 2 cara - sama ada anda boleh menyatukan ia dengan operator dot, atau menggunakan placeholder. Para pengguna akhirnya akan membeli dan menjual saham. Kami mahu membenarkan mereka beberapa cara melihat semua stok bahawa mereka kini mempunyai. Kami akan memanggil bahawa portfolio mereka. Portfolio akan, mungkin untuk setiap pengguna, mengandungi sekumpulan baris menyenaraikan jenis saham bahawa mereka mempunyai dan kemudian berapa ramai orang-orang yang mereka miliki. Jadual yang sedia ada kami - sekarang kita mempunyai jadual pengguna dalam pangkalan data kami. Yang mengandungi username pengguna serta kata laluan mereka dan berapa banyak wang tunai yang mereka ada. Tiada cara sebenar menyimpan semua saham mereka dalam tempoh itu. Ia bukan seperti yang kita boleh menyisipkan lajur baru bagi setiap saham. Itu akan menjadi satu barisan yang amat panjang kerana kita mempunyai kuantiti terbatas jenis saham yang mereka boleh mempunyai. Jadi, bukan apa yang kita akan lakukan dalam pangkalan data yang sama, kita akan mempunyai jadual pengguna, tetapi kemudian kita juga akan mempunyai jadual portfolio. Jadual portfolio akan pasti dikaitkan ke meja pengguna, tetapi sebaliknya jadual struktur portfolio akan mempunyai maklumat saham, berapa banyak saham saham bahawa pengguna mempunyai, serta id bilangan tertentu pengguna. Anda mempunyai jadual pengguna yang mempunyai id serta username, hash - yang merupakan kata laluan, kata laluan disulitkan - dan kemudian jumlah wang tunai yang mereka miliki. Nombor id akan dikaitkan dengan nombor id daripada portfolio. Portfolio hanya akan mempunyai simbol saham serta saham - bilangan saham saham bahawa pengguna mempunyai. Dalam jadual portfolio yang anda akan mempunyai asasnya semua saham yang dimiliki oleh semua pengguna di laman anda. Kemudian, untuk menentukan hanya saham pengguna tertentu - hanya portfolio mereka - anda akan mendapatkan nilai dari jadual tersebut bahawa portfolio anda nombor id adalah khusus kepada pengguna itu. Apabila anda memaparkan portfolio, anda akan mahu melaporkan setiap saham dalam portfolio pengguna. Anda akan mahu untuk melaporkan bilangan saham dan nilai semasa saham mereka. Bahawa nilai semasa syer itu tidak disimpan dalam jadual portfolio kerana itu akan mengemaskini - sekurang-kurangnya - setiap hari oleh Yahoo. Untuk mendapatkan maklumat tersebut, anda tidak boleh rujukan itu dari query SQL anda. Apa fungsinya memperuntukkan bahawa kepada kita? Apa fungsi akan mendapat harga? Itulah lookup, jadi menggunakan lookup pada simbol tertentu akan memberi anda banyak maklumat. Ia akan memberikan anda 3 keping maklumat - nama, simbol, serta harga. Sebaik sahaja anda lookup simbol tertentu, maka anda boleh mendapatkan harga, dan kemudian anda boleh gunakan harga yang akan dipaparkan dalam portfolio anda. Portfolio juga perlu memaparkan baki tunai semasa pengguna. Bidang yang disimpan dalam jadual pengguna anda. Demikian maka mengingat bagaimana kita pada dasarnya perlu - kami mempunyai pelbagai jenis fail PHP. Kami akan mempunyai pengawal yang pada dasarnya tidak semua pemikiran untuk anda. Dan kemudian kita mempunyai template di mana template berurusan dengan data keluarkan. Anda perlu berfikir apa pembolehubah pengawal akan perlu untuk mengambil masuk Jika kita sedang berurusan dengan portfolio yang output setiap nama, simbol, dan bilangan saham, serta harga semasa saham, maka anda akan mahu untuk mencari beberapa cara pada dasarnya lulus dalam - anda boleh lulus dalam pelbagai nilai yang sepadan. Mari kita pergi ke satu contoh bagaimana anda boleh mengambil semua stok dimiliki oleh pengguna tertentu. Ini tidak berurusan - namun - dengan harga saham. Apakah ini akan lakukan adalah menjalankan pertanyaan. Ia akan mendapatkan simbol serta saham dari - Saya memanggil jadual ini, tetapi dalam kes ini apa yang ia akan menjadi? Apa nama jadual yang kita sedang berurusan dengan yang mempunyai simbol dan saham untuk pengguna tertentu? Ia sama ada pengguna atau portfolio. Portfolio. Apakah ini akan lakukan adalah portfolio pertanyaan untuk simbol-simbol dan saham untuk pengguna tertentu. Di sini, saya katakan, (simbol SELECT, saham DARI tbl - tetapi sebaliknya jadual, anda akan untuk menggantikan bahawa dengan portfolio. 'Jika' adalah pada asasnya keadaan saya. Saya mengatakan saya hanya mahu untuk mendapatkan mereka array bersekutu yang sesuai  kepada keadaan ini berikut - id sama.  Kemudian saya meletakkan placeholder sana dan kemudian id sesi. Apakah ini akan lakukan katakan untuk setiap baris dalam baris. Ini adalah cara yang kemas dan bukannya sebenarnya perlu untuk menubuhkan satu untuk gelung yang lelaran ke atas semua indeks, maka dalam PHP anda boleh mempunyai untuk setiap gelung. Jika anda mempunyai pelbagai yang diberikan, maka anda boleh mengatakan saya akan memanggil setiap elemen yang berturut-turut - Saya akan memanggil nama setiap elemen ini. Jadi, untuk setiap satu daripada elemen-elemen ini, saya akan memanggil mereka ini, maka saya boleh melakukan ini. Dalam kes ini, bagi setiap, anda mempunyai baris sebagai pelbagai sebenar anda, dan setiap baris anda pergi untuk memanggil berturut-turut. Setiap kali ia melaksanakan badan, ia akan naik dan ia akan mengemaskini baris kepada elemen seterusnya dalam baris. Kini, di segi membeli saham, apa yang kita mahu lakukan adalah mendapatkan saham yang pengguna mahu membeli dan jumlah saham yang pengguna mahu membeli, dan kemudian - jika mereka mahu - menambah saham itu kepada portfolio mereka. Jelas sekali, jika mereka membeli sesuatu, maka itu akan berkurangan jumlah wang yang mereka miliki, maka itu akan mengurangkan tunai mereka. Kami akan berurusan dengan mengemaskini portfolio serta jadual pengguna, yang mengandungi wang tunai. Tetapi pertama, anda perlu untuk mendapatkan stok sebenar dan jumlah saham yang pengguna mahu. Untuk itu, anda akan memerlukan satu bentuk HTML yang akan meminta untuk simbol saham yang anda mahu untuk membeli serta bilangan saham. Kemudian anda akan mahu untuk menambah. Anda akan mahu untuk memilih nilai-nilai tertentu. Kami telah melalui sedikit ini sedikit pun, tetapi apabila anda cuba untuk mendapatkan baris tertentu - mencapai baris tertentu dari jadual SQL, ini adalah sintaks berikut. Anda telah pilih, dan kemudian jika anda nyatakan bintang, yang pada dasarnya akan kembali keseluruhan, barisan keseluruhan untuk anda. Kemudian lagi, anda mempunyai keadaan di mana, dan kemudian anda tentukan - Saya hanya mahu username menjadi sama-mel, jadi ia hanya akan mengambil baris dalam pengguna yang sepadan-mel. Apabila pengguna mahu menambah saham kepada portfolio, anda perlu menyemak untuk beberapa kesilapan. Anda ingin memastikan bahawa pengguna sebenarnya mampu saham, jadi anda akan mahu untuk memeriksa wang tunai mereka. Sebelum ini, kita menggunakan bintang untuk mendapatkan keseluruhan baris dari jadual SQL. Tetapi di sini, kita boleh sebenarnya hanya menyatakan bahawa saya hanya mahu 1 nilai - Saya hanya mahu wang tunai. Jadi di sini, ia akan kembali tunai untuk pengguna dengan nombor id 1. Jika pengguna telah membeli saham tertentu tetapi kemudian membeli lebih banyak saham itu, kemudian dalam portfolio anda - anda tidak mahu barisan yang berasingan, lain baris yang mengandungi bahawa transaksi baru. Anda sebenarnya mahu untuk mengemaskini amaun. Semua itu berubah benar-benar adalah jumlah saham yang pengguna yang memiliki. Jika anda menggunakan memasukkan ke dalam query - jadi ia hanya memasukkan ke dalam portfolio anda semua nilai-nilai ini - nombor id pengguna serta simbol saham bahawa mereka sedang membeli dan saham, maka anda juga akan mahu untuk menentukan, baik, jika saya menghadapi kunci pendua - dalam kes ini, kunci pendua bukan sahaja id pengguna tetapi juga simbol saham - kerana anda hanya boleh mempunyai premis kami adalah bahawa anda hanya boleh mempunyai baris 1  yang sepadan dengan 1 simbol tertentu. Jadi, pada kunci pendua - jika anda berjalan ke dalam perlanggaran di sana - anda hanya akan mengemaskini saham kepada nilai baru. Saham sama apa yang kita terpaksa sebelum ditambah dengan bilangan saham yang pengguna membeli. Sekarang kita telah dikemaskini jadual portfolio, kita akan mahu untuk mengemaskini tunai pengguna. Itulah dalam jadual pengguna, jadi kita akan menolak jumlah tertentu daripada tunai. Mungkin, ia akan menjadi wang tunai sama tolak tunai - dan kemudian jumlah tertentu. Untuk mengemas kini tunai, anda akan - jika saya mahu mengambil wang dari-mel, maka saya akan menjalankan pertanyaan ini - 'Update pengguna' dan kemudian menetapkan lajur tunai kepada wang tunai - Saya akan membuang dolar 9999 hanya jika username adalah sama-mel. Tetapi, dalam kes ini, kita tidak mahu tolak 9.999 khusus. Kami ingin nyatakan, baik, kita mahu tolak harga semasa saham didarab dengan bilangan saham bahawa mereka sedang membeli. Sekarang kita telah dibenarkan mereka untuk melihat semua saham yang mereka miliki, serta membeli lebih banyak saham. Kami juga telah sebelum ini dibenarkan mereka untuk mencari harga semasa saham. Di sini kita mahu membenarkan mereka untuk menjual mereka. Mula-mula kita mahu untuk memaparkan pada dasarnya - kita mahu membenarkan mereka untuk melihat semua saham yang mereka miliki, jadi di sini kita mahu untuk memaparkan semua baris daripada portfolio. Jika mereka memilih untuk menjual saham tertentu, maka kita akan menganggap bahawa mereka mahu menjual semua. Mereka tidak hanya akan menjual 50% saham mereka, mereka pergi untuk menjual 100% ia. Kita hanya boleh padam baris keseluruhan daripada portfolio. Kita boleh memadam saham pengguna yang diberikan simbol tertentu. Ada sintaks untuk itu. Kemudian kita mahu untuk mengemaskini tunai. Kami akan menambah dalam tunai sama kepada jumlah saham yang mereka menjual didarab dengan harga semasa saham - bukan harga di mana mereka membeli, tetapi harga di mana mereka - harga semasa apabila mereka menjual. Untuk rujukan harga semasa saham, anda akan mahu menggunakan lookup, yang akan memberi anda harga saham pada masa semasa. Sekarang kita dibiarkan dengan sejarah, yang anda mahu membenarkan pengguna untuk menjejaki semua transaksi mereka - mahu melihat apabila mereka menjual sesuatu, apabila mereka membeli saham. Kita mahu untuk menentukan masa yang mereka lakukan serta berapa banyak mereka membeli dan apa stok. Adakah kita mempunyai apa-apa semasa, struktur sedia ada yang menyatakan bahawa? Nah, kita mempunyai portfolio yang memaparkan stok nombor bahawa pengguna telah untuk berkongsi diberikan. Tetapi kita sedang menstrukturkan portfolio dalam cara bahawa ia kemaskini apabila kita membeli pelbagai, sedangkan sejarah harus - jika anda membeli Apple, 10 saham itu, dan kemudian pada 5 menjual, maka anda mahu melihat mereka yang berasingan sebagai tindakan yang berasingan, baris berasingan. Manakala tindakan itu menggambarkan bahawa dalam jadual portfolio kami hanya akan update kepada barisan yang tertentu,  jadi kita mungkin akan mahu jadual lain. Dalam pangkalan data kami, kami mempunyai jadual pengguna kami, kami mempunyai jadual portfolio kami, dan sekarang kita mungkin akan mahu jadual sejarah. Bahawa jadual sejarah boleh menjejaki tarikh semasa, serta stok simbol tertentu, serta berapa banyak saham, dan kemudian apakah tindakan yang ia adalah - sama ada anda telah membeli syer atau sama ada anda menjual mereka. Untuk berurusan dengan tarikh, terdapat beberapa cara yang boleh anda lakukan ini. PHP mempunyai cara mengesan tarikh, yang anda boleh melihat diri anda. Dalam SQL anda juga boleh menggunakan sama ada sekarang atau timestamp semasa. Itu terpulang kepada anda. Hanya pastikan bahawa setiap kali pengguna membeli atau menjual, anda akan mengemaskini tunai mereka dalam jadual pengguna, anda akan mengemaskini baris dalam jadual portfolio, maka anda juga akan mengemaskini sejarah, jadi ada akan menjadi 3 berasingan pertanyaan SQL bahawa anda akan memanggil sana. Kami mempunyai sekumpulan fungsi sekarang. Hanya beberapa peringatan bahawa dalam fail indeks anda, anda akan mahu untuk menghubungkan kepada sekurang-kurangnya anda - tetapi anda akan mahu untuk membenarkan pengguna untuk menghubungkan ke laman buy.php. Itu akan membenarkan pengguna - buy.php adalah pengawal, jadi yang akan sama ada menghantar anda ke - yang akan menghantar anda kepada bentuk yang membolehkan anda untuk melihat perkara. Kami mempunyai sejarah. Kami telah log keluar, mendapatkan sebut harga dan kemudian menjual. Mereka adalah sekurang-kurangnya apa yang anda mahu untuk menunjukkan. Dari segi portfolio, portfolio sebenarnya yang ditunjukkan dalam halaman indeks. Jika kita pergi ke indeks, di sini kita lihat bahawa ia menyebabkan portfolio.php dan pas dalam array bersekutu - pada dasarnya tajuk bersamaan portfolio. Jadi, ini adalah pengawal. Jika kita pergi ke template portfolio.php, maka semua ia mempunyai - pada dasarnya memaparkan gambar yang berkata, oh, laman web ini adalah di bawah pembinaan. Kemudian, apabila anda lulus dalam - karena lulus dalam maklumat yang pada dasarnya lebih khusus. Sebaliknya hanya tajuk, anda mungkin akan lulus dalam perkara-perkara yang lebih. Sebaik sahaja anda mempunyai nilai-nilai, maka portfolio.php boleh berurusan dengan nilai-nilai dan mencetak mereka keluar dalam apapun yang perintah. Sebaik sahaja anda telah melaksanakan semua orang, anda juga perlu untuk melaksanakan ciri 1 more. Ini sama ada boleh membenarkan pengguna untuk menukar kata laluan mereka, untuk menetapkan semula kata laluan mereka jika mereka terlupa - untuk menetapkan semula kata laluan, maka anda akan mungkin juga mahu untuk mengedit mendaftar supaya ia membolehkan mereka untuk menentukan e-mel, jadi jika mereka terlupa kata laluan mereka, maka mereka boleh mendapatkan. Mereka mungkin boleh memasukkan nama pengguna mereka, dan kemudian satu emel akan dihantar kepada mereka dengan pautan untuk dapat untuk menetapkan semula kata laluan mereka. Anda boleh mempunyai sesuatu yang membolehkan pengguna untuk mendapatkan resit setiap kali mereka membeli atau menjual sesuatu, dan akhirnya, membolehkan mereka untuk menambah tunai ke laman web mereka. Hanya untuk kembali ke dalam konsep pengawal dan template sedikit. Anda akan mempunyai sesuatu seperti - supaya anda akan mempunyai pengawal di sini. Sekarang, kita sedang melihat contoh Ubah Suai Pengatas. Apabila kita mempunyai pengawal, pada dasarnya ia akan mengambil 2 kes. Apabila kita mempunyai pengawal, kita berada dalam sekeping ini bahawa kita juga jenis berurusan dengan apabila kita mempunyai bentuk serta. Pengawal pada dasarnya akan mempunyai tindakan yang berasingan - satu jika bentuk telah dikemukakan, dan kemudian dua jika pengguna datang ke halaman tersebut untuk kali pertama dan masih memerlukan input yang membentuk. Saya akan melompat untuk kes yang pertama sebelum pergi sehingga kes pertama mempunyai borang masuk Di sini kita katakan, jika borang itu telah dihantar dengan pos kaedah - jangan risau tentang itu sedikit. Jangan bimbang tentang yang terlalu banyak tetapi memahami bahawa pada asasnya fungsi ini memperkatakan sama ada borang telah diserahkan atau tidak. Keadaan ini adalah benar jika pengguna telah diserahkan borang. Jika tidak, maka kita akan mahu hubungi login_form.php render, dan kemudian lulus dalam tajuk. Gelaran ini hanya pada dasarnya akan muncul dalam kepala. Apakah ini tidak adalah pada dasarnya mengatakan, okay - baik, jika pengguna pergi untuk Ubah Suai Pengatas dan sebenarnya tidak log masuk, maka saya ingin menghantar mereka ke halaman yang mempunyai bentuk yang yang membolehkan mereka untuk input username dan password. Kemudian saya pergi login_form, dan kemudian yang mempunyai bentuk yang sebenar. Kemudian, apabila pengguna menghantar borang itu, mereka pergi untuk mengemukakan untuk Ubah Suai Pengatas dengan pos kaedah. Kemudian saya sebenarnya akan untuk memasukkan seksyen ini gelung saya jika-lain. Maka ia adalah di sini bahawa kita berurusan dengan nilai yang dimasukkan ke dalam bentuk. Ia adalah di sini bahawa kita berurusan dengan mereka. Kemudian apabila anda berurusan dengan nilai-nilai - jika anda sedang berurusan dengan - mengatakan bahawa kita sedang berurusan dengan laman quote.php di mana seseorang boleh input saham bahawa mereka mahu melihat, dan kemudian melihat paparan yang - itulah jenis yang sama di sini. Di sini kita mempunyai satu bentuk login - you'd mungkin mempunyai satu bentuk quote - tetapi kemudian sekali pengguna sebenarnya telah mengemukakan bahawa maklumat, maka anda akan mahu pengawal untuk lulus ke template lain yang akan menunjukkan kepada mereka bahawa maklumat sebenar. Demikian maka hak di sekitar sini, maka anda akan mungkin - sekitar akhir keadaan anda di sini - jika kaedah sama pos - maka anda mungkin akan mahu untuk memberikan satu lagi ms - petikan menunjukkan - yang menghantar anda ke halaman tersebut - show_quote.php - dan kemudian dalam fail itu akan rujukan nilai-nilai. Adakah yang masuk akal? Kami mempunyai pengawal yang pada asasnya tawaran dengan 2 kes - sama ada anda telah mengisi borang di dalam atau tidak. Jika anda tidak mengisi borang, maka ia akan mengarahkan anda kepada bentuk yang, yang kemudiannya akan meletakkan anda kembali ke laman itu. Kemudian, apabila anda mempunyai maklumat dalam pengawal, badan yang akan berurusan dengan itu maklumat seperti yang diperlukan - sama ada mencari nilai untuk saham, dan kemudian sekali ia mendongak nilai-nilai dan mempunyai mereka dalam pelbagai baik diformat, kemudian boleh lulus pelbagai bahawa ke halaman template  yang berurusan dengan keluarkan maklumat. Sekali lagi, kerana web itu, ia akan menjadi seronok. Kami di luar C supaya kita tidak terhad kepada ASCII dan bahawa output terminal, jadi bersenang-senang dengan ini. Anda boleh menjadikan ia sebagai visual yang anda mahu. Anda boleh membenarkan pengguna untuk input berjuta-juta dolar pada satu masa, atau menghadkan mereka dan benar-benar bermakna dan membenarkan mereka hanya untuk memasuki 1 sen pada satu masa atau sesuatu seperti itu. Pasti menjadi pasti untuk bersenang-senang dengan ini. PHP kod adalah agak mudah bahawa ia adalah agak mudah untuk merancang pseudokod anda dalam pelaksanaan sebenar. Jadi, pasti bersenang-senang dengan ini kerana ia sebenarnya adalah sekeping terakhir kami di CS50. Dengan itu, ini adalah Walkthrough 7. Sebaik sahaja anda selesai menonton Walkthrough dan selesai pset anda, maka ini juga psets, dan sekarang kita adalah kepada produk akhir - selepas kita mendapat melalui kuiz 1. Kemudian diharapkan anda boleh menggunakan alat yang anda telah belajar dari psets - bukan sahaja sintaks, tetapi lebih tanggapan abstrak bagaimana untuk mengambil tertentu - suka, saya mahu lakukan ini dan kemudian sebenarnya melaksanakan bahawa. Belajar bagaimana untuk perjuangan melalui kod sintaks dan pengedaran. Membaca kod orang lain, dan kemudian mentafsirkan bahawa menggunakan fungsi yang sedia ada. Jadi, nasib baik dengan pset terakhir. Ia adalah satu keseronokan untuk memimpin walkthroughs. Saya berharap mereka telah membantu untuk anda. Ini adalah Walkthroughs, dan terima kasih sangat. [CS50.TV]