php - 在单列中存储 IP 地址

标签 php mysql

这是我的代码,它在用户登录时插入一个 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/

相关文章:

php - 在 php for 循环中只显示来自 mysql 数据库的一行?

php - 如何删除wordpress静态主页中的页面名称?

php - 通过 AJAX 传递信用卡信息

PHP RegEx 错误未知修饰符 '('

php - 在 php 类文件中嵌入 html

mysql - dbi 将 undef 视为空,但查询在 mysql 中产生结果

php - PDO 与 MSSQL 驱动程序如何获取输出参数?

php - 从数据库中选择具有相同 ID 的最小数量

mysql - Plesk 12 MYSQL 数据库 1,8GB 备份需要

php - 在php上重新排序一个sql矩阵