gpt4 book ai didi

php - 使用 PHP 有条件地在 header 中记录值

转载 作者:行者123 更新时间:2023-12-02 07:46:00 25 4
gpt4 key购买 nike

我是 PHP 的新手,所以请多多包涵。

我正在尝试记录手机访问我网站的用户代理。我通过检查 $_SERVER['HTTP_USER_AGENT'] 值来执行此操作。

遇到一个小问题,我注意到如果有人通过 opera mini 访问我的网站,然后 opera mini 将实际的用户代理移动到标识为 X-OperaMini-Phone-UA 的 header 值中:

所以我正在寻找将从 header (如果存在)中提取它的 PHP 代码,如果不存在,则将其标识为 NA 以用于数据库日志记录。

这是我目前用于日志记录的代码,由其他人编写

<?php
mysql_connect('server.com', 'dbuser', 'dbpass');
$url = mysql_real_escape_string("http://$_SERVER[SERVER_NAME]$_SERVER[REQUEST_URI]");
$fn = mysql_real_escape_string($_SERVER['SCRIPT_NAME']);
$ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);
$ref = mysql_real_escape_string($_SERVER['HTTP_REFERER']);
$ua = mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']);
mysql_select_db('db');
mysql_query("INSERT INTO `record` VALUES ('$url', '$fn', NOW(),'$ip', '$ref','$ua')");
?>

所以,现在我添加了一些名为 opera_user_agent 的字段,如果有 Opera 用户代理,我想记录下来,如果没有,则使用“NA”。

最佳答案

您可以使用 getallheaders 获取值:

$headers = getallheaders();

if (array_key_exists("X-OperaMini-Phone-UA", $headers))
{
$ua = mysql_real_escape_string($headers["X-OperaMini-Phone-UA"]);
}
else
{
$ua = mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']);
}

另一种方法是在 .htaccess 中使用重写规则将 header 添加到环境变量,然后像往常一样通过 $_SERVER 获取它:

RewriteRule .* - [E=X-OPERAMINI-PHONE-UA:%{HTTP:X-OperaMini-Phone-UA}]

关于php - 使用 PHP 有条件地在 header 中记录值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7010767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com