要求された Web サイトの URL をデータベースのテーブルに保存したいと考えていました。
たとえば、user1 が url を要求した場合myserver.com/images/header.png
、以下のレコードをデータベースに保存する必要があります。
id user requested_url
1 user1 /images/header.png
編集:私の主な問題は、要求された URL を知り、それらを php ファイルに渡す方法です!
Apaches'mod_log_mysql
またはをご覧くださいmod_log_sql
。これにより、Apache ログを SQL サーバーに転送できます。
読み上げ:
http://onlamp.com/pub/a/apache/2005/02/10/database_logs.html?page=2
ユーザー セッションにアクセスできる PHP ファイルを介してすべてを渡す必要があります。
最初に行う必要があるのは、.htaccess ファイルをセットアップして、すべてを特定の PHP ファイルにリダイレクトすることです。
次に、要求されたファイルをユーザーに渡し、要求をログに記録するようにプログラムします。
これを行うときは、通常のサイト ページによってアクセスされるファイルを除外して、画像 css js などの非ページ要素だけがこのファイルを通過するだけで、スクリプトが通常どおりに機能することを確認してください。
メイン スクリプト ファイルの 1 つに、リクエストをページに記録する同じコードを追加します。
目的のテーブルにデータを保存するには、DBMS とクエリを使用する必要があります。MySQL では次のようになります。
INSERT INTO tablename VALUES ( NULL , 'user1', '/images/header.png');
誰かが私に-1をくれたので、編集してください。このクエリ呼び出しを index.php またはすべてのページを処理するために使用している FrontPage コントローラー ページに追加する必要があります。htaccess を使用すると、「ホットリンク」ファイルをログに記録することもできます。
最初にデータベースに接続してから挿入する必要があります。これは PDO を使用した例です。
$dsn = 'mysql:host=localhost;dbname=testdb'; // mysql
//$dsn = 'mssql:host=localhost;dbname=testdb'; // mssql
$db = new PDO($dsn, 'username', 'password', array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$stmt = $db->prepare("INSERT INTO `table` VALUES ( 0 , :user, :page)");
$stmt->execute(array(':user' => $username, ':page' => $_SERVER['REQUEST_URI']));
最初のフィールドはIDと自動インクリメントでなければならないと思います。
接続と挿入はすべてのページ、おそらくグローバル ファイルにある必要があります。