【问题标题】:Store IP in PHPMyAdmin在 PHPMyAdmin 中存储 IP
【发布时间】:2018-11-13 12:49:04
【问题描述】:

我有一个 php 我的管理数据库,

我不太了解如何构建它,但遵循this answer 我做了一个

ip int(11) UNSIGNED

IP 值

我想存储用户的IP,这样他们就不能两次访问我的页面了。

我做以下查询

$ip = inet_pton($_SERVER['REMOTE_ADDR']);
$request = "INSERT INTO `users` (`ip`) VALUES (".$ip.")";
$result = $dbh->query($request);

但这给了我一个空值。并且没有任何内容添加到数据库中

编辑:

用户表

所以完整的请求是:

function getIPforBDD(){
    return inet_pton($_SERVER['REMOTE_ADDR']);
}
$request = "INSERT INTO `users` (`ip`, `finish`, `lastPage`) VALUES (".getIPforBDD().", ".$GLOBALS["userHasFinish"].", questionnaire_initial.php)";
$result = $dbh->query($request);

【问题讨论】:

  • 请显示完整的用户表列。
  • inet_pton() 返回一个字符串,而不是整数。如果你改用ip2long(),你会得到一个整数。这更好,因为 MySQL 比较整数比比较字符串更快。

标签: php database phpmyadmin ip


【解决方案1】:

使用inet_pton() 函数后,数据将无法读取。只需在数据库中为 ip 列使用 varchar(16) 数据类型,并将代码的第一行更改为:

$ip = $_SERVER['REMOTE_ADDR'];

【讨论】:

  • 很多人在我搜索这个答案时说这是一个坏主意并给出了其他解决方案(但只在 mysql 中,所以在我的情况下不起作用)
【解决方案2】:

你可以试试这个吗?

$request = "INSERT INTO users (ip) VALUES ('$ip')";

【讨论】:

    猜你喜欢
    • 2011-12-26
    • 2012-05-28
    • 2016-12-02
    • 2011-08-05
    • 2014-09-29
    • 2023-03-09
    • 2010-11-09
    • 2013-12-07
    • 1970-01-01
    相关资源
    最近更新 更多