1

私のサイトには、ユーザーが他のユーザーを評価できるレビュー システムがあります。ユーザーがログインすると、保留中のレビュー セクションに移動して、レビューを承認または削除できます。

テーブル ptb_reviews からレビューを取得し、ページ reviews.php にリストします。次に、各レビューには、approve_review.php または delete_review.php のいずれかに移動する承認または削除リンクがあり、テーブルに関連する列を設定する SQL 関数があるため、0 から 1 まで承認または削除します。

そのため、ユーザーがレビューを承認すると、テーブルの承認が 1 に更新されます。ここでは、その特定のレビューが承認されるように選択され、削除された場合も同じです。

レビューを承認または削除しようとすると、クエリをエコーアウトしてテストし、何が起こっているかを確認し、要求どおりに動作しているかどうかを確認すると、次のようになります。

UPDATE ptb_reviews SET approved = 1 WHERE id = '' LIMIT 1

これは、レビュー ID が見つからないことを意味しているため、そのレビューに適したテーブルの 1 に更新を適用しません。

ここにレビューが引っ張られる reviews.php の私のコードがあります:

<?php
        $reviews_set = get_new_reviews();
        while ($reviews = mysql_fetch_array($reviews_set)) {

            $review_id = (int) $_GET['review_id']; 
    // Just this, is a great security enhancement. Forces the variable to be int (like all id's are). 
    // You can also check if its a numeric by doing
if (is_numeric($review_id)){
    // continue with the update query
} else {
    // something fishy is going on..
}


?>


        <div class="prof-content-pend-reviews" id="reviews">
             <div class="pend-review-content">
             <?php echo "{$reviews['content']}"; ?>
             </div>
             <div class="message_pic">
             <?php echo "<a href=\"profile.php?id={$reviews['from_user_id']}\"><img width=\"50px\" height=\"50px\" src=\"data/photos/{$reviews['from_user_id']}/_default.jpg\" /></a>";?>

             </div>

             <div class="forum-text">
             <?php echo "Posted by {$reviews['display_name']}"; ?> <?php echo "".$age." days ago"; ?>
          </div>

          <a href="includes/approve_review.php?review=<?php echo $reviews['review_id']; ?>"><div class="approve"></div></a>
           <a href="includes/delete_review.php"><div class="delete"></div></a>


             </div>

             <? }  ?>

次は、approve_review.php の SQL 関数を実行するコードです。

<?php
require_once("session.php"); 
require_once("functions.php");
require('_config/connection.php');

                        $query = "UPDATE ptb_reviews SET approved = 1 WHERE id = '$review_id' LIMIT 1";
            mysql_query($query, $connection);



echo $query;
die();
// See what is really sent to MySQL
if (!mysql_query($query, $connection)){
    die(mysql_error());
}
?>

私は基本的に、承認または削除されているレビューのIDが見つからないため、何も更新されない理由と、それを更新してどのレビューを要求しているかを知るために何ができるかを尋ねています承認または削除しますか?

私はまだPHPとMySQLを学んでいるので、誰かが私に見せたり、何をすべきかを説明したりできれば、それは素晴らしいことです.

4

1 に答える 1

1

次のようなクエリ変数を取得しています。

$review_id = (int) $_GET['review_id']; 

ただし、リンクでは次を使用します。

<a href="includes/approve_review.php?review=<?php echo $reviews['review_id']; ?>">
                                     ^^^^^^

したがって、レビュー ID は では$_GET['review']なくに保存されます$_GET['review_id']

開始するには、その行を次のように変更する必要があります (またはその逆...):

$review_id = (int) $_GET['review']; 
于 2012-12-28T19:49:01.737 に答える