Maison > Article > développement back-end > Principes de conception et pratique du système de vote PHP
Principes et pratiques de conception du système de vote PHP
Résumé : Cet article se concentrera sur les principes et pratiques de conception des systèmes de vote PHP. Il décrit l'analyse des exigences du système de vote, la conception de la base de données, l'authentification et l'autorisation des utilisateurs, l'interaction front-end et back-end, etc. Dans le même temps, l'article contient également des exemples de code PHP pertinents, visant à aider les lecteurs à mieux apprendre et comprendre le développement des systèmes de vote.
1. Analyse des exigences
Avant de concevoir le système de vote, nous devons clarifier les exigences du système. Un système de vote de base comprend généralement des fonctions telles que la création de votes, la publication des votes, la participation aux votes et le décompte des résultats du vote. Dans cet article, nous expliquerons à titre d'exemple un système de vote simple à choix unique.
2. Conception de la base de données
Dans le système de vote, nous devons concevoir une base de données pour stocker les données liées au vote. Normalement, nous devons créer les tables de données suivantes :
Voici le code de l'exemple de conception de base de données :
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. Authentification et autorisation de l'utilisateur
Dans le système de vote, l'authentification et l'autorisation des utilisateurs sont très importantes. Nous devons garantir que seuls les utilisateurs connectés peuvent voter et que chaque utilisateur ne peut voter qu'une seule fois par sondage. Voici un exemple de code pour l'authentification et l'autorisation des utilisateurs :
// 登录验证 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. Interaction front-end et back-end
Dans un système de vote, l'interaction entre le front-end et le back-end est inévitable. Habituellement, nous utilisons Ajax pour mettre en œuvre des opérations de vote sans actualisation et utilisons le format JSON pour transmettre les données. Voici un exemple de code pour l'interaction front-end et back-end :
// 前端代码 $('.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);
Résumé : Cet article présente les principes et les pratiques de conception du système de vote PHP, y compris l'analyse des exigences, la conception de la base de données, l'authentification et l'autorisation des utilisateurs, ainsi que l'interface front-end et back-end. interaction finale et back-end. En expliquant les exemples de code correspondants, les lecteurs peuvent mieux apprendre et comprendre le processus de développement du système de vote. J'espère que cet article pourra fournir aux lecteurs des références et de l'aide.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!