php - 在 MySQL 中存储 IP 地址的问题
问题描述
我正在为我的网站制作密码重置功能,并决定记录请求的 IP 地址,以防它被报告为错误。
作为一个函数,这就是我所拥有的,用于在初始请求时存储所有信息:
public function insert($memberId, $token)
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])){
$ip=$_SERVER['HTTP_CLIENT_IP'];
}elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip=$_SERVER['REMOTE_ADDR'];
}
$ip = ip2long($ip);
$query = 'INSERT INTO password_reset (member_id, password_recovery_token, expire_at, ip_address, is_valid) VALUES (?, ?, ?, ?, ?)';
$paramType = 'sssii';
$time = date('Y-m-d H:i:s');
// expire the token after 12 hours
$RESET_TOKEN_LIFE = '12 hours';
$expireAt = date('Y-m-d H:i:s', strtotime($time . ' + ' . $RESET_TOKEN_LIFE));
$paramValue = array(
$memberId,
$token,
$ip,
$expireAt,
1
);
$memberId = $this->ds->insert($query, $paramType, $paramValue);
}
出于某种原因,它不存储 IP 地址,它存储年份......为什么要这样做?是什么原因造成的?
解决方案
尝试更正您发送的参数。第 4 个参数是expireAt,将其更改为IP:
$paramValue = array(
$memberId,
$token,
$expireAt,
$IP,
1
);
推荐阅读
- latex - Latex Beamer - 使每个项目自动出现在新幻灯片上
- angular - RXJS 如何知道 Finalize 何时完成?
- python - 在python中反转文件行
- ios - SwiftUI Spacer 在 HStack 内的 Toggle 旁边不起作用
- c - 如何解决错误信息:crtmfcpatch.h not found?
- java - 会话描述符不适用于与 weblogic 共享会话
- python - 如何替换熊猫列子集上的 NaN 值?
- python - 连接来自两个预先训练的 Tensorflow 模型的预测
- android - Leanback 的 VerticalGridView 中的不同视图类型
- sql - 如何跳过插入 db2 中的错误行?