我正在尝试创建一个页面,如果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");
?>