我想将$_SERVER["REMOTE_ADDR"]
PHP中返回的数据存储到数据库字段中,这非常简单.问题是我无法找到有关IPv6地址的文本表示的最大长度的任何适当信息,这是网络服务器提供的$_SERVER["REMOTE_ADDR"]
.
我对将文本表示转换为地址通常编码的128位不感兴趣,我只想知道存储返回的任何IPv6地址需要多少个字符$_SERVER["REMOTE_ADDR"]
.
正如在"需要ipv6的inet_aton和inet_ntoa函数 "中所要求的那样,目前没有用于存储IPv6地址的MySQL函数.什么是用于存储/插入的推荐数据类型/功能?(我不打算将它们存储为字符串).我也不想将IPv6地址分成2个INT.
我试图以有效的方式在MySQL 5.0中存储IPv6地址.我已经阅读了与此相关的其他问题,例如本文.该问题的作者最终选择了两个BIGINT字段.我的搜索也发现了另一种常用机制:使用DECIMAL(39,0)存储IPv6地址.我有两个问题.
好的,现在我知道类似的问题可能已被问过一百万次,但我是一个真正的新手,我真的很感谢你的帮助.
基本上,我想将访问者的IP地址存储在MySQL中,以便以后检索和验证.我首先需要知道我需要使用哪种类型的字段来存储IP地址.如果可能的话,我还想让系统与IPv6地址兼容.
提前致谢
我是一名iphone开发者 - 网络开发者的新手,所以请耐心等待!
我目前正在使用MAMP进行本地测试.
我的网站上有一个高度安全的部分.除了需要用户/通行证 - 它还会检查用户的IP.如果以前未使用该IP帐户,则会将该IP以及唯一ID添加到保留表中,并向用户发送电子邮件,要求确认从该位置访问其帐户.
如果用户登录,并且他们的IP与我的"允许"表中与其用户ID关联的任何IP都不匹配,则执行上述任务,他们会收到一封电子邮件.
我用来生成他们点击的链接的URL的代码看起来有点像这样:
if (preg_match('/^127./',$ip)) {
// accessed from this machine
$val_url = "http://localhost:8888/mywebsite/admin/aproove_ip.php?email=$admin_email&val=$hash";
}
else if (preg_match('/^192\.168./',$ip)) {
// accessed form a local networked computer
$val_url = "http://super.local:8888/mywebsite/admin/aproove_ip.php?email=$admin_email&val=$hash";
// note super.local is my machine's address, 8888 is MAMP port
}
else {
// accessed from the WWW
$val_url = "http://www.mywebsite.com/admin/aproove_ip.php?email=$admin_email&val=$hash";
}
Run Code Online (Sandbox Code Playgroud)
现在,这在我的计算机上进行测试时非常有效.
但是,我决定(不要问为什么)从我的iPod Touch和它发送给我的电子邮件(验证IP)进行测试,它给了我完整的在线地址,好像它是从WWW访问的(即两者都没有)对正则表达式的满意度).我查看了包含请求的保留表,并且请求的IP是:fe80::da30:62ff:fe18:6681
.
我猜那是ipv6? - 我需要知道的是以下内容:
我非常感谢任何有关这方面的建议,因为我觉得它真的令人困惑