Rumah >pembangunan bahagian belakang >tutorial php >Prinsip reka bentuk dan amalan sistem pengundian PHP
Prinsip dan amalan reka bentuk sistem pengundian PHP
Abstrak: Artikel ini akan menumpukan pada prinsip reka bentuk dan amalan sistem pengundian PHP. Ia menerangkan analisis keperluan sistem pengundian, reka bentuk pangkalan data, pengesahan dan kebenaran pengguna, interaksi hadapan dan belakang, dsb. Pada masa yang sama, artikel itu juga mengandungi contoh kod PHP yang berkaitan, bertujuan untuk membantu pembaca mempelajari dan memahami pembangunan sistem pengundian dengan lebih baik.
1. Analisis Keperluan
Sebelum mereka bentuk sistem pengundian, kita perlu menjelaskan keperluan sistem. Sistem pengundian asas biasanya merangkumi fungsi seperti mencipta undi, menerbitkan undi, mengambil bahagian dalam undi dan mengira keputusan pengundian. Dalam artikel ini, kami akan menerangkan sistem pengundian pilihan tunggal yang mudah sebagai contoh.
2. Reka bentuk pangkalan data
Dalam sistem pengundian, kita perlu mereka bentuk pangkalan data untuk menyimpan data berkaitan pengundian. Biasanya, kita perlu mencipta jadual data berikut:
Berikut ialah kod contoh reka bentuk pangkalan data:
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `vote` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `created_at` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `option` ( `id` int(11) NOT NULL AUTO_INCREMENT, `content` varchar(255) NOT NULL, `vote_id` int(11) NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`vote_id`) REFERENCES `vote`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `record` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `vote_id` int(11) NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON DELETE CASCADE, FOREIGN KEY (`vote_id`) REFERENCES `vote`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3. Pengesahan dan kebenaran pengguna
Dalam sistem pengundian, pengesahan dan kebenaran pengguna adalah sangat penting. Kami perlu memastikan bahawa hanya pengguna log masuk boleh mengundi dan setiap pengguna hanya boleh mengundi sekali setiap tinjauan pendapat. Berikut ialah contoh kod untuk pengesahan dan kebenaran pengguna:
// 登录验证 session_start(); if (!isset($_SESSION['user'])) { header('Location: login.php'); exit; } // 投票操作 if ($_SERVER['REQUEST_METHOD'] === 'POST') { $userId = $_SESSION['user']['id']; $voteId = $_POST['voteId']; $optionId = $_POST['optionId']; // 检查是否已经投过票 $record = $db->query("SELECT * FROM record WHERE user_id = $userId AND vote_id = $voteId")->fetch(PDO::FETCH_ASSOC); if (!$record) { // 插入投票记录 $db->query("INSERT INTO record (user_id, vote_id) VALUES ($userId, $voteId)"); // 更新选项的票数 $db->query("UPDATE `option` SET count = count + 1 WHERE id = $optionId"); echo '投票成功!'; } else { echo '您已经投过票了!'; } }
4. Interaksi hadapan dan belakang
Dalam sistem pengundian, interaksi antara bahagian depan dan belakang tidak dapat dielakkan. Biasanya kami menggunakan Ajax untuk melaksanakan operasi pengundian tanpa muat semula dan menggunakan format JSON untuk menghantar data. Berikut ialah contoh kod untuk interaksi hadapan dan belakang:
// 前端代码 $('.vote-btn').click(function() { var voteId = $(this).data('vote-id'); var optionId = $(this).data('option-id'); $.ajax({ url: 'vote.php', type: 'POST', dataType: 'json', data: {voteId: voteId, optionId: optionId}, success: function(data) { alert(data.message); // 刷新页面 location.reload(); } }); }); // 后端代码(vote.php) // 处理投票逻辑 // ... $response = ['message' => '投票成功!']; echo json_encode($response);
Ringkasan: Artikel ini memperkenalkan prinsip dan amalan reka bentuk sistem pengundian PHP, termasuk analisis keperluan, reka bentuk pangkalan data, pengesahan dan kebenaran pengguna, dan bahagian hadapan- interaksi hujung dan belakang. Dengan menerangkan contoh kod yang sepadan, pembaca boleh mempelajari dan memahami proses pembangunan sistem pengundian dengan lebih baik. Saya harap artikel ini dapat memberi sedikit rujukan dan bantuan kepada pembaca.
Atas ialah kandungan terperinci Prinsip reka bentuk dan amalan sistem pengundian PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!