检索访问者的浏览器/版本并将其存储在数据库中

时间:2012-03-08 15:38:46

标签: php mysql user-agent

我已经设置了一个mysql并且它已经完全正常工作但是我还想做更多的事情。有没有办法当用户输入他们的用户名和密码并点击登录时,会将他们的浏览器和浏览器版本存储在mysql的新列中?

1 个答案:

答案 0 :(得分:2)

我假设服务器端技术是,因为你提到了。如果这不正确,请告诉我,我将更正以下内容。

<?php
  $username = $_POST['username'];
  $password = $_POST['password'];
  $agent = $_SERVER['HTTP_USER_AGENT'];

  $db = new PDO(...);
  $query = $db->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
  if (($result = $query->execute(array($username, MD5($password)))) !== false){
    // login user
    $log = $db->prepare("INSERT INTO log (username, agent) VALUES (?, ?)");
    $log->execute(array($username, $agent));
  }

您可以使用$_SERVER['HTTP_USER_AGENT']获取浏览器(并解析值以确定实际代理(例如IE,Firefox,Opera等))然后将该信息保存回数据库。


更新

首先,您需要在user表中添加一个新列以允许其他信息(浏览器):

ALTER TABLE   user
ADD COLUMN    useragent VARCHAR(100);

这需要直接在数据库上执行,所以无论你是否添加了user表,你都需要执行上面的代码(phpMyAdmin我猜?)

接下来,您需要修改UPDATE调用以包含useragent:

$sql = "UPDATE  user
        SET     logindate = NOW(),
                useragent = '" . mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']) . "'
        WHERE   username = '" . $input_username . "'";
mysql_query($sql) or die('Error in SQL: ' . mysql_error());

这应该是它的全部内容。