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

Membina Permulaan Anda: Menjemput Orang melalui URL

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Building Your Startup With PHP.
Building Your Startup: Ajax for Meeting Times and Places
Building Your Startup: Increasing Security

Malay (Melayu) translation by Meyria (you can also view the original English article)

Final product image
What You'll Be Creating

Tutorial ini adalah sebahagian daripada Membina Permulaan Anda Dengan siri PHP pada Envato Tuts+. Dalam siri ini, saya membimbing anda melalui melancarkan permulaan dari konsep ke realiti menggunakan aplikasi Perancang Mesyuarat saya sebagai contoh kehidupan sebenar. Setiap langkah di sepanjang jalan, saya akan melepaskan kod Perancang Mesyuarat sebagai contoh sumber terbuka yang boleh anda pelajari. Saya juga akan menangani isu-isu perniagaan yang berkaitan dengan permulaan apabila ia timbul.

Jadual Mesyuarat Kumpulan Anda melalui URL Pintasan

Selamat datang! Saya baru-baru ini kembali dari tempat kegemaran saya di dunia, yang saya nyatakan pada akhir episod terakhir. Selepas melengkapkan beberapa mesyuarat peserta, saya mengambil masa rehat.

Building Your Startup Secure Shareable Invitation URL - My Favorite Place In the Woods

Hari ini, saya akan menambah keupayaan untuk menjemput peserta mesyuarat dengan berkongsi URL yang selamat yang berkaitan dengan mesyuarat anda. Ini amat berguna untuk menjadualkan mesyuarat kumpulan. Sebagai contoh, jika anda mahu menjemput 30 orang, kadang-kadang lebih mudah untuk menjatuhkan e-mel kepada semua orang dengan URL jemputan.

Jika anda belum lagi, sila cuba menjadualkan mesyuarat kumpulan anda hari ini! Jemput beberapa rakan untuk bertemu dengan anda untuk kombucha, kava, atau kopi. Kongsi fikiran dan maklum balas anda tentang pengalaman semua orang dalam komen di bawah. Saya mengambil bahagian dalam perbincangan, tetapi anda juga boleh menghubungi saya @reifman di Twitter. Saya sentiasa terbuka untuk idea-idea ciri baru untuk Perancang Mesyuarat serta cadangan untuk episod siri masa depan.

Sebagai peringatan, semua kod Perancang Mesyuarat disediakan sumber terbuka dan ditulis dalam Rangka Kerja Yii2 untuk PHP. Sekiranya anda ingin mengetahui lebih lanjut mengenai Yii2, periksa siri selari pemrograman dengan Yii2.

Sebelum saya menyelam ke dalam ciri ini, saya ingin memberikan beberapa contoh beberapa pepijat hari biasa (atau oversights) yang saya temui membina perkhidmatan tersebut. (Sekiranya anda hanya ingin membaca tentang URL yang boleh dikongsi dengan selamat, jangan ragu untuk melangkau bahagian ini.)

Interlude Bug Permulaan

Apabila lebih ramai orang mula mencuba Perancang Mesyuarat, pepijat datang. Dan, selalunya semasa pembangunan, saya melihatnya sendiri. Berikut adalah beberapa yang baru-baru ini, hanya untuk memberi anda idea tentang kehidupan permulaan.

Ia boleh menjadi sukar untuk memberi tumpuan kepada pembangunan perniagaan dan pemasaran, pengekodan ciri-ciri baru, dan mengenal pasti dan membetulkan pepijat. Permulaan satu orang berkembang dalam kesukaran kerana ciri laman web anda berkembang.

Seperti yang saya tulis mengenai sebelumnya, saya kini menggunakan Asana untuk perancangan ciri-tetapi juga untuk mengesan pepijat.

Jika tugasan Bug

Saya yakin jika saya mempunyai lebih banyak kepakaran sebagai pemaju, bekerja dengan rakan-rakan, atau mempunyai lebih banyak masa untuk tidak kod Mesyuarat Perancang, saya akan tahu sebenarnya sambungan Atom Editor yang memburu ini. Jika anda tahu, sila posting itu dalam komen.

Rupa-rupanya, dalam ciri penting untuk memeriksa sama ada penonton sebenarnya seorang peserta mesyuarat, saya menggunakan tugasan untuk memeriksa. Dalam erti kata lain, saya tidak bertanya sama ada pemilik itu penonton-saya membuat kes ini buat sementara waktu.

Anda ingat, dua sama adalah perbandingan, satu sama dengan tugas. Sama seperti tempoh untuk concatenations dan tanda tambah adalah untuk penambahan, kecuali dalam JavaScript, di mana mereka untuk tanpa henti sukar untuk mencari pepijat (yang juga mengapa Ajax adalah neraka dalam PHP).

Pertanyaan Pangkalan Data yang Gagal Lebih Masa

Oleh kerana penggunaan Perancang Mesyuarat saya sendiri meningkat, terdapat lebih banyak lagi mesyuarat dalam pandangan saya. Dan kemudian saya perhatikan bahawa kadang-kadang pendua akan muncul. Ini sukar untuk dikesan lebih awal apabila terdapat kurang data.

Pertanyaan mesyuarat khusus tab saya (iaitu perancangan mesyuarat, mesyuarat yang disahkan, mesyuarat yang lepas, dll) tidak mengasingkan entri unik:

Menambah->distinct() kepada pertanyaan tetap ia.

Yii2 Pagination pada pandangan Grid pada tab

Satu lagi bug yang saya hadapi dengan lebih banyak data ialah pautan penghabisan Yii2 sentiasa membawa saya kembali ke tab pertama.

Building Your Startup Secure Shareable Invitation URL - Pagination of Meetings

Saya menambah parameter pertanyaan untuk tab semasa yang aksiIndex MeetingController.php kini mencari:

Juga, saya mengarahkan pariti pagination untuk menggabungkan tetapan tab semasa. Apabila pengguna mengklik pada pautan halaman yang berbeza, tab sekarang dimasukkan.

Akhir sekali, saya juga membuat pandangan /frontend/views/meeting/index.php sedar tentang ini, menetapkan tab aktif dari parameter pertanyaan:

Mereka adalah beberapa contoh yang baik dari jenis bug setiap hari yang saya jalankan untuk membina permulaan skop Mesyuarat Perancang.

Sekarang, mari kita Menyelam ke dalam bangunan jemputan melalui URL pintasan seperti yang dijanjikan.

Membina URL Pintasan Berkongsi Secure

Berfikir Mengenai Keselamatan untuk URL

Untuk menjadikannya lebih sukar untuk letupan rawak URL meneka untuk memecah jemputan mesyuarat seseorang, saya perlu mempunyai kunci yang agak unik digabungkan dengan kod yang tidak dapat dibaca.

Saya memutuskan untuk menggunakan nama pengguna orang sebagai kunci. Setiap pengguna akan mempunyai sejumlah besar kod mesyuarat yang hampir tidak dapat dibaca.

Jadi, sebagai contoh, sebuah Mesyuarat URL mungkin akan https:/meetingplanner.io/presidenthillary/X1Y2Z3A7C9.

Untuk kod itu, saya memutuskan untuk menggunakan lapan aksara alfanumerik yang sensitif huruf. Dalam erti kata lain, setiap watak akan menjadi a-z, A-Z, atau 0-9, pada asasnya 62 kemungkinan bagi setiap watak.

Jumlah kemungkinan bagi setiap pengguna ialah 218,340,105,584,896-lebih daripada 218 trilion. Oh, dan anda perlu tahu nama pengguna sasaran anda untuk bermula! Lebih mudah untuk menggodam akaun e-mel peserta.

Menambah Kod Keselamatan untuk Setiap Mesyuarat

Untuk menambah Kod Keselamatan kepada kesemua mesyuarat sedia ada, saya membuat pemindahan, m160902_174350_extend_meeting_for_identifier.php:

Anda akan perasan bahawa dalam pemindahan ini, saya benar-benar menggunakan kod untuk mencipta tali secara rawak bagi setiap mesyuarat yang sedia ada, iaitu Yii::$app-> Keselamatan->generateRandomString(8);.

Ia tidak selalunya bahawa saya akan menulis kod ke dalam penghijrahan untuk mengemas kini kawasan sedia ada pangkalan data. Dalam kes ini, ia berfungsi dengan lancar. Kali lain, saya telah menggunakan model /frontend/models/Fix.php.

Juga, dalam Mesyuarat::beforeSave(), saya menambah kod automatik untuk menghasilkan pengecam untuk semua mesyuarat masa depan:

Memperluas Routing Yii

Walaupun ia akan menjadi paling mudah untuk memasukkan awalan pengawal seperti /m/nama pengguna/kod-identiti, saya mahu pautan mudah, tanpa awalan tambahan. Ini memerlukan melanjutkan Yii Routing.

Jika saya menyimpannya dalam model sendiri untuk awalan dan nama pengguna, saya mungkin dapat menggunakan apa yang saya tulis mengenai dalam Perilaku Slipgable Yii2 dan Membina Permulaan Anda: Geolokasi dan Tempat Google.

Sebaliknya, saya menambah '<username> /<identity:[A-Za-z0-9_-]{8}' => 'mesyuarat/identiti' yang memaparkan nama pengguna mana-mana dengan rentetan identiti kepada kaedah ActionIntegrity().

Dengan ini, saya mengalami beberapa masalah. Saya perlu menyusun semula peraturan dan meletakkan laluan statik untuk apa-apa lapan tindakan aksi yang mungkin kelihatan seperti nama pengguna (bukan pengawal) dan kaedah (bukan kunci identiti).

Sebagai contoh, https://meetingplanner.io/site/features dipetakan ke laman web yang bernama pengguna yang mempunyai ID mesyuarat selamat 'ciri' dan bukannya jadual ciri baru Perancang Mesyuarat.

Tetapi, apabila saya berorientasikan diri kepada isu-isu, semuanya berjalan dengan baik.

Kaedah Identiti Pengawal Mesyuarat

Seterusnya, saya membina tindakanIdentity() dalam MeetingController:

Pertama, ia mengesahkan bahawa nama pengguna dan identiti sesuai dengan pengguna sedia ada dan mesyuarat yang ada. Sekiranya tidak, kami menghantarnya ke suratkhabar.

Jika pengguna sudah log masuk, kami akan menambahkannya secara automatik sebagai peserta ke halaman ini dan mengalihkannya ke halaman paparan Mesyuarat.

Sekiranya mereka tidak, kami menghantarnya kepada pengawal Peserta Sertai tindakan untuk menangani log masuk atau pendaftaran.

Peserta Meminta untuk Sertai Mesyuarat

Sebagai contoh, katakan saya menerima jemputan emel berikut dari seorang kawan:

https://meetingplanner.io/tomeMcFarline/JzRq1a42. Saya akan ditunjukkan halaman ini:

Building Your Startup Secure Shareable Invitation URL - Participant Join Page from Invite URL

Jika pengguna ingin mendaftar untuk Mesyuarat Perancang melalui rangkaian sosial, kita akan dapat mengesahkan alamat e-mel mereka.

Jadi saya menetapkan URL pulangan Yii (halaman yang pengguna diarahkan semula selepas pendaftaran atau log masuk yang berjaya) yang akan mengembalikannya ke halaman paparan Mesyuarat selepas pengesahan.

Untuk sebahagian besar, pengesahan sosial, log masuk dan/atau pendaftaran diuruskan oleh kod yang saya nyatakan dalam Membina Permulaan Anda: Memudahkan Onramp Dengan OAuth.

Jika peserta baru, mereka akan menyediakan mereka pertama dan terakhir nama dan alamat email. Kami akan menambahnya ke dalam mesyuarat sebagai peserta tidak dikenal pasti, serupa dengan apa yang kita lakukan apabila pengguna menjemput seseorang dengan menambah alamat e-mel baru kepada mesyuarat.

Anda tertanya-tanya sekarang, hey Jeff, apa dengan ... hari ini? Ini mudah, kan? Kami hanya menambah pengguna baru ke mesyuarat.

Manakala pengekodan ini, saya sedar saya mencipta sebuah lubang besar privasi.

Contoh Lubang Keselamatan Fun

Katakanlah Tom McFarlin tidak mempunyai apa-apa yang perlu dilakukan pada suatu hari dan memutuskan untuk bercelaru dengan saya (dan Tuhan). Dia akan membuat satu mesyuarat baru dan, dengan mengetahui bahawa Dalai Lama adalah perancang Mesyuarat Perjumpaan biasa (kerana semua pertemuan kerohaniannya), McFarlin akan menambahkannya ke mesyuaratnya dengan menggunakan email dalailama@gmail.com.

Kemudian, beliau akan merebut Nya URL pintasan selamat yang mewah. Berikutan saya?

Seterusnya, McFarlin akan membuka penyemak imbas yang berbeza dan membuka URL pintasannya yang selamat dan berpura-pura dia Dalai Lama yang baru saja menerima jemputan yang berbeza melalui e-mel dari Tom, iaitu dia akan cuba untuk menyertai pertemuannya seolah-olah dia adalah Dalai Lama. iaitu Dalai, Lama, dalailama@gmail.com.

Pada mulanya, saya menganggap bahawa tidak ada kemungkinan bahawa seseorang akan meneka URL selamat, jadi jika itu berlaku, saya akan membiarkan seseorang log masuk dengan cara ini.

Tetapi, ini akan memberikan akses McFarlin berbahaya kepada akaun Dalai Lama (sebahagiannya kerana saya belum lagi membina mod akses terhad untuk pengguna yang masuk melalui URL untuk hanya dapat melihat satu pertemuan sehingga mereka log masuk).

Ya, kod permulaan saya bekerja dengan cara ini. Dan kemudian saya mendapat panggilan dari langit dan menunjukkan ini.

Bagaimana jika McFarlin menjemput Sally dan Sally meneruskan URL selamat kepada Bill Gates? Dengan menambah Bill Gates secara manual kepada mesyuarat pertama, McFarlin boleh mengakses semua mesyuarat Gates dengan helah ini.

Kod baru memerlukan peserta menggunakan URL yang selamat yang telah pun kebetulan ditambah ke mesyuarat itu untuk log masuk secara manual. Inilah yang... Kod:

Saya akan menambal ini sekali lagi apabila saya membuat mod akses terhad tunggal.

Saya mungkin tidak Pernahkah terfikir tentang hal ini jika saya tidak diketahui bagaimana devious McFarlin ini. Phew. Satu queen lebih daripada keracunan.

Building Your Startup Secure Shareable Invitation URL - The Devious Editorial God Tom McFarlin Or Not

Mungkin mengambil masa hujung minggu saya dalam alam semula jadi membuat saya lebih berhubung dengan langit juga.

Apa yang ada dalam Saluran Paip?

Building Your Startup Secure Shareable Invitation URL - Surfing Pipeline image
Domain awam melalui Google & Hawaii Picture of the Day

Saya harap anda menikmati episod ini untuk mewujudkan URL selamat untuk menjemput orang ke mesyuarat. Saya bayangkan ia boleh digunakan semula untuk senario lain dalam perkhidmatan anda sendiri.

Anda juga mungkin boleh memberitahu saya sama ada menikmati Perancang Mesyuarat yang berpotensi kelihatan pada ketika ini-atau saya baru saja bekerja terlalu lama.

Akhirnya, membina undangan URL selamat juga membuka peluang untuk menawarkan pengguna laman penjadwal awam. Contohnya, saya boleh berkongsi URL Planner Mesyuarat awam saya dengan rakan-rakan dan, katakan, jadilah saya di https://meetingplanner.io/username.

Pada masa akan datang, saya juga boleh memperluas Perancang Mesyuarat untuk menawarkan ciri langganan untuk para profesional untuk membuat temu janji di laman Perancang Mesyuarat awam mereka. Walau bagaimanapun, saya mempunyai idea lain yang lebih menarik. Wilayah ini ditonjolkan oleh syarikat berorientasikan perniagaan yang lain.

Menunggang Rumah Gelombang

Sekiranya belum, jadilah jadual pertemuan pertama anda dengan Perancang Mesyuarat sekarang! Cuba kongsi URL pintasan mesyuarat anda, dan simpanlah rahsia dari tuhan editorial kami Tom McFarlin.

Anda juga boleh menghubungi saya @reifman. Saya sentiasa terbuka kepada idea ciri baru dan cadangan topik untuk tutorial masa depan. Atau cuba meja bantuan kami dan buka laporan pepijat atau permintaan tiket ciri.

Tutorial mengenai crowdfunding juga dalam karya-karya, jadi sila ikuti halaman Perancang Mesyuarat WeFunder kami.

Tunggu selama semua tutorial ini dan lebih banyak lagi dengan memeriksa Bangunan Anda Startup Dengan siri PHP.

Pautan Berkaitan

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.