iT邦幫忙

0

PHP跟MYSQL連接

  • 分享至 

  • xImage

不好意思各位大大,本人小弟自己在練習寫個簡單網頁,網頁為可以點選文章按下喜歡,以下為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>



然後我有設置按下喜歡後不能重複按相同的文章喜歡,如果按重複的畫網頁會跳出視窗顯示"已按過",但是不知道為什麼都沒辦法顯示出來,但是資料庫是有成功沒有重複新增的,再麻煩各位大師指點。

兩個按扭裡的handleCollect()這個函式作了什麼事?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

3
海綿寶寶
iT邦大神 1 級 ‧ 2024-02-04 09:01:44

說來話長
提供兩個參考範例
1.你現在所在位置,左上角就有一個like/unlike(方向向上箭頭圖示)
2.投票範例

老話一句
先完全看懂/照抄別人的範例
再慢慢修改成自己要的結果

0
wiseguy
iT邦超人 1 級 ‧ 2024-02-26 12:10:53

貼的程式碼不完整,比如 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']);

我要發表回答

立即登入回答