不好意思各位大大,本人小弟自己在練習寫個簡單網頁,網頁為可以點選文章按下喜歡,以下為CODE
<!DOCTYPE html>
<html>
<head>
<title>文章內容</title>
<link rel="stylesheet" href="style.css">
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
<script src="post.js"></script>
</head>
<body>
<header>
<h1>每日文章</h1>
</header>
<main>
<?php
session_start();
require_once 'mysql.inc.php';
echo "<p>歡迎, " . $_SESSION['username'] . "!</p>";
// 檢查 Session 中是否有 username
if (isset($_SESSION['username']) && isset($_POST['articleId'])) {
$logged_in_username = $_SESSION['username'];
$articleId = $_POST['articleId'];
// 檢查是否已經收藏過
$check_duplicate_sql = "SELECT * FROM `posting` WHERE `帳號`='$logged_in_username' AND `類別`='$articleId'";
$result = mysqli_query($conn, $check_duplicate_sql);
if (mysqli_num_rows($result) > 0) {
echo '已經點選過了!';
} else {
$insert_sql = "INSERT INTO `posting` (`帳號`,`類別`) VALUES ('$logged_in_username','$articleId')";
if (mysqli_query($conn, $insert_sql)) {
} else {
echo 'Error inserting record: ' . mysqli_error($conn);
}
}
}
?>
<article>
<h2>#閒聊 大學生的存款</h2>
<p>想問大家覺得現在大學生至少要有多少存款...</p>
<button class="collect-btn1" onclick="handleCollect(1)" data-collected="false">喜歡</button>
</article>
<article>
<h2>#八卦 柯震東有女友?!</h2>
<p>在Threads看到的,這是真假?怎麼都沒新聞 低卡也沒有...</p>
<button class="collect-btn2" onclick="handleCollect(2)" data-collected="false">喜歡</button>
</article>
</main>
</body>
</html>
然後我有設置按下喜歡後不能重複按相同的文章喜歡,如果按重複的畫網頁會跳出視窗顯示"已按過",但是不知道為什麼都沒辦法顯示出來,但是資料庫是有成功沒有重複新增的,再麻煩各位大師指點。
說來話長
提供兩個參考範例
1.你現在所在位置,左上角就有一個like/unlike(方向向上箭頭圖示)
2.投票範例
老話一句
先完全看懂/照抄別人的範例
再慢慢修改成自己要的結果
貼的程式碼不完整,比如 post.js 內容?
而且也不理解你這支程式的邏輯,跟你敘述的情境不太兜得起來。
(前端界面的 js 按鈕,怎會搭配從後端 php echo 出來的反應訊息?)
另外還有一個可怕的 SQL injection 漏洞:
$articleId = $_POST['articleId'];
:
$check_duplicate_sql = "SELECT * FROM `posting` WHERE `帳號`='$logged_in_username' AND `類別`='$articleId'";
至少也做一下型別轉換,確保不會被 SQL injection 吧?
$articleId = intval($_POST['articleId']);