php - 存储获取和存储IP地址

标签 php mysql ip

我目前有一个函数可以存储已输入表单的查询。我正在尝试保存提交表单的用户的 IP 地址以及输入内容。

目前的功能是:

 function userIP(){
    $ip = $_SERVER['REMOTE_ADDR'];     
    if($ip){
        if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
            $ip = $_SERVER['HTTP_CLIENT_IP'];
        } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

        $ipis = ip2long($ip);
        }
        return $ip;
    }
    return false;
}

 public function __construct( $data = array() ) {
     if( isset( $data['text'] ) ) $this->text = stripslashes( strip_tags( $data['text'] ) );
     if( isset( $data['ipis'] ) ) $this->ipis = stripslashes( strip_tags( $data['ipis'] ) );
 }

 public function storeFormValues( $params ) {
    $this->__construct( $params ); 
 }


     public function store() {
    $correct = false;
        try {
            $con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
            $con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
            $sql = "INSERT INTO tbl(content, ip) VALUES(:text, :ipis)";

            $stmt = $con->prepare( $sql );
            $stmt->bindValue( "text", $this->text, PDO::PARAM_STR );
            $stmt->bindValue( "ipis", $this->ipis, PDO::PARAM_STR );
            $stmt->execute();
            return "Added";
        }catch( PDOException $e ) {
            return $e->getMessage();
        }
 }

}

然而,它目前仅存储输入的“文本”,并且仅将 NULL 添加到 IP 数据库中。 IP 行的 MYSQL 设置为无符号 INT 11。 关于解决这个问题有什么想法吗?

最佳答案

您的函数返回长整型值时出错。您已将 return 语句置于 elseif 条件中。此外,您将按原样返回实际的 $ip 值。

function userIP(){
$ip = $_SERVER['REMOTE_ADDR'];   
if($ip){
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    $ipis = ip2long($ip);
    return $ipis;
}
return false;
}

关于php - 存储获取和存储IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13696628/

相关文章:

java - 如何在Java中标准化IPv6地址?

php - 在 for 循环中执行多个 PHP MySQL 查询是否有任何缺点

php - 使用多行字符串的正则表达式修剪行并缩小空格

php - 三个 SELECT 和两个 json

mysql - 这个查询可能吗?

mysql - SQL 不同的多个查询合并

javascript - 如何验证IP地址是否正确?

用于输入时间的 Javascript 代码

c# - 这是以编程方式在 2 个数据库之间同步数据的唯一且好的方法吗

转换数据包以获取 IP header