从 html 页面在数据库中插入统计信息


Insert stats in database from html page

我做了一些统计数据,我想将其插入数据库以查看流量统计信息。我主要有 HTML 页面,所以我使用 POST 方法来获取 PHP 文件发布的统计信息,但它不起作用,没有将统计信息插入数据库表中。

网页代码

    <form action="_global/stats/stats.php" method="post">
    <input type="hidden" name="stats" value="true" />
    </form>

PHP代码

        if (isset($_POST['stats']))
    {
    $stats = $_POST['stats'];
    }
    else
    {$stats="false";}
    if ($stats == "true"){ 
        if(!empty($_SERVER['REQUEST_URI'])){
        $url = $_SERVER['REQUEST_URI'];
        }else{$url = "";}
        if(!empty($_SERVER['REMOTE_ADDR'])){
        $user_ip = $_SERVER['REMOTE_ADDR'];
        }else{$user_ip = "";}
        if(!empty($_SERVER['REMOTE_PORT'])){
        $user_port = $_SERVER['REMOTE_PORT'];
        }else{$user_port = "";}
        if(!empty($_SERVER['SERVER_ADDR'])){
        $server_ip = $_SERVER['SERVER_ADDR'];
        }else{$server_ip = "";}
        if(!empty($_SERVER['SERVER_PORT'])){
        $server_port = $_SERVER['SERVER_PORT'];
        }else{$server_port = "";}
        if(!empty($_SERVER['REQUEST_METHOD'])){
        $request_type = mysql_real_escape_string ($_SERVER['REQUEST_METHOD']);
        }else{$request_type = "";}
        if(!empty($_SERVER['HTTP_USER_AGENT'])){
        $browser_type =  mysql_real_escape_string ($_SERVER['HTTP_USER_AGENT']);
        }else{$browser_type = "";} 
    mysql_query("INSERT INTO jinendra_statistics.statistics SET url='$url', user_ip='$user_ip', user_port='$user_port', server_ip='$server_ip', server_port='$server_port', request_type='$request_type', browser_type='$browser_type' ");
    }

请看看这里出了什么问题,并提出任何可能的方法。

更新

带有这些代码的 PHP 文件正在工作,我在数据库中获取值。 但是将其与 HTML 一起使用不会在数据库中插入值。

        if(!empty($_SERVER['REQUEST_URI'])){
    $url = $_SERVER['REQUEST_URI'];
    }else{$url = "";}
    if(!empty($_SERVER['REMOTE_ADDR'])){
    $user_ip = $_SERVER['REMOTE_ADDR'];
    }else{$user_ip = "";}
    if(!empty($_SERVER['REMOTE_PORT'])){
    $user_port = $_SERVER['REMOTE_PORT'];
    }else{$user_port = "";}
    if(!empty($_SERVER['SERVER_ADDR'])){
    $server_ip = $_SERVER['SERVER_ADDR'];
    }else{$server_ip = "";}
    if(!empty($_SERVER['SERVER_PORT'])){
    $server_port = $_SERVER['SERVER_PORT'];
    }else{$server_port = "";}
    if(!empty($_SERVER['REQUEST_METHOD'])){
    $request_type = mysql_real_escape_string ($_SERVER['REQUEST_METHOD']);
    }else{$request_type = "";}
    if(!empty($_SERVER['HTTP_USER_AGENT'])){
    $browser_type =  mysql_real_escape_string ($_SERVER['HTTP_USER_AGENT']);
    }else{$browser_type = "";} 
    mysql_query("INSERT INTO jinendra_statistics.statistics SET url='$url', user_ip='$user_ip', user_port='$user_port', server_ip='$server_ip', server_port='$server_port', request_type='$request_type', browser_type='$browser_type' ");

您正在使用一半INSERT一半UPDATE查询。您的查询应该是

mysql_query("INSERT INTO jinendra_statistics.statistics (url, user_ip, user_port, server_ip, server_port, request_type, browser_type) VALUES ('$url', '$user_ip', '$user_port', '$server_ip', '$server_port', '$request_type', '$browser_type')";

检查语法

  • MYSQL 插入语法
  • MYSQL 更新语法

致任何阅读本文的人:有两个问题已修复。

1) 查询的语法不正确,并且

2)提交表格的过程也不正确。


mysql_query("INSERT INTO jinendra_statistics.statistics (url, user_ip, user_port, server_ip, server_port, request_type, browser_type) VALUES ('$url', '$user_ip', '$user_port', '$server_ip', '$server_port', '$request_type', '$browser_type')";

您想将SET用于UPDATE和我为INSERT提供的语法。


此/页.php

<?php
if(isset($_POST['stats'])){
 if(!empty($_SERVER['REQUEST_URI'])){
$url = $_SERVER['REQUEST_URI'];
}else{$url = "";}
if(!empty($_SERVER['REMOTE_ADDR'])){
$user_ip = $_SERVER['REMOTE_ADDR'];
}else{$user_ip = "";}
if(!empty($_SERVER['REMOTE_PORT'])){
$user_port = $_SERVER['REMOTE_PORT'];
}else{$user_port = "";}
if(!empty($_SERVER['SERVER_ADDR'])){
$server_ip = $_SERVER['SERVER_ADDR'];
}else{$server_ip = "";}
if(!empty($_SERVER['SERVER_PORT'])){
$server_port = $_SERVER['SERVER_PORT'];
}else{$server_port = "";}
if(!empty($_SERVER['REQUEST_METHOD'])){
$request_type = mysql_real_escape_string ($_SERVER['REQUEST_METHOD']);
}else{$request_type = "";}
if(!empty($_SERVER['HTTP_USER_AGENT'])){
$browser_type =  mysql_real_escape_string ($_SERVER['HTTP_USER_AGENT']);
}else{$browser_type = "";} 
mysql_query("INSERT INTO jinendra_statistics.statistics SET url='$url', user_ip='$user_ip', user_port='$user_port', server_ip='$server_ip', server_port='$server_port', request_type='$request_type', browser_type='$browser_type' ");
if(mysql_affected_rows()){
    // it worked, redirect, confirm, etc
}
else{
    // it failed
}
}
?>

<form action="this/page.php" method="post">
<input type="hidden" name="stats" value="true" />
<input type="submit" value="Submit Stats" />
</form>

试试这个。输入在操作中保存此文件的名称。

您的查询容易出现 SQL 注入。你可以尝试使用PHP PDO吗?

<?php
$stmt = $dbh->prepare("INSERT INTO jinendra_statistics.statistics (url, user_ip, 
                                   user_port, server_ip, server_port, 
                                   request_type, browser_type) 
                       VALUES (?,?,?,?,?,?,?)");
$stmt->bindParam(1, $url);
$stmt->bindParam(2, $user_ip);
$stmt->bindParam(3, $user_port);
$stmt->bindParam(4, $server_ip);
$stmt->bindParam(5, $server_port);
$stmt->bindParam(6, $request_type);
$stmt->bindParam(7, $browser_type);
$stmt->execute();
?>