这是我的代码,它在用户登录时插入一个 IP 地址值。 如果用户尝试从不同的 IP 登录,则用户将收到一封确认电子邮件。用户单击电子邮件中发送的链接后,IP 地址会更新。我不想更新 IP 地址,而是想在用户确认其身份时存储所有 IP,以便用户能够登录我们存储在数组中的相同 IP。
基本上我想将 IP 地址存储为一个数组。
<?php
include 'header.php';
include('config.php');
$eemail=$_GET['email'];
if(isset($_POST['scode']))
{
$unncode=$_POST['uncode'];
$sql1="SELECT * FROM nennetwork WHERE code ='$unncode'";
$res=mysql_query($sql1);
$rows = mysql_fetch_array($res);
$ccode = $rows['code'] ;
if($unncode==$ccode)
$eemail=$_GET['email'];
$ips = $_SERVER['REMOTE_ADDR'];
if(mysql_query("update nennetwork set useripp= '".$ips ."' WHERE email ='$eemail'"))
{
$mmmsg= "You can <a href='".'index.php'."' class='ac'>Login</a> if the code matches the code that we have sent you.";
}
else{
$mmmsg="Please submit the numeric code that we sent to your email.";
}}
?>
最佳答案
好的,除了大量的 SQL 注入(inject)案例(阅读 php.net 上的 php-pdo,非常简单易用的示例)。
不插入的麻烦查询:
if(mysql_query("update nennetwork set useripp= '".$ips ."' WHERE email ='$eemail'"))
可以替换为:
INSERT INTO nennetwork (useripp, email) VALUES (?,?)
ON DUPLICATE KEY UPDATE useripp=?;
为此,您需要 1 个索引:
CREATE UNIQUE INDEX idx_nennetwork_nn_1 ON nennetwork(email);
这将导致重复键根据涉及的数据触发更新或插入。
(阅读 php-pdo,了解如何让 ?、? 和 ? 被绑定(bind)变量和一些更安全的代码替换)。
关于php - 在单列中存储 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32643943/