$ GLOBALS可以用作信息存储吗?

时间:2014-07-14 04:35:36

标签: php

我正在为php中的应用程序创建一个api,我想存储与他/她的用户名相关联的每个连接的客户端IP地址。我不想为这个过程创建一个新的数据库或表,所以我可以将这些信息保存到$GLOBALS数组中吗?它会保存我保存的信息吗?

Psuedo代码:

if (!array_key_exists("banaaanaa", $GLOBALS)) {
    array_push($GLOBALS, "banaaanaa", time());
} else {
    $GLOBALS['banaaanaa'] = "new ip";
}

2 个答案:

答案 0 :(得分:1)

不,你不能。

PHP会根据每个请求初始化所有内容(包括$ GLOBALS)。

您需要使用数据库,文件,一组文件或memcached。

对不起。

鉴于您的要求,怀疑您最多没有超过几百个用户,我可能会使用每个用户名的目录,并在每个登录请求中触摸dir中包含该IP的文件,并删除它在注销时。您可以轻松查看所有已登录IP的列表,以及查看哪些IP未注销,但是通过查看文件的mtime,长时间没有请求。

确保清理用户名,以便它们不能被称为“../../../etc”或其他东西。 : - )

答案 1 :(得分:0)

您无法将数据保存到$GLOBALS数组中,因为它包含对当前在脚本全局范围内定义的所有变量的引用。 See Php Manual HereFor temporary Storage, you can use Sessions or Cookies,或将数据库用作永久存储。