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


Retrieving a visitor's browser/version and storing it in the database

我已经设置了一个mysql,它已经完全可以工作了,但还有一件事我想做。有没有一种方法可以让用户输入用户名和密码并点击登录时,将他们的浏览器和浏览器版本存储在mysql的一个新列中?

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

<?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());

这应该就是它的全部。