Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Bangunan Ribbit di PHP

by
Difficulty:AdvancedLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by Taufan Prasetyo Basri (you can also view the original English article)

Dalam entri awal dalam seri ini, kami merawat UI-aspek kami klon kericau, disebut Ribbit. Sekarang, kami akan mulai pengkodean aplikasi dalam sejumlah bahasa. Pelajaran ini akan memanfaatkan PHP standar (dengan homegrown MVC), tetapi, di masa depan artikel, kami akan meninjau implementasi yang lain, seperti dengan rel atau Laravel.

Ada banyak untuk menutupi, jadi mari kita mulai.


Mana kita terakhir Tinggalkan


Ribbit

Untuk Asing, MVC Stand untuk Model-View-Controller. Anda dapat hal MVC sebagai kode Database-HTML-logika. Memisahkan kode Anda ke bagian-bagian yang berbeda ini membuatnya lebih mudah untuk menggantikan satu atau lebih komponen tanpa mengganggu sisa aplikasi Anda. Karena Anda akan lihat di bawah ini, tingkat abstraksi juga mendorong Anda untuk menulis fungsi kecil, ringkas yang mengandalkan fungsi tingkat rendah.

Saya suka untuk memulai dengan Model ketika membangun aplikasi--jenis ini semuanya cenderung untuk menyambung ke (yaitu pendaftaran, posting, dll). Mari kita setup database.


Database

Kami memerlukan empat meja untuk aplikasi ini. Mereka adalah:

  • Pengguna - memegang info pengguna.
  • Ribbits - berisi ribbits sebenarnya (pos).
  • Follows - daftar siapa yang mengikuti siapa.
  • UserAuth - meja untuk memegang otentifikasi login

Saya akan menunjukkan Anda bagaimana untuk membuat tabel ini dari terminal. Jika Anda menggunakan program admin (seperti phpMyAdmin), maka Anda dapat juga klik tombol SQL untuk langsung masukkan perintah atau tambahkan tabel melalui GUI.

Untuk memulai, membuka jendela terminal, dan masukkan perintah berikut:

Jika Anda menjalankan perintah ini pada mesin MySQL, dan nomor port tidak diubah, Anda dapat mengabaikan -h
dan argumen -P. Perintah default localhost dan port 3306, masing-masing. Setelah Anda login, Anda dapat membuat database yang menggunakan SQL berikut:

Mari kita mulai dengan menciptakan tabel Users:

Ini memberikan kita tabel berikut:


Tabel Users

Tabel berikut saya ingin membuat adalah tabel Ribbits. Tabel ini harus memiliki empat bidang: id, id, ribbit dan created_at. Kode SQL untuk tabel ini adalah:


Meja Ribbits

Ini adalah hal-hal yang cukup sederhana, jadi saya tidak akan terlalu rumit.

Berikutnya, tabel berikut. Ini hanya memegang id pengikut dan followee:


Tabel berikut

Akhirnya, kita memiliki sebuah tabel yang disebut UserAuth. Ini memegang hash username dan password pengguna. Aku memilih untuk tidak menggunakan ID pengguna, karena program sudah menyimpan username, ketika log in dan sign up (dua kali ketika entri ditambahkan ke tabel ini), tetapi program akan perlu untuk melakukan panggilan tambahan untuk mendapatkan nomor ID pengguna. Panggilan tambahan berarti lebih latency, jadi saya memilih untuk tidak menggunakan ID pengguna.

Dalam dunia nyata proyek, Anda mungkin ingin menambahkan bidang lain seperti 'hash2' atau 'rahasia'. Jika semua yang Anda butuhkan untuk mengotentikasi pengguna adalah satu hash, maka seorang penyerang hanya harus menebak bahwa satu hash. Sebagai contoh: saya secara acak memasukkan karakter ke dalam bidang hash di cookie. Jika ada cukup pengguna, itu mungkin hanya cocok seseorang. Tapi jika Anda memiliki untuk rasa dan mencocokkan dua hash, maka kemungkinan seseorang menebak pasangan benar turun secara eksponensial (yang sama berlaku untuk menambahkan tiga, dll). Tapi untuk menjaga hal-hal sederhana, saya akan hanya memiliki satu hash.

Berikut adalah kode SQL:

Dan tabel akhir ini tampak seperti gambar berikut:


Meja UserAuth

Sekarang bahwa kita memiliki semua tabel setup, Anda harus memiliki ide yang cukup baik bagaimana situs keseluruhan akan bekerja. Kita dapat mulai menulis kelas Model kami MVC Framework.


Model

Buat file, bernama model.php dan masukkan Deklarasi kelas berikut:

Ini tampak akrab bagi Anda jika Anda telah menulis PHP kelas di masa lalu. Kode ini pada dasarnya menciptakan kelas yang disebut Model. Hotel ini memiliki satu properti pribadi yang bernama $db yang memegang sebuah objek mysqli. Dalam konstruktor, aku diinisialisasi properti $db menggunakan info koneksi ke database saya. Urutan parameter: nama alamat, username, password dan database.

Sebelum kita masuk ke kode khusus halaman apapun, saya ingin membuat beberapa perintah tingkat rendah yang abstrak fungsi mySQL umum seperti pilih dan masukkan.

Fungsi pertama saya ingin menerapkan adalah select(). It menerima string nama tabel dan array properti untuk membangun klausa WHERE. Berikut adalah seluruh fungsi, dan harus pergi tepat setelah konstruktor:

Fungsi membangun string kueri yang menggunakan nama tabel dan array properti. Itu kemudian mengembalikan sebuah objek hasil yang kita dapatkan dengan melewati string permintaan melalui mysqli's query() fungsi. Dua fungsi sangat mirip; mereka adalah insert() fungsi dan fungsi delete():

Seperti Anda mungkin menebak, kedua fungsi menghasilkan sebuah query SQL dan mengembalikan hasil. Saya ingin menambahkan satu fungsi pembantu lain: fungsi exists(). Ini hanya akan memeriksa jika baris yang ada di meja tertentu. Berikut adalah fungsi:

Sebelum kita membuat lebih halaman-spesifik fungsi, kita mungkin harus membuat halaman sebenarnya. Simpan file ini dan kami akan mulai pada URL routing.


Router

Dalam kerangka kerja MVC, Semua permintaan HTTP biasanya pergi ke controller tunggal, dan menentukan controller yang berfungsi untuk melaksanakan berdasarkan URL yang diminta. Kita akan melakukan ini dengan kelas yang disebut Router. Itu akan menerima string (halaman yang diminta) dan akan mengembalikan nama fungsi yang controller harus mengeksekusi. Anda dapat menganggap itu sebagai sebuah buku telepon untuk nama-nama fungsi bukan nomor.

Berikut adalah struktur kelas selesai; hanya menyimpan ini ke file bernama router.php:

Kelas ini memiliki satu properti pribadi yang disebut rute, yang merupakan "buku telepon" untuk controller kami. Ada juga sebuah fungsi sederhana yang disebut lookup(), yang mengembalikan sebuah string jika ada jalan di properti rute. Untuk menghemat waktu, saya akan memberikan daftar sepuluh fungsi yang controller kami akan memiliki:

Daftar berjalan oleh format 'url' => 'fungsi nama'. Sebagai contoh, jika seseorang pergi ke ribbit.com/home, maka router memberitahu controller untuk menjalankan fungsi indexPage().

Router adalah hanya setengah solusi; kita perlu memberitahu Apache untuk mengarahkan ulang seluruh lalu lintas ke controller. Kami akan mencapai hal ini dengan menciptakan sebuah file .htaccess yang disebut dalam direktori root dari situs dan menambahkan berikut ke file:

Ini mungkin tampak sedikit menakutkan jika Anda belum pernah menggunakan apache mod_rewrite. Tapi jangan khawatir; Saya akan memandu Anda melalui itu baris demi baris.

Dalam kerangka kerja MVC, Semua permintaan HTTP biasanya pergi ke controller tunggal.

Baris pertama memberitahu Apache untuk mengaktifkan mod_rewrite; baris yang tersisa adalah menulis ulang aturan. Dengan mod_rewrite, Anda dapat mengambil request yang masuk dengan URL tertentu dan menyampaikan permintaan ke file yang berbeda. Dalam kasus kami, kami ingin semua permintaan untuk ditangani oleh file tunggal sehingga kami dapat memproses mereka dengan controller. Mod_rewrite module juga memungkinkan kami memiliki URL seperti ribbit.com/profile/username daripada ribbit.com/profile.php?username=username--making seluruh nuansa aplikasi Anda lebih profesional.

Aku berkata, kita ingin semua permintaan untuk pergi ke satu file, tapi itu benar-benar tidak akurat. Kami ingin Apache biasanya menangani permintaan untuk sumber daya seperti gambar, CSS file, dll. Aturan penulisan ulang pertama memberitahu Apache menangani permintaan yang dimulai dengan sumber daya / dalam mode biasa. Itu adalah kalimat biasa yang mengambil semuanya setelah kata sumber / (Perhatikan kurung pengelompokan) dan menggunakannya sebagai URL nyata ke file. Jadi misalnya: link ribbit.com/Resource/css/main.css load file terletak di ribbit.com/css/main.css.

Aturan berikutnya memberitahu Apache untuk mengarahkan kosong permintaan (yaitu permintaan ke akar website) ke/Home.

Kata "redirect" dalam tanda kurung di ujung baris memberitahu Apache untuk benar-benar mengarahkan browser, sebagai lawan menulis ulang URL untuk lain (seperti dalam pemerintahan sebelumnya).

Ada berbagai jenis berkedip: kesalahan, peringatan dan pemberitahuan.

Aturan terakhir adalah yang kami datang untuk; dibutuhkan semua permintaan (selain yang yang dimulai dengan sumber daya /) dan mengirimkan mereka ke sebuah file PHP yang disebut app.php. Itu adalah file yang load controller dan menjalankan seluruh aplikasi.

"^" Mewakili simbol awal string dan "$" mewakili akhir. Sehingga ekspresi reguler dapat diterjemahkan ke bahasa Inggris sebagai: "mengambil segala sesuatu dari awal URL sampai pertama slash, dan memasukkannya ke dalam grup 1. Kemudian mengambil segala sesuatu setelah garis miring, dan memasukkannya ke dalam kelompok 2. Akhirnya, melewati link ke Apache seolah-olah dikatakan app.php?page=group1&query=group2." "[L]" yang ada di pertama dan ketiga garis memberitahu Apache untuk berhenti setelah baris. Jadi jika permintaan URL sumber, itu tidak boleh terus aturan berikutnya; itu harus istirahat setelah yang pertama.

Saya berharap semua yang masuk akal; gambar berikut menggambarkan dengan lebih baik apa yang sedang terjadi.

Jika Anda masih belum jelas pada kalimat biasa yang sebenarnya, maka kita memiliki sebuah artikel sangat bagus yang dapat Anda baca.

Sekarang bahwa kita memiliki segalanya setup URL-wise, mari kita membuat controller.


Controller

Controller adalah dimana banyak keajaiban terjadi; Semua potongan lain app, termasuk model dan router, menghubungkan melalui di sini. Mari kita mulai dengan menciptakan sebuah file bernama controller.php dan masukkan berikut:

Dengan mod_rewrite, Anda dapat mengambil request yang masuk dengan URL tertentu dan menyampaikan permintaan ke file yang berbeda.

Kami pertama memuat model kami dan router file, dan kami kemudian membuat kelas yang disebut Controller. Ini memiliki dua variabel pribadi: satu untuk model dan satu untuk router. Dalam konstruktor, kami inisialisasi variabel tersebut dan proses string permintaan.

Jika Anda ingat, query dapat berisi beberapa nilai (kita menulis dalam .htaccess file bahwa semuanya setelah pertama slash mendapatkan dimasukkan ke dalam query--ini termasuk semua garis miring yang mungkin mengikuti). Jadi kita memisahkan string permintaan oleh garis miring, memungkinkan kita untuk lulus beberapa parameter kueri jika diperlukan.

Selanjutnya, kami melewati apa pun adalah dalam variabel $page ke router untuk menentukan fungsi untuk mengeksekusi. Jika router mengembalikan sebuah string, maka kami akan memanggil fungsi tertentu dan menyebarkannya parameter kueri. Jika router kembali palsu, controller mengirimkan kode 404 status. Anda dapat mengarahkan halaman 404 pandangan kustom jika Anda inginkan, tapi aku akan menyimpan hal-hal sederhana.

Kerangka mulai untuk mengambil bentuk; Sekarang Anda bisa menelepon fungsi tertentu berdasarkan URL. Langkah berikutnya adalah untuk menambahkan beberapa fungsi ke kelas controller untuk mengurus tugas tingkat rendah, seperti loading pandangan dan mengarahkan ulang halaman.

Fungsi pertama hanya mengarahkan browser ke halaman yang berbeda. Kita melakukan ini banyak, jadi itu adalah ide yang baik untuk membuat fungsi untuk itu:

Fungsi dua beban pandangan dan halaman, masing-masing:

Fungsi pertama beban satu pandangan dari folder "Tampilan", opsional penggalian variabel dari array terlampir. Yang kedua adalah fungsi yang kita akan referensi, dan itu beban header dan footer (mereka adalah sama pada semua halaman di sekitar tampilan ditetapkan untuk halaman), dan berbagai pesan lainnya (flash yaitu pesan kesalahan, salam, dll).

Ada satu fungsi yang kita perlu untuk mengimplementasikan yang diperlukan pada semua halaman: fungsi checkAuth(). Fungsi ini akan memeriksa apakah pengguna masuk, dan jika demikian, lulus data pengguna ke halaman. Jika tidak, kembali palsu. Berikut adalah fungsi:

Pertama, kita cek apakah kuki Auth ditetapkan. Ini adalah mana hash kita bicarakan sebelumnya akan ditempatkan. Jika ada cookie, maka fungsi mencoba untuk memverifikasi itu dengan database, kembali baik pengguna pada pertandingan sukses atau palsu jika tidak dalam tabel.

Sekarang mari kita menerapkan fungsi dalam kelas model.


Beberapa peluang dan berakhir

Dalam kelas Model, tepat setelah fungsi exists(), tambahkan fungsi berikut:

Jika Anda ingat meja kami, kami memiliki UserAuth tabel yang berisi hash bersama dengan username. Query SQL ini mengambil baris yang berisi hash dari cookie dan kembali pengguna dengan nama pengguna yang cocok.

Itulah yang harus kita lakukan di kelas ini untuk saat ini. Mari kita kembali ke dalam controller.php file dan menerapkan kelas Flash.

Dalam fungsi loadPage(), ada pilihan untuk melewati sebuah objek flash, pesan yang muncul di atas semua konten.

Sebagai contoh: jika pengguna tidak terauthentikasi mencoba posting sesuatu, app akan menampilkan pesan yang mirip dengan, "Anda harus tersign-in untuk melakukan tindakan itu." Ada berbagai jenis berkedip: kesalahan, peringatan dan pemberitahuan, dan aku memutuskan lebih mudah untuk membuat kelas Flash bukannya lewat beberapa variabel (seperti msg dan jenis. Selain itu, kelas akan memiliki kemampuan untuk output flash HTML.

Di sini adalah kelas Flash lengkap, Anda dapat menambahkan ini ke controller.php sebelum definisi kelas Controller:

Kelas ini lurus ke depan. Ini memiliki dua sifat dan fungsi untuk output flash's HTML.

Kami sekarang memiliki semua potongan yang diperlukan untuk mulai menampilkan halaman, jadi mari kita membuat app.php file. Membuat file dan masukkan kode berikut:

Dan hanya itu! Controller membaca permintaan dari mendapatkan variabel, itu diserahkan ke router, dan memanggil fungsi sesuai. Mari kita membuat beberapa pandangan untuk akhirnya mendapatkan sesuatu yang ditampilkan dalam browser.


Pemandangan

Membuat folder di root situs Anda disebut dilihat. Seperti Anda mungkin sudah menebak, direktori ini akan berisi semua pandangan yang sebenarnya. Jika Anda tidak terbiasa dengan konsep pandangan, Anda bisa memikirkan mereka sebagai file yang menghasilkan potongan-potongan HTML yang membangun halaman. Pada dasarnya, kita akan memiliki pandangan untuk header, footer dan satu untuk setiap halaman. Potongan-potongan ini menggabungkan menjadi hasil akhir (yaitu header + page_view + footer = final_page).

Mari kita mulai dengan footer; Hal ini hanya standar HTML. Buat file bernama footer.php di dalam folder dilihat dan menambahkan HTML berikut:

Saya pikir ini menunjukkan dua hal yang sangat baik:

  • Ini adalah hanya potongan halaman yang sebenarnya.
  • Untuk mengakses gambar yang di gfx folder, saya menambahkan sumber daya / ke awal jalan (untuk aturan mod_rewrite).

Selanjutnya, mari kita membuat header.php file. Header sedikit lebih rumit karena itu harus menentukan jika pengguna masuk. Jika pengguna log in, ini akan menampilkan menu bar; Jika tidak, ini akan menampilkan login form. Berikut adalah file header.php lengkap:

Aku tidak akan menjelaskan banyak dari HTML. Secara keseluruhan, pandangan ini beban dalam CSS style sheet dan membangun header benar berdasarkan status otentikasi pengguna. Hal ini dicapai dengan sederhana jika pernyataan dan variabel berlalu dari controller.

Tampilan terakhir untuk homepage adalah sebenarnya home.php. Pandangan ini berisi ucapan gambar dan pendaftaran bentuk. Berikut adalah kode untuk home.php:

Bersama-sama, ini tiga pandangan lengkap homepage. Sekarang mari kita lanjutkan menulis fungsi untuk halaman rumah.


Beranda

Kita perlu untuk menulis fungsi dalam kelas Controller yang disebut indexPage() untuk memuat halaman rumah (ini adalah apa yang kami mendirikan di kelas router). Fungsi lengkap berikut harus masuk kelas Controller setelah checkAuth() fungsi:

Dua baris pertama Periksa jika pengguna telah masuk. Jika demikian, fungsi mengarahkan ulang pengguna ke halaman "teman" dimana mereka dapat membaca posting teman-teman mereka dan melihat profilnya. Jika pengguna tidak dapat masuk, kemudian terus memuat halaman rumah, memeriksa jika ada apapun berkedip untuk menampilkan. Jadi misalnya, jika pengguna pergi ke ribbit.com/home/0, maka fungsi ini menunjukkan kesalahan pertama dan seterusnya untuk berikutnya tujuh berkedip. Setelah itu, kita memanggil fungsi loadPage() untuk menampilkan segala sesuatu di layar.

Pada titik ini jika Anda memiliki semuanya setup dengan benar (yaitu Apache dan kode kami sejauh ini), maka Anda harus dapat pergi ke akar dari situs Anda (misalnya localhost) dan melihat halaman rumah.

Selamat!! Halus berlayar dari sini di keluar... baik setidaknya halus berlayar. Hal ini hanya masalah mengulangi langkah sebelumnya untuk fungsi sembilan lainnya yang kami didefinisikan dalam router.


Bilas dan ulangi

Langkah logis berikutnya adalah untuk menciptakan fungsi pendaftaran, Anda dapat menambahkan hak ini setelah indexPage():

Fungsi ini berjalan melalui proses pendaftaran standar dengan memastikan semuanya ternyata. Jika salah satu info pengguna tidak lulus, fungsi mengarahkan ulang pengguna ke halaman rumah dengan kode kesalahan yang sesuai untuk fungsi indexPage() untuk menampilkan.

Cek untuk ada username dan password tidak dapat dilakukan di sini.

Cek tersebut harus terjadi dalam kelas Model karena kita perlu koneksi ke database. Mari kita kembali ke kelas Model dan melaksanakan fungsi signupUser(). Anda harus meletakkan hak ini setelah userForAuth() fungsi:

Kami menggunakan fungsi exists() kita untuk memeriksa email yang disediakan atau username, mengembalikan kode galat baik sudah ada. Jika semuanya berlalu, kemudian kami tambahkan akhir beberapa bidang, created_at dan gravatar_hash, dan memasukkan mereka ke dalam database.

Sebelum kembali benar, kita otorisasi pengguna. Fungsi ini menambahkan cookie Tupoksi dan kredensial masuk ke UserAuth database. Mari kita tambahkan fungsi authorizeUser() sekarang:

Fungsi ini membangun hash unik untuk pengguna sign up dan login. Ini bukan metode yang sangat aman menghasilkan hash, tapi saya menggabungkan sha1 hash dari nama pengguna bersama dengan dua belas huruf acak untuk menjaga hal-hal sederhana.

Hal ini baik untuk melampirkan beberapa info pengguna hash karena membantu membuat hash unik kepada pengguna tersebut.

Ada set karakter unik kombinasi yang terbatas, dan Anda akhirnya akan memiliki dua pengguna dengan hash sama. Tapi jika Anda menambahkan ID pengguna pada hash, maka Anda dijamin hash unik untuk setiap pengguna.


Login, dan Logout

Untuk menyelesaikan fungsi untuk halaman rumah, mari kita menerapkan fungsi login() dan logout(). Tambahkan baris berikut ke kelas Controller setelah login() fungsi:

Ini hanya membutuhkan bidang posting dari login form dan upaya untuk login. Pada berhasil login, dibutuhkan pengguna ke halaman "teman". Sebaliknya, ia mengarahkan kembali ke homepage untuk menampilkan kesalahan yang sesuai. Selanjutnya, saya akan menunjukkan kepada Anda logout() fungsi:

Logout() fungsi ini bahkan lebih sederhana daripada login(). Itu mengeksekusi salah satu Model fungsi untuk menghapus cookie dan menghapus entri dari database.

Mari kita melompat ke kelas Model dan menambahkan fungsi yang diperlukan untuk ini untuk update. Yang pertama adalah attemptLogin() yang mencoba untuk login dan kembali true atau false. Maka kita memiliki logoutUser():


Halaman teman-teman

Bergaul dengan saya; kami semakin dekat akhir! Mari kita membangun halaman "Teman". Halaman ini berisi informasi profil Anda dan daftar posting dari Anda dan orang yang Anda ikuti. Mari kita mulai dengan tampilan yang sebenarnya, jadi Buat file bernama buddies.php dalam folder dilihat dan masukkan berikut:

Div pertama adalah bentuk untuk membuat baru "ribbits". Div berikutnya menampilkan informasi profil pengguna, dan bahagian terakhirnya ialah untuk loop yang menampilkan setiap "ribbit". Sekali lagi, aku tidak akan pergi ke untuk lebih detail untuk waktu, tetapi semuanya di sini adalah cukup lurus ke depan.

Sekarang, di kelas Controller, kita harus menambahkan fungsi buddies():

Fungsi ini mengikuti struktur yang sama sebagai fungsi indexPage(): kita pertama kali memeriksa apakah pengguna masuk dan mengarahkan mereka ke halaman rumah jika tidak.

Kita kemudian memanggil dua fungsi dari kelas Model: salah satu untuk mendapatkan pengguna informasi profil dan salah satu untuk mendapatkan posting dari pengguna pengikut.

Kami memiliki tiga berkedip tersedia di sini: satu untuk pendaftaran, satu untuk login dan satu untuk jika pengguna melebihi batas 140 karakter ribbit baru. Akhirnya, kita memanggil fungsi loadPage() untuk menampilkan segala sesuatu.

Sekarang, dalam kelas Model kita harus memasukkan dua fungsi yang disebut di atas. Pertama kita memiliki fungsi 'getUserInfo':

Fungsi itu sendiri sederhana. Kami menjalankan SQL query dan mengembalikan hasil. Permintaan, di sisi lain, mungkin tampak sedikit rumit. Ini menggabungkan informasi yang diperlukan untuk bagian profil ke dalam satu baris. Informasi yang dikirim oleh query ini termasuk jumlah dari ribbits Anda membuat, ribbit terbaru Anda, berapa banyak pengikut Anda miliki, dan berapa banyak orang yang mengikuti. Query ini pada dasarnya menggabungkan satu query SELECT yang normal untuk masing-masing properti ini dan kemudian bergabung semua bersama-sama.

Selanjutnya kami memiliki getFollowersRibbits() fungsi yang tampak seperti ini:

Mirip dengan fungsi sebelumnya, satu-satunya rumit bagian di sini adalah query. Kami memerlukan informasi berikut untuk menampilkan untuk setiap posting: nama, nama pengguna, gambar gravatar, ribbit aktual dan tanggal Kapan ribbit diciptakan. Query ini mengurutkan melalui posting Anda dan posting dari orang-orang yang Anda ikuti, dan kembali ribbits sepuluh terbaru menampilkan pada halaman teman-teman.

Sekarang Anda dapat mendaftar, login dan lihat halaman teman-teman. Kami masih tidak mampu membuat ribbits jadi mari kita mendapatkan pada berikutnya.


Posting Ribbit pertama Anda

Langkah ini akan sangat mudah. Kami tidak memiliki pandangan untuk bekerja dengan; kita hanya perlu fungsi di kelas Controller dan Model. Dalam Controller, tambahkan fungsi berikut:

Sekali lagi kita mulai dengan memeriksa apakah pengguna masuk, dan jika demikian, kami memastikan pos tidak lebih dari batas karakter 140. Kami akan kemudian memanggil postRibbit() dari model dan redirect kembali ke halaman teman-teman.

Sekarang dalam kelas Model, tambahkan fungsi postRibbit():

Kami kembali ke standar query dengan yang satu ini; hanya menggabungkan data ke dalam sebuah array dan masukkan dengan fungsi insert kami. Anda sekarang harus mampu posting Ribbits, jadi pergi mencoba untuk mengirim beberapa. Kami masih memiliki sedikit lebih banyak pekerjaan untuk melakukan, jadi datang kembali setelah Anda memposting beberapa ribbits.


Dua halaman

Dua halaman yang memiliki fungsi yang hampir sama di controller sehingga saya akan mempostingnya bersama-sama:

Fungsi-fungsi ini kedua mendapatkan array data; salah satu mendapat ribbits dan profil lainnya. Mereka berdua memungkinkan Anda untuk mencari dengan opsi string posting, dan mereka berdua mendapatkan info dari Model. Sekarang mari kita menempatkan View terkait dalam folder dilihat.

Untuk ribbits hanya Buat file bernama public.php dan meletakkan berikut di dalamnya:

Div pertama adalah bentuk pencarian ribbit, dan kedua div menampilkan ribbits umum.

Dan di sini adalah pandangan terakhir yang adalah profiles.php:

Hal ini sangat mirip dengan tampilan public.php.

Langkah terakhir yang diperlukan untuk mendapatkan ini dua halaman yang bekerja adalah untuk menambahkan fungsi ketergantungan mereka ke kelas Model. Mari kita mulai dengan fungsi untuk mendapatkan ribbits umum. Tambahkan baris berikut ke kelas Model:

Jika permintaan pencarian berlalu, kemudian kami hanya memilih ribbits yang sesuai pencarian disediakan. Jika tidak, ini hanya membutuhkan ribbits terbaru sepuluh. Fungsi berikutnya sedikit lebih rumit karena kita perlu membuat beberapa query SQL. Masukkan fungsi ini untuk mendapatkan profil Umum:

Ini banyak untuk menerima, jadi aku akan pergi lebih dari itu perlahan-lahan. Pertama jika... pernyataan lain memeriksa apakah pengguna berlalu kueri penelusuran dan menghasilkan SQL tepat untuk mengambil sepuluh pengguna. Kemudian kita pastikan bahwa query kembali beberapa pengguna, dan jika demikian, ia pindah ke menghasilkan sebuah query yang kedua untuk setiap pengguna, mengambil ribbit terbaru sana dan info.

Setelah itu, kami mengirim semua pertanyaan ke database dengan perintah multi_query untuk meminimalkan tidak perlu perjalanan ke database.

Kemudian, kami mengambil hasil dan menggabungkan mereka dengan informasi pengguna dari permintaan pertama. Semua data ini dikembalikan dalam tampilan profil.

Jika Anda telah melakukan segalanya dengan benar, Anda harus mampu melewati semua halaman dan posting ribbits. Satu-satunya yang tersisa untuk dilakukan adalah menambahkan fungsi untuk mengikuti dan unfollow orang lain.


Mengikat Loose Ends

Ada tidak ada pemandangan yang terkait dengan fungsi-fungsi ini, jadi ini akan menjadi cepat. Mari kita mulai dengan fungsi dalam kelas Controller:

Fungsi-fungsi ini, seperti yang Anda mungkin dapat melihat, hampir identik. Satu-satunya perbedaan adalah bahwa satu menambahkan catatan tabel berikut dan satu menghapus catatan. Sekarang mari kita selesaikan dengan fungsi dalam kelas Model:

Fungsi-fungsi ini pada dasarnya adalah sama; mereka hanya berbeda dengan metode yang mereka sebut.

Situs ini sekarang beroperasi sepenuhnya! Hal terakhir yang saya ingin Tambahkan adalah file .htaccess yang lain di dalam folder dilihat. Berikut adalah isinya:

Hal ini tidak benar-benar diperlukan, tetapi baik untuk membatasi akses ke file pribadi.


Kesimpulan

Kita pasti dibangun sebuah klon kericau dari awal!

Ini telah menjadi sebuah artikel yang sangat panjang, tetapi kita membahas banyak! Kami setup database dan menciptakan kerangka MVC kami sendiri. Kita pasti dibangun sebuah klon kericau dari awal!

Harap diperhatikan bahwa, karena pembatasan panjang, saya harus menghilangkan banyak fitur yang Anda temukan dalam aplikasi produksi riil, seperti Ajax, perlindungan terhadap injeksi SQL dan karakter counter untuk kotak Ribbit (mungkin banyak hal-hal lain juga). Yang mengatakan, secara keseluruhan, saya pikir kami capai kesepakatan besar!

Saya harap Anda menikmati artikel ini, jangan ragu untuk meninggalkan komentar jika Anda memiliki pikiran atau pertanyaan. Terima kasih untuk membaca!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.