Aduh. Anda telah mengambil pekerjaan besar. Apakah Anda benar-benar yakin bahwa tidak ada yang akan Anda lakukan yang tidak dapat dilakukan oleh sesuatu yang sudah tersedia? Nah, jika Anda yakin, baca terus.
Pertama, bagian tersulit dari apa yang ingin Anda lakukan adalah mengelola akses pengguna Anda. Saya sarankan Anda memulai dengan menulis modul manajemen pengguna Anda sebelum melangkah lebih jauh.
Untuk apa yang Anda inginkan, tampaknya Drupal atau salah satu sistem CMS senior lainnya akan menjadi cara yang bagus untuk mem-bootstrap sistem. Drupal akan menangani manajemen pengguna Anda langsung (atau dengan masalah minimal) dan Anda dapat menulis sisa kode Anda sebagai node statis. Ini juga memudahkan untuk menambahkan blog, forum, berita, dan mengelola milis, dll.
Seperti yang dinyatakan dalam komentar di atas, Anda perlu menyimpan data Anda bersama-sama. akan lebih baik untuk menyimpan data untuk perbandingan historis juga.
Jika tidak memperpanjang CMS, setelah Anda kembali dari psikiater, Anda akan memerlukan sesuatu seperti:
-
file header untuk mengakses db dan memeriksa otentikasi pengguna.
-
file footer untuk menampilkan data Anda
-
file halaman individual untuk menyajikan atau mendapatkan data Anda.
Struktur database untuk menangani pengguna (minimal) harus IRO:
Person - details of individual users
username - link person to a username
email - email addresses
club - sports club details
password - passwords
logon - record of logon attempts
role - record of role of individuals in your site
permissions - list of required permissions to access areas of the site
role_permissions - default permissions for each role
person_role - link person to role
person_permissions - link person to permissions (only needed if some individuals need extra permissions not given routinely by their role)
club_person; person_email; - link people to clubs and to their email addresses.
Untuk menangani kecocokan yang Anda perlukan:
team - team name, group and club reference
grouping - list of groups eg by age.
divisions. - list of divisions
venue - list of venues. Include GPS!!!
match - division, grouping, team1, team2, venue, date, time
result - team1 reported result, team 2 reported result, approved result (you may need to intervene!) match.
Seperti yang Anda lihat, Anda memerlukan beberapa tabel yang adil tetapi ANDA TIDAK HARUS mencoba melakukan hal-hal menyenangkan dengan tim yang sebenarnya SAMPAI Anda memiliki akses pengguna yang berfungsi dengan baik.
Apa yang saya buat sketsa untuk Anda adalah db dalam bentuk normal. Tidak ada data tekstual yang diduplikasi dan data mudah diambil, diindeks, dan ditampilkan. Saya merasa pertanyaan ini terlalu luas untuk SO karena mendesain database untuk Anda agak di luar jangkauan, tetapi menurut saya format umumnya berguna.
Setiap tabel hanya boleh berisi data unik yang diperlukan, misalnya:
Person: personid int, surname, forename, style, whenadded, whoadded, inuse
email: emailid, email, whenadded, whoadded, inuse
email_person: emailpersonid,emailid,personid, whenadded,whoadded,inuse
Ini memungkinkan banyak orang untuk berbagi satu email dan beberapa email diterapkan ke satu orang tanpa duplikasi teks. ID harus mengetik INT AUTO_INCREMENT PRIMARY KEY daripada SERIAL karena ini menghemat banyak ruang penyimpanan dan Anda tidak akan pernah mengisi INT dalam aplikasi ini.
Tabel lainnya harus dibuat dengan cara yang sama. Kolom whoadded dan whenadded adalah opsional dan cukup haus penyimpanan tetapi bisa sangat berguna. inuse sangat penting, setel ini ke BOOL dan Anda dapat menghapus tim tanpa menghapusnya - data tidak hilang. Whenremoved dan whoremoved juga berguna untuk audit.
Sepatah kata tentang kata sandi - pastikan Anda menyimpannya sebagai SALTED HASH. Jika Anda melakukan ini, ketika situs Anda diretas, tidak ada yang akan memiliki kata sandi yang juga mereka gunakan untuk internet banking mereka. Orang sering bodoh. Anda harus menjaga mereka.
Seperti yang saya katakan, sedikit di luar ruang lingkup jadi saya akan mengakhiri jawabannya di sana - ini memberi Anda seperti yang diminta garis besar dasar dari Db Bentuk Normal ke-4 yang akan kuat dan dapat diperpanjang tetapi membiarkan Anda melakukan pekerjaan. Mengapa tidak mengajukan lebih banyak pertanyaan jika masalahnya ternyata terlalu sulit.
Semoga berhasil.
DITAMBAHKAN:
Kerangka Kerja DIY:
Jika Anda tidak ingin belajar menggunakan salah satu kerangka kerja atau CMS yang ada, Anda harus menulis sendiri. Anehnya, ini sebenarnya sangat mudah.
header.php:
<?PHP
$mysqli=new mysqli(credentials....)//connect to database and present a mysqli or pdo object.
session_start(); //open a session
//you will need to authenticate your session here - see below
?>
footer.php:
<HTML>
<HEAD>
<TITLE>
<?PHP echo $pagetitle;?>
</TITLE>
</HEAD>
<BODY>
<?PHP echo $content;?>
</BODY>
</HTML>
Ini digunakan oleh mypage.php:
<?PHP
require("header.php");
//do some stuff that generates $content
$pagetitle="mypage.php";
require("footer.php:);
?>
Harus ditekankan bahwa ini adalah minimum yang Anda perlukan dan benar-benar payah - ini hanya disajikan untuk menunjukkan bagaimana ini harus dimulai, bukan contoh kode ideal. Ini akan berhasil.
Kuncinya adalah membuat header yang menampilkan variabel yang Anda perlukan, seperti koneksi db, nama pengguna, status login pengguna, dll. dan footer yang dapat Anda masukkan detailnya untuk menyajikan data. Footer adalah satu-satunya tempat Anda menggabungkan HTML dan PHP.
Gunakan $_SESSION Anda untuk menyimpan informasi yang perlu disimpan di antara halaman.
File-file ini bisa sesederhana atau serumit yang Anda suka - Saya membuat sendiri beberapa waktu lalu yang melakukan beberapa pemeriksaan pada pengguna dan sesi dan dapat menampilkan skrip, file CSS khusus, dan semacamnya di footer. Ini tidak sulit dilakukan jika Anda memulai dari yang sederhana dan membangun sesuai kebutuhan. SO akan siap membantu Anda.
Satu kata peringatan:meskipun Anda bisa memulai dengan sangat sederhana, apa yang Anda coba lakukan memiliki kaki dan akan keluar dari kendali. Harap audit kode Anda setelah Anda menjalankannya untuk memastikan bahwa Anda tidak memasukkan kelemahan keamanan secara tidak sengaja. Sangat mudah untuk menyertakan ini saat Anda masuk ke dalam sebuah proyek dan membutuhkan perbaikan cepat dan mereka bisa sangat sulit ditemukan di kemudian hari kecuali jika Anda mencarinya.