Tutorial Pasukan Lucee MY

Kemas projek dan langkah seterusnya

Semak struktur fail projek inventori, tukar logik kepada komponen CFC yang boleh diguna semula, dan ikut senarai semak keselamatan sebelum ke pelayan sebenar.

Kemas projek dan langkah seterusnya
0
Kandungan

Kemas projek dan langkah seterusnya

Empat belas bab kemudian, bermula daripada bab pengenalan, anda mempunyai aplikasi yang berfungsi: senarai produk, borang, log masuk, gerakan stok dan laporan.

Bab ini tidak menambah ciri baharu. Ia mengemas apa yang sudah ada, dan menunjukkan arah selepas ini.

Apa yang anda sudah bina

BabYang ditambah
00Gambaran projek dan persediaan
01Halaman CFML pertama
02Pemasangan Lucee
03Nilai, keputusan dan gelung
04Pangkalan data dan cfquery
05Include dan jadual HTML
06Borang, pengesahan dan cfqueryparam
07Ubah dan arkib
08Log masuk dan sesi
09Carian, penapis dan halaman
10Gerakan stok dan transaksi
11Laporan dan CSV
12XSS, CSRF, peranan dan had cubaan
13Kemas dan langkah seterusnya

Itu bukan projek mainan. Ia mempunyai kira-kira 660 baris kod dalam 17 fail, empat jadual pangkalan data, dan setiap ciri telah diuji pada enjin Lucee yang sama seperti pelayan produksi.

Struktur fail

Selepas semua bab, folder projek anda sepatutnya kelihatan seperti ini:

C:\inventori\
├── Application.cfc
├── index.cfm
├── log-masuk.cfm
├── logkeluar.cfm
├── produk-tambah.cfm
├── produk-ubah.cfm
├── produk-arkib.cfm
├── stok.cfm
├── laporan.cfm
├── laporan-csv.cfm
├── components\
│   └── Harga.cfc
└── includes\
    ├── atas.cfm
    ├── bawah.cfm
    ├── csrf.cfm
    └── semakan-login.cfm

Struktur folder projek selepas empat belas bab

Dua fail pada senarai itu mungkin belum wujud dalam projek anda: components\Harga.cfc dan laporan-csv.cfm. Yang pertama diperkenalkan di bawah, yang kedua dalam bab laporan.

Kalau fail anda bertaburan di luar folder ini, pindahkan sekarang. Struktur yang jelas lebih penting daripada ciri tambahan.

Langkah pertama ke arah komponen

Setakat ini, setiap halaman mengandungi logiknya sendiri. Apabila satu pengiraan digunakan di dua tempat, anda menyalinnya, dan salinan itu akan berpisah perlahan-lahan.

CFML menyelesaikan masalah ini dengan komponen, iaitu fail .cfc yang mengandungi fungsi boleh guna semula.

Cipta folder components, kemudian fail components/Harga.cfc:

component {
    function denganCukai(numeric harga, numeric kadar = 0.06) {
        return numberFormat(arguments.harga * (1 + arguments.kadar), "0.00");
    }
}

Kemudian gunakannya dalam mana-mana halaman:

<cfset h = new components.Harga()>
<cfoutput>#h.denganCukai(18.50)#</cfoutput>

Saya menguji fail ini pada rig: denganCukai(18.50) memulangkan 19.61, dan denganCukai(100, 0) memulangkan 100.00.

Perhatikan dua perkara. Parameter kedua mempunyai nilai lalai, jadi pemanggil boleh meninggalkannya. Dan di dalam fungsi, parameter dibaca melalui arguments, bukan namanya terus. Itu peraturan CFML yang akan anda temui semula apabila menulis komponen.

Mengapa ini penting? Kerana cukai, diskaun dan format harga akan digunakan di banyak halaman, sama seperti transaksi stok dalam bab gerakan stok yang kini menjadi satu corak berulang. Satu fungsi bermakna satu tempat untuk dibetulkan apabila kadar berubah.

Ujian automatik

Apabila logik berpindah ke komponen, ia boleh diuji tanpa membuka pelayar. Lucee menyokong TestBox, yang membolehkan anda menulis ujian seperti:

describe("Harga", function() {
    it("menambah cukai 6 peratus", function() {
        var h = new components.Harga();
        expect(h.denganCukai(100)).toBe("106.00");
    });
});

Ujian ini dijalankan dalam terminal atau pelayar, dan ia memberitahu anda dengan segera apabila perubahan kod memecahkan sesuatu.

Untuk projek sebesar ini, ujian automatik belum wajib. Apabila anda menambah diskaun, cukai berlapis dan pembundaran, ia berbaloi.

Senarai semak sebelum ke pelayan sebenar

Aplikasi yang berjalan di WampServer belum bersedia untuk pelanggan. Sebelum memindahkannya, semak perkara berikut.

PerkaraMengapa
Kata laluan pangkalan data bukan kosongroot tanpa kata laluan hanya selamat di komputer sendiri
rahsia123 ditukarKata laluan contoh tidak boleh digunakan di pelayan
HTTPS diaktifkanCookie sesi boleh dicuri melalui HTTP
Fail cipta-admin.cfm dipadamIa membolehkan sesiapa mencipta akaun
Application.cfc tidak mendedahkan kredensialJangan simpan kata laluan dalam kod yang dikongsi
Sandaran pangkalan data dibuatphpMyAdmin menyediakan pilihan Export untuk setiap pangkalan data
Folder includes tidak boleh disenaraikanUji dengan membuka includes/ dalam pelayar

Baris terakhir itu sering dilupakan. Sesetengah pelayan membenarkan senarai folder, dan pelawat boleh melihat nama fail dalaman anda.

Memindahkan data

Aplikasi tanpa data tidak berguna. Dua langkah memindahkan data daripada WampServer ke pelayan:

  1. Dalam phpMyAdmin, pilih pangkalan data inventori, kemudian eksport sebagai SQL.
  2. Pada pelayan baharu, cipta pangkalan data kosong dan import fail SQL itu.

Selepas itu, kemas kini Application.cfc dengan host, nama pangkalan data, pengguna dan kata laluan yang baharu. Uji halaman senarai sebelum memberikan akses kepada sesiapa.

Jangan sekali-kali mengimport fail SQL ke pangkalan data yang sudah mempunyai data. Ia akan mencipta jadual pendua atau gagal separuh jalan. Uji pada pangkalan data kosong dahulu.

Satu peringatan tentang data pelanggan

Apabila aplikasi ini menyimpan nama pelanggan, nombor telefon atau alamat, tanggungjawab anda berubah. Data itu bukan milik anda, dan ia perlu dilindungi.

Dua perkara asas: jangan simpan apa yang tidak diperlukan, dan jangan biarkan data itu keluar daripada pelayan tanpa sebab. Senarai semak keselamatan dalam bab keselamatan menutup bahagian teknikal, tetapi keputusan tentang data ialah keputusan anda.

Tiga arah selepas ini

Pertama, pelbagai cawangan. Apabila kedai membuka cawangan kedua, stok perlu dipecahkan mengikut lokasi. Itu bermakna lajur lokasi_id pada gerakan_stok, dan laporan yang menjumlahkan mengikut lokasi.

Kedua, pesanan pelanggan. Gerakan keluar sekarang mewakili jualan, tetapi tiada rekod siapa yang membeli. Jadual pesanan dan pesanan_item akan menyambungkan stok kepada pelanggan sebenar.

Ketiga, antara muka yang lebih baik. Semua halaman kini menggunakan HTML biasa. Apabila anda selesa, tambah sedikit JavaScript untuk carian langsung tanpa memuat semula halaman.

Tiada satu pun daripada ini perlu dilakukan hari ini. Setiap satu menambah kerumitan, dan setiap satu sepatutnya ditambah hanya apabila ada keperluan sebenar.

Perkara yang saya pelajari menulis siri ini

Tiga perkara berulang kali muncul, dan ketiga-tiganya berbaloi diingati.

Pertama, tanda # dalam CFML mempunyai dua makna. Di luar <cfoutput>, ia dicetak sebagai teks. Di dalamnya, ia memulakan ungkapan. Warna CSS seperti #b45309 akan memecahkan halaman. Saya terserempak dengan masalah ini lima kali.

Kedua, ujian pada enjin sebenar menemui perkara yang tidak dapat dilihat dalam bacaan kod. driver: "mysql" kelihatan betul tetapi tidak mendaftarkan datasource. &gt; kelihatan selamat tetapi dihantar kepada MySQL sebagai teks.

Ketiga, kod yang berfungsi belum tentu selamat. Ujian yang baik bukan sahaja bertanya "adakah ia berjalan", tetapi juga "apa yang berlaku apabila seseorang memberi input yang tidak dijangka". Halaman senarai berfungsi selama sebelas bab sebelum saya menemui bahawa ia boleh menjalankan skrip daripada nama produk.

Soalan Lazim

Perlukah saya menukar semua halaman kepada komponen sekarang? Tidak. Tukar apabila satu logik digunakan di dua tempat atau lebih. Sebelum itu, salinan kecil lebih mudah difahami.

Boleh saya menggunakan aplikasi ini untuk kedai sebenar? Boleh, selepas senarai semak di atas dipatuhi dan data diuji dengan beberapa pengguna. Mulakan dengan satu pengguna, kemudian tambah.

Apa jadi kalau saya mahu menambah medan baharu pada produk? Tambah lajur melalui phpMyAdmin, kemudian tambah medan itu pada borang dan query. Jangan lupa kemas kini senarai dan laporan.

Di mana saya boleh belajar lebih lanjut? Dokumentasi Lucee ialah tempat pertama. Selepas itu, baca kod projek sumber terbuka dan tulis semula bahagian kecil untuk memahami keputusannya.

Adakah siri ini akan disambung? Bab tambahan akan ditambah apabila ada keperluan sebenar yang diuji. Setiap bab mesti melalui ujian yang sama seperti yang anda baca.

Sumber

Log masuk untuk menyimpan kemajuan bacaan anda.

0 komen

0 komen

Log masuk untuk menjawab atau memberi komen.

Log masuk