如何将服务器$ _SERVER ['REMOTE_ADDR']存储为数据库中的id

问题描述 投票:-1回答:1

我想将Ip地址存储为数据库中的Id。为此,我首先使用str-replace剥离点。

$ipAddress = $_SERVER['REMOTE_ADDR'];
$user_id = str_replace(".","",$ipAddress);

我的查询如下所示:

CREATE TABLE `posts` (
`id` int(24) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`text` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

问题:他将user_id存储为数据库中的“2147483647”

为了测试我做了$user_id;的回声,它给了我这个值(我的IP):9421491192

那么为什么它在DB中存储另一个值而不是像上面那样存储我的ip?

php mysql sql
1个回答
0
投票
  1. 您的id列应该只是一个auto_incremented数字列。在此处,请勿在此处使用IP。
  2. 如果你要剥离点,填充八位字节,以便最终保持3位数,那样1.23.45.67和12.34.5.67最终不会是同一个东西。但是,我建议完全跳过这一步并保持点。
  3. 为IP地址创建一个单独的列,并将其存储为char或字符串字段。
  4. 在ip_address列上创建唯一索引。
© www.soinside.com 2019 - 2024. All rights reserved.