-4

データベースにいくつかの値を送信するコードがいくつかあります。ゲストが 24 時間ごとに送信できるようにしたいと考えています。IP制限によりNATユーザーが制限されるため、Cookieを使用してこれを行う方法を知りたいです。

それは別のPHPファイルにある必要がありますか?

これが私の現在のコードです:

<?php
$con=mysqli_connect("host","user","pass","db_name");
// Check connection
if (mysqli_connect_errno ())
{
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

//post result to db
$result_set = mysqli_query($con,"SELECT points FROM total WHERE id = 1");
$row = mysqli_fetch_assoc($result_set);
$old_total = $row['points'];
$new_total = $old_total + $_REQUEST['total'];
mysqli_query($con,"UPDATE total SET points = $new_total WHERE id = 1");
mysqli_close($con);
?>
4

2 に答える 2

1

また、ユーザーが Cookie を削除したり、単に Cookie の受け入れを拒否したりした場合はどうなるでしょうか? 彼はあなたのデータベースに無数の挿入を送ることができます. Cookie は何かを「保護」するための安全な方法ではありません。同時に IP+Cookie で制限するか、何らかのログイン システムを作成します。

とにかく、あなたが望むことをしてください。クッキーコードが設定されていない場合は、ここで設定します。

  if(isset($_COOKIE['somenameofmycookie'])) {
    echo 'you can not submit a form!';
  } else {
    setcookie("somenameofmycookie", $info, time()+1111111); //write in $info what do you want and set a proper time to 24 hours, more at php.net
  }
于 2013-03-10T10:53:30.050 に答える
0
<?php
function is_submit_allowed ($form_name, $timeout)
{
    session_set_cookie_params ($timeout);
    @session_start ();

    $key = "${form_name}_last_submit_time";
    $now = time ();
    if (!isset ($_SESSION [$key]) || $_SESSION [$key] <= $now - $timeout)
    {
        $_SESSION [$key] = $now;
        return true;
    }
    else return false;
}

if (is_submit_allowed ("vote_form", 24 * 60 * 60))
{
    echo ("Submitting...");
}
else
{
    echo ("You can only submit once every 24 hours");
}
?>
于 2013-03-10T10:54:27.030 に答える