如何根据用户的唯一访问来重定向用户

时间:2019-05-08 01:07:57

标签: php

我正在尝试创建一个页面,如果ip是唯一的,则将用户重定向到该页面。我已经做到了,但是我陷入了困境(逻辑问题)。

我想说的是这个

该代码获取数据库中注册的所有url并进行轮换。

如果用户在过去24小时内已经访问了该网址,则代码将使用另一个网址,依此类推。

如果用户在过去24小时内访问了所有网址,则他/她将重定向到默认页面。

此代码有问题,它不会旋转网址。我想不出一种有效的方法。

<?php
function Url()
{
    $dbhost = 'localhost';
    $dbuser = 'root';
    $dbpass = '';
    $dbname = 'rotator';
    $conn   = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
    if (!$conn) {
        die('Could not connect: ' . mysqli_error());
    }
    $query  = "SELECT `url` FROM `urls`";
    $result = mysqli_query($conn, $query);
    if (mysqli_num_rows($result) > 0) {
        $array = []; 
        while ($row = $result->fetch_array(MYSQLI_BOTH)) {
            $array[] = $row["url"];
        }
        //var_dump($array);
        return $array[array_rand($array)];
    }
}
function CheckIfIpVisitedUrl($ip, $url)
{
    $dbhost = 'localhost';
    $dbuser = 'root';
    $dbpass = '';
    $dbname = 'rotator';
    $conn   = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
    if (!$conn) {
        die('Could not connect: ' . mysqli_error());
    }
    $purge_query = "DELETE FROM `ip_table` WHERE `data` < DATE_SUB(CURDATE(), INTERVAL 24 HOUR)";
    $result      = mysqli_query($conn, $purge_query);
    $result      = mysqli_query($conn, "SELECT ip FROM `ip_table` WHERE ip = inet_aton('$ip')");
    //var_dump($result);
    if (mysqli_num_rows($result) > 0) {
        //header("Location: http://example.com"); 
        return "example.com"; //default 
    } else {
        $ip     = "$ip";
        //$ip = "127.0.0.1";
        //echo $url;
        $result = mysqli_query($conn, "INSERT INTO `ip_table` VALUES (null, INET_ATON('$ip'), now())");
        echo $conn->error;
        return $url;
    }
}
$user_ip = filter_input(INPUT_SERVER, "REMOTE_ADDR", FILTER_VALIDATE_IP);
$result  = CheckIfIpVisitedUrl($user_ip, Url());
echo $result;
//header("Location: $result");
?>

0 个答案:

没有答案