我正在为php中的应用程序创建一个api,我想存储与他/她的用户名相关联的每个连接的客户端IP地址。我不想为这个过程创建一个新的数据库或表,所以我可以将这些信息保存到$GLOBALS
数组中吗?它会保存我保存的信息吗?
Psuedo代码:
if (!array_key_exists("banaaanaa", $GLOBALS)) {
array_push($GLOBALS, "banaaanaa", time());
} else {
$GLOBALS['banaaanaa'] = "new ip";
}
答案 0 :(得分:1)
不,你不能。
PHP会根据每个请求初始化所有内容(包括$ GLOBALS)。
您需要使用数据库,文件,一组文件或memcached。
对不起。
鉴于您的要求,怀疑您最多没有超过几百个用户,我可能会使用每个用户名的目录,并在每个登录请求中触摸dir中包含该IP的文件,并删除它在注销时。您可以轻松查看所有已登录IP的列表,以及查看哪些IP未注销,但是通过查看文件的mtime,长时间没有请求。
确保清理用户名,以便它们不能被称为“../../../etc”或其他东西。 : - )
答案 1 :(得分:0)
您无法将数据保存到$GLOBALS
数组中,因为它包含对当前在脚本全局范围内定义的所有变量的引用。 See Php Manual Here。
For temporary Storage, you can use Sessions or Cookies
,或将数据库用作永久存储。