เรืองการให้คะแนนโดยจำกัดระยะเวลา
อยากให้จำกัดระยะเวลาได้อ่ะ ขอนู่มันให้คะแนนอย่างเด๋ว
<?
if($_POST['update'] ==null){
$sql ="select Score_friend,Username from member where Username = '$_SESSION[friend]' and status in (1,4)";
$result = mysql_query($sql) or die (mysql_error());
$i=0;
while(($row = mysql_fetch_array($result))!=false){
// echo "{$row['Username']} คะแนน {$row[Score_friend]}";
}
}else{
// echo $_POST[scroe_friend];
//echo $_SESSION[friend];
// if(isset($_COOKIE[lastGiveScore])==false && (isset($_SESSION[lastGiveScore]) ==false){ //$_SESSION[lastGiveScore] < date()+24 ชั่วโมง
// setcookie('lastGiveScore','1',time()+60*60*24);
// $_SESSION[lastGiveScore]=date();
// ob_end_flush();
$sql ="update member set Score_friend=Score_friend+({$_POST[scroe_friend]}) where Username = '$_SESSION[friend]' and status in (1,4)";
// echo $sql;
$result = mysql_query($sql) or die (mysql_error());
//}
}
?>
<?
if($_POST['SumScore']== null) {
$result=mysql_query("select Score_friend from member where username = '$_SESSION[friend]' and status in (1,4)") ;
while($row=mysql_fetch_array($result)){
// echo "$row[Score_friend]<br/>";
}
}
?>
<?
if($_GET[f]!=null)
$_SESSION[friend]=$_GET[f];
$result=mysql_query("select * from member where username = '$_SESSION[friend]' and status in (1,4,6)");
while(($row = mysql_fetch_array($result))!=false){
echo "<tr><td rowspan=\"4\"> <img src ='$row[Picture_member]' width=150 height =100></center> </td>";
echo"<td>NAME:$row[Username] </td>";
echo"<td><B><center>คะแนนโหวต</B></td></tr>";
echo"<tr><td>Birthday:$row[Birthday]</td></tr>";
echo"<tr><td> Occupation:$row[Occupation]</td>";
echo"<td><center>$row[Score_friend] คะแนน</h2> </td></tr>";
echo"<tr><td> Country:$row[Country]</td><td><select name=\"scroe_friend\"><option value=\"1\">1</option>
<option value=\"2\">2</option>
<option value=\"3\">3</option>
<option value=\"4\">4</option>
<option value=\"5\">5</option>
<option value=\"6\">6</option>
<option value=\"7\">7</option>
<option value=\"8\">8</option>
<option value=\"9\">9</option>
<option value=\"10\">10</option>
<option value=\"-1\">-1</option>
<option value=\"-2\">-2</option>
<option value=\"-3\">-3</option>
<option value=\"-4\">-4</option>
<option value=\"-5\">-5</option>
<option value=\"-6\">-6</option>
<option value=\"-7\">-7</option>
<option value=\"-8\">-8</option>
<option value=\"-9\">-9</option>
<option value=\"-10\">-10</option>
</select><input type=\"submit\"value=\"update\" name=\"update\"/></td></tr>";
}
?>
</tr>
</table>
</form>
<?
if($_POST['update'] ==null){
$sql ="select Score_friend,Username from member where Username = '$_SESSION[friend]' and status in (1,4)";
$result = mysql_query($sql) or die (mysql_error());
$i=0;
while(($row = mysql_fetch_array($result))!=false){
// echo "{$row['Username']} คะแนน {$row[Score_friend]}";
}
}else{
// echo $_POST[scroe_friend];
//echo $_SESSION[friend];
// if(isset($_COOKIE[lastGiveScore])==false && (isset($_SESSION[lastGiveScore]) ==false){ //$_SESSION[lastGiveScore] < date()+24 ชั่วโมง
// setcookie('lastGiveScore','1',time()+60*60*24);
// $_SESSION[lastGiveScore]=date();
// ob_end_flush();
$sql ="update member set Score_friend=Score_friend+({$_POST[scroe_friend]}) where Username = '$_SESSION[friend]' and status in (1,4)";
// echo $sql;
$result = mysql_query($sql) or die (mysql_error());
//}
}
?>
<?
if($_POST['SumScore']== null) {
$result=mysql_query("select Score_friend from member where username = '$_SESSION[friend]' and status in (1,4)") ;
while($row=mysql_fetch_array($result)){
// echo "$row[Score_friend]<br/>";
}
}
?>
<?
if($_GET[f]!=null)
$_SESSION[friend]=$_GET[f];
$result=mysql_query("select * from member where username = '$_SESSION[friend]' and status in (1,4,6)");
while(($row = mysql_fetch_array($result))!=false){
echo "<tr><td rowspan=\"4\"> <img src ='$row[Picture_member]' width=150 height =100></center> </td>";
echo"<td>NAME:$row[Username] </td>";
echo"<td><B><center>คะแนนโหวต</B></td></tr>";
echo"<tr><td>Birthday:$row[Birthday]</td></tr>";
echo"<tr><td> Occupation:$row[Occupation]</td>";
echo"<td><center>$row[Score_friend] คะแนน</h2> </td></tr>";
echo"<tr><td> Country:$row[Country]</td><td><select name=\"scroe_friend\"><option value=\"1\">1</option>
<option value=\"2\">2</option>
<option value=\"3\">3</option>
<option value=\"4\">4</option>
<option value=\"5\">5</option>
<option value=\"6\">6</option>
<option value=\"7\">7</option>
<option value=\"8\">8</option>
<option value=\"9\">9</option>
<option value=\"10\">10</option>
<option value=\"-1\">-1</option>
<option value=\"-2\">-2</option>
<option value=\"-3\">-3</option>
<option value=\"-4\">-4</option>
<option value=\"-5\">-5</option>
<option value=\"-6\">-6</option>
<option value=\"-7\">-7</option>
<option value=\"-8\">-8</option>
<option value=\"-9\">-9</option>
<option value=\"-10\">-10</option>
</select><input type=\"submit\"value=\"update\" name=\"update\"/></td></tr>";
}
?>
</tr>
</table>
</form>
อย่างแรก ต้องบันทึกเวลา ที่ทำการให้คะแนน หรือ vote เก็บไว้ด้วย เพื่อไว้อ้างอิง เวลาที่ vote ล่าสุด
อย่างที่สอง ตอนที่ vote ให้ตรวจสอบเวลาก่อนครับ ว่า vote ล่าสุดเมื่อไร (ตามข้อแรก) ถ้าครบกำหนดแล้ว ก็ให้บันทึก vote ได้ แต่ถ้าไม่ ก็อาจแจ้งเตือน
จุดทีสำคัญ ผมแนะนำให้บันทึก เวลา vote ในรูป mktime เนื่องจากเก็บเป็นตัวเลข จะคำนวณเวลาง่าย (ด้วย PHP) และอาจต้องทำการบันทึก id ของ หน้าที่ vote เอาไว้ด้วย หากมีหลาย vote
ส่วนการเก็บเวลา สามารถเก็บไว้ได้หลายรูปแบบครับ อย่างง่ายสุด ก็ เก็บบน cookie ของ ผู้ใช้ ถ้ายากกว่านั้นสักหน่อยก็อาจบันทึก server ลงในฐานข้อมูลหรืออืนใดก็ได้ตามถนัด
ในด้านความปลอดภัย ผมว่า การโกง vote นั้น ทำไม่ยากครับ ไม่ว่าจะด้วยวิธีใดก็ตาม หากเก็บบน cookie จะโกง ง่ายสุด ด้วยการลบ cookie ก็สามารถ vote ใหม่ได้แล้ว หรือ หากเก็บบนฐานข้อมูล ไม่ว่าจะบันทึก session หรือ ip เก็บไว้ดวยก็ตาม ทั้ง 2 ค่าก็ยังถูกแก้ไขได้ (ไม่ยากนัก) หนทางที่ดูดีที่สุด สำหรับการป้องกันการโกง vote คือ ระบบสมาชิกครับ เนื่องจาก สมาชิก 1 คน สวามารถมีได้แค่ 1 vote เท่านั้น ครับ
ถ้าไม่มี ลองดูว่า
<?php
// ใช้งาน cookie
ob_start();
// ใช้งาน session
session_start();
?>
ทั้ง 2 คำสั่ง มีหรือไม่ ถ้ายังไม่เข้่าใจ ลองหาอ่าน บทความ เกี่ยวกับ cookie session ดูครับ
if(isset($_COOKIE[lastGiveScore])==false && (isset($_SESSION[lastGiveScore]) ==false){
$_SESSION[lastGiveScore] < date()+24 ชั่วโมง
setcookie('lastGiveScore','1',time()+60*60*24);
$_SESSION[lastGiveScore]=date();
ob_end_flush();