-1

トラフィック統計を表示するためにデータベースに挿入したいいくつかの統計を作成しました。私は主にHTMLページを持っているので、POSTメソッドを使用してPHPファイルによって投稿された統計を取得しましたが、統計がデータベーステーブルに挿入されていません。

HTML コード

    <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' ");
4

3 に答える 3

2

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')";

構文を確認してください

于 2012-08-13T06:04:35.237 に答える
0

これを読んでいる人へ: 2 つの問題が修正されました。

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')";

SETforUPDATEと私が提供した構文を使用したいと考えていますINSERT


this/page.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>

これを試してみてください。これを保存するファイルの名前をアクションに入力します。

于 2012-08-13T06:03:51.437 に答える
0

あなたのクエリは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();

?>
于 2012-08-13T06:12:15.003 に答える