データベースの投票システムを作成しようとしています。現在、レコードは画面上のphpでレンダリングされ、上または下の投票用の画像が表示されます。クリックすると、php スクリプト upvote.php または downvote.php がそれぞれ実行され、id 値 (操作されているレコードの整数) が渡されます。
現在は機能しており、スクリプトはレコードの投票値を意図したとおりに増減します。ただし、ユーザーが 1 つのレコードに対してこれを複数回実行するのを止めようとしていました。セッションを使用してIDの値に名前を付け、投票値を変更する前に、そのIDのセッションが設定されているかどうかを確認することで、これを達成しようとしていました。
例として「upvote.php」を使用します。
//Upvote Script
//begin session
session_start();
//database connection credentials import
include("../scripts/connection_variables.php");
//connect to mysql or display error
@mysql_connect("$db_host","$db_username","$db_pass") or die ("Could not connect to the database, please try again shortly. If problem persists please refer to help then contact support.");
//select database or or display error
@mysql_select_db("$db_name") or die ("Could not connect to the database, please try again shortly. If problem persists please refer to help then contact support.");
//collect id
$id = $_GET['id'];
//check if user has already voted for this
if(isset($_SESSION[$id])) {
//session has been set for this id, so don't execute the script
exit();
}else{
//set the session
$_SESSION[$id] = "The punniest thing about puns is that they are really punny.";
//increment the votes value
$query = "UPDATE punniest_database SET votes= 1 + votes WHERE id='$id'";
mysql_query($query);
}