Как предотвратить уведомления PHP с определенной переменной?

StackOverflow https://stackoverflow.com/questions/1959426

  •  21-09-2019
  •  | 
  •  

Вопрос

По сути, у меня на странице куча ссылок, и я буду использовать что-то вроде этого

<?PHP echo $SITE_PATH ?>

Много-много раз на одной и той же странице, но для этого будет отображаться уведомление в PHP.

Я знаю, что вы должны использовать такие вещи, как иссет() но действительно ли мне нужно будет использовать его каждый раз, когда я звоню?

<?PHP echo $SITE_PATH ?>

--- РЕДАКТИРОВАТЬ :
Если я переключусь на использование определенной переменной, уведомления исчезнут.

Это было полезно?

Решение

Два решения здесь:

  • используйте только существующие переменные - что вам, вероятно, и следует сделать.
  • или проверить, существуют ли они isset) прежде чем пытаться их использовать.

Никакого волшебства ^^

Если ваше приложение использует много неустановленных переменных, возможно, у вас есть проблемы в вашем проекте.


В случае, подобном тому, который вы представили, для переменной, которая использовалась много раз, я бы убедился, что она существует, а если нет, установил бы ее в '', например, в начале моего скрипта.

Выглядит это не очень хорошо, но будет работать — и таким образом вам не придется просматривать все приложение, исправляя все.

(Или я мог бы также отключить E_NOTICE error_reporting уровень - мне не нравится эта идея, но иногда это единственный способ справиться с некоторой базой кода)

Другие советы

Вы можете скрыть сообщения, используя @:

print @$site_path;

Или вы можете использовать тернарную операцию, чтобы получить значение по умолчанию:

print (isset($site_path)) ? $site_path : "default_path" ;

В конце концов, вам не следует использовать переменные, которые не установлены.Если да, то вам нужно переосмыслить свой подход.Обработайте эту информацию заранее, чтобы остальные ваши сценарии могли работать без проблем.

Вам действительно следует убедиться, что переменная установлена, прежде чем использовать ее (особенно отображать ее на странице).Если переменная поступает из небезопасного источника ($_GET, $_POST, база данных), вам следует выполнить определенный тип фильтрации, чтобы предотвратить нарушение безопасности (межсайтовый скриптинг (XSS), подделка межсайтовых запросов (CSRF) и т. д.). .), но если вы чувствуете, что все в порядке и вы просто не хотите показывать ошибки (например.в производстве) установите для отчета об ошибках значение 0.

Например. error_reporting(0);

Вы можете сделать это на уровне php.ini или на странице (установите error_reporting(0); в верхней части страницы).

Кстати, во время производства вы никогда не захотите отображать ошибки.Вместо этого зарегистрируйте их.В процессе разработки вы хотите видеть все свои ошибки (E_STRICT).

Вы можете создать функцию, чтобы проверить, установлена ​​ли переменная, и вернуть ее:

function EchoVar() {
    global $SITE_PATH;
    return isset($SITE_PATH) ? $SITE_PATH : '';
}

// calling it
echo EchoVar();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top