php - 我有一个较小的项目,但出现了问题
问题描述
[11-Jul-2020 16:30:39 America/New_York] PHP 通知:未定义索引:/home/lunagzdp/s1.lunar.run/req.php 中的 HTTP_ACCEPT_LANGUAGE 第 36 行:error_log
不知道怎么解决
<?php
ini_set('default_charset', 'UTF-8');
ini_set('display_errors', true);
ini_set('error_reporting', 'E_ALL');
error_reporting(E_ALL);
session_start();
function get_client_ip(){
$ipaddress = '';
if (isset($_SERVER['HTTP_CLIENT_IP']))
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) //VestaCP na CF wypluwa [ip, ip]
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']))
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else if(isset($_SERVER['REMOTE_ADDR']))
$ipaddress = $_SERVER['REMOTE_ADDR'];
else if(isset($_SERVER['HTTP_CF_CONNECTING_IP']))
$ipaddress = $_SERVER['HTTP_CF_CONNECTING_IP'];
else
$ipaddress = 's1.lunar.run';
return $ipaddress;
}
$ip = get_client_ip();
include('settings.php');
const main_table = 'players';
36 line -> $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); <-
function isMobile() {
return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);
}
谢谢你的帮助!
解决方案
就像@Ramiz Kongulov 所说,不同的浏览器以不同的方式发送标头信息。我还要补充一点,在访问数组中的元素时应该小心,因为
Undefined Index
如果它们不可用,PHP 会抛出错误。使用空合并运算符 (??)和三元运算符 (?:)来避免应用程序中的此类错误。
在你的情况下,在第 36 行,你可以做这样的事情
$lang = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) : 'en';
您也可能会在第 38 行收到错误消息。
推荐阅读
- node.js - 如何使我的代码生成令牌并将其返回以对用户进行身份验证?
- javascript - 如何在 ul > li 中查找所有类名
- maven - dspace 的 maven 包问题
- c - Understanding promotions (type conversions)
- android - 如何解决空引用错误?我是新手
- asp.net-core - 使用 ILoggerProvider 基于 .NetCore 2.2 中的环境进行日志记录
- windows - 无法在本地机器上启动 kafka
- android - 应用 span 数次
- python - TypeError:convertDocument() 接受 1 个位置参数,但给出了 2 个
- c - 如何使用 GDAL 对带有 C/C++ 的 shapefile 进行光栅化?