0

我想将我网站的请求网址保存到数据库中的一个表中。

例如,如果 user1 请求 url myserver.com/images/header.png,则应将以下记录保存到数据库中。

id    user    requested_url
1     user1   /images/header.png

编辑:我的主要问题是如何知道请求的 URL 并将它们传递给 php 文件!

4

4 回答 4

4

看看 Apachesmod_log_mysqlmod_log_sql. 它们将允许您将 apache 日志转发到 SQL 服务器。

阅读:

http://onlamp.com/pub/a/apache/2005/02/10/database_logs.html?page=2

于 2012-10-09T11:30:00.493 回答
1

您必须通过有权访问您的用户会话的 PHP 文件传递​​所有内容。

您需要做的第一件事是设置一个 .htaccess 文件以将所有内容重定向到特定的 PHP 文件。

然后程序将请求的文件传递给用户并记录请求。

确保在执行此操作时排除常规站点页面访问的文件,以便脚本仍然照常工作,只是图像 css js 等非页面元素通过此文件。

将记录请求到页面的相同代码添加到您的主脚本文件之一。

于 2012-10-09T11:32:02.683 回答
0

您应该使用 DBMS 并对其进行查询,以便将数据保存在所需的表中。在 MySQL 中,它将是:

INSERT INTO tablename VALUES ( NULL , 'user1', '/images/header.png');

编辑,因为有人给了我-1。您应该在 index.php 或您用来处理所有页面的任何 FrontPage 控制器页面中添加此查询调用。使用 htaccess 您还可以记录“热链接”文件。

于 2012-10-09T11:28:49.933 回答
0

您应该先连接到数据库,然后再插入,这是一个使用 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 和自动增量。

连接和插入必须在每个页面中,可能是全局文件。

于 2012-10-09T11:33:53.123 回答