如何查看某个ip的数组历史记录?

时间:2017-04-18 02:28:37

标签: php html arrays

所以我有一个数组,可以随机向访问该网站的用户显示用户名。所以我想要做的是让它从已经看到用户名的ip登录显示的用户名,然后在不同的页面上显示日志,例如example.com/history,但只有看过那些用户名的ip才会看到该历史记录像每个IP有不同的历史。这是我的代码的样子:

<?php
$usrnames = file('https://www.example.com/usernames.txt');
$usernames = array_values(array_filter($usrnames, "trim"));
echo $usernames[array_rand($usernames)];
?>

很抱歉,如果我在解释这个问题上做得不好,请随时编辑。

1 个答案:

答案 0 :(得分:1)

按会话

你可以使用PHP Sessions非常相似的东西。您可以在会话数组中保留一组已查看的用户名。这将通过设备浏览器而不是IP来跟踪它们。使用PHP会话将更准确地代表一个人#34;因为它对设备来说是独一无二的。

session_start();

$usrnames = file('https://www.example.com/usernames.txt');
$usernames = array_values(array_filter($usrnames, "trim"));
$chosen = $usernames[array_rand($usernames)];
echo $chosen; 

$_SESSION['history'][] = $chosen;

然后在您要显示已查看用户名的页面上:

session_start();
var_dump($_SESSION['history']);

按Cookie

如果您想无限期地存储历史记录,则需要使用Cookie。

if (isset($_COOKIE['history'])) {
    $history = json_decode($_COOKIE['history'], true);
}

$usrnames = file('https://www.example.com/usernames.txt');
$usernames = array_values(array_filter($usrnames, "trim"));
$chosen = $usernames[array_rand($usernames)];
echo $chosen; 

$history[] = $chosen;

setcookie("history", json_encode($history), 2147483647, '/');

然后是您要显示历史记录的页面:

var_dump(json_decode($_COOKIE['history']), true);