【发布时间】:2012-09-09 17:22:52
【问题描述】:
所以我将我的网站上传到我刚购买的网络服务器上,一切都在我的计算机上运行良好。但是现在我在我的数据库中插入数据时遇到了问题,我将问题追查到创建插入的每一行中插入的行的用户的 IP 地址。
我有一个返回 ip2long 值的 php 函数,它看起来像这样:
function ip2()
{
return ip2long($_SERVER['REMOTE_ADDR']);
}
然后将其插入到我的数据库中,sql 代码如下所示:
$sql = "INSERT INTO `Users`
(
`Username`,
`Password`,
`Email`,
`ip_created`
)
VALUES
(
'".$db->sql_escape(htmlspecialchars($this->username, ENT_QUOTES))."',
'".$db->sql_escape($this->secure_pass)."',
'".$db->sql_escape($this->clean_email)."',
'".ip2()."'
)";
$db->sql_query($sql))
ip_created 字段是长度为 10 的 int
所有的数据库交互都在一个 php 类中处理,也许这可能是个问题。
我真的不知道问题出在哪里,这真的开始困扰我。在我的本地主机版本上一切正常。
【问题讨论】:
-
ip2long()在 32 位系统上可能返回负数。如果您的数据库字段是INT UNSIGNED,这将无法正确玩游戏。我个人更喜欢pack('N')的IP地址,并存储为VARBINARY(4),YMMV