0

同じIPからの複数のアカウントを防止しようとしています:

if (! empty($_SERVER['HTTP_CLIENT_IP']))
{
    $ip = $_SERVER['HTTP_CLIENT_IP'];
}
elseif (! empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
    $ip = $_SERVER['REMOTE_ADDR'];
}

$stmt = $db->prepare("SELECT 1 FROM users WHERE ip = :ip");
$stmt->bindParam(':ip', $ip, PDO::PARAM_STR);
$result = $stmt->execute();
$row = $stmt->fetch();

if ($row)
{
    die("Only one account per IP is allowed !");
}

これは機能しますが、IPごとに2つのアカウントを許可したい場合はどうなりますか?私は試した:

$stmt = $db->prepare("SELECT * FROM users WHERE ip = :ip");
$stmt->bindParam(':ip', $ip, PDO::PARAM_STR);
$result = $stmt->execute();
$row = $stmt->fetch();

if ($row > 1)
{
    die("Only one account per IP is allowed !");
}

動作しません。2番目のアカウントは許可されていません。

4

2 に答える 2

2

あなたはそれを数える必要があります.count()を使用する

SELECT count(*) as count FROM users WHERE ip = :ip

http://php.net/manual/en/pdostatement.rowcount.php

于 2013-01-08T11:18:51.410 に答える
1

以下のようにクエリを更新するだけです。

$stmt = $db->prepare("SELECT count(*) FROM users WHERE ip = :ip");
于 2013-01-08T11:52:55.670 に答える