一千萬個為什麽

搜索

新規訪問者かどうかを識別するためのJoomla API

ユーザーが新規訪問者であるかどうかをjoomlaで識別するためのAPIまたは可能性はありますか。

具體的には、ユーザーはjoomlaユーザーとして登録されていません。これは単純な匿名の訪問者です。

それで、ここで私の質問は、ユーザーが新しいかどうか、またはユーザーがすでに私たちを訪問したことがあるかどうかを識別するためのjoomla apiがありますか。

最佳答案

データベーステーブルの設定があると仮定すると、次のコードを使用して確認を実行できます。

// This function is taken from my own extension
public function getIpAddress()
{
    $server   = $this->app->input->server;
    $clientIp = $server->get('HTTP_CLIENT_IP');
    $httpFwd  = $server->get('HTTP_X_FORWARDED_FOR');

    if (!empty($clientIp))
    {
        $ip = $clientIp;
    }
    elseif (!empty($httpForwarded))
    {
        $ip = $httpForwarded;
    }
    else
    {
        $ip = $server->get('REMOTE_ADDR');
    }

   //If we don't have a valid IP address just return null
    if (filter_var($ip, FILTER_VALIDATE_IP) === false)
    {
        return null;
    }

    return filter_var($ip, FILTER_VALIDATE_IP);
}

// Get the users' IP
$userIP = getIpAddress();

// Check to see if the IP already exists in the database
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->qn('ip'))
    ->from($db->qn('#__mytable'))
    ->where($db->qn('ip') . ' = ' . $db->q($userIP));
$db->setQuery($query);

$result = $db->loadResult();

// Check if the result is not empty
if (!empty($result))
{
   //We have a match, the users' IP already exists in the database
   //You can perform some action here
}
else
{
   //The IP doesn't exists in the database, let's add it
    $object = new stdClass();
    $object->ip = $userIP;

    $result = JFactory::getDbo()->insertObject('#__mytable', $object);
}

何が起こっているのかを示すためにコードにコメントをいくつか追加しましたが、まだテストしていないことに註意してください。

データベーステーブル名の変更など、コードに多少の変更を加える必要があります。

Important: You will need to notify all users that you're storing their IP address for GDPR purposes

お役に立てれば

轉載註明原文: 新規訪問者かどうかを識別するためのJoomla API