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

标签 php mysql user-agent

我设置了一个 mysql,它可以正常工作,但是我还想做一件事。有没有一种方法可以在用户输入用户名和密码并单击登录时将其浏览器和浏览器版本存储在 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 调用以还包含用户代理:

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

这应该就是全部了。

关于php - 检索访问者的浏览器/版本并将其存储在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9620352/

相关文章:

php - 调整 PHP 5.3 的代码以适应 PHP 5.2.17

php - 我可以在 laravel 查询生成器中同时使用 `join` 和 `with` 吗?

mysql - 将用户余额与其交易总和进行比较

javascript - 在 JavaScript 中检测 IE 版本(v9 之前)

php - gammu发送短信返回错误29

php - 如何在 Nginx 的重写规则中包含所有的 php 文件?

mysql - 存储 01 和 10 的 SQL 数据类型

mysql使用外键显示来自两个表的数据

parsing - 使用 Hadoop 解析用户代理

php - 在 PHP 中为 iPad 用户代理加载 css