Предупреждение: деление на ноль
Я использую следующий статический метод для отправки почтовых оповещений, но выдает ошибку: warning:division by zero
...
Postman::MailAlert($_POST['email'],'Hello '.$_POST['name'].', Thanks for signing up.Your customer id is '.$_POST['city']/'/'.$product_id.'.');
Я решил эту проблему, поставив @, но почему эта проблема возникает, и что я делаю не так?
5 ответов
Просто проблемная часть:
$_POST['city']/'/'.$product_id.'.');
Нужно изменить как это.
$_POST['city'] . '/'.$product_id.'.');
В конце этой строки кода:
[...]$_POST['city']/'/'[...]
Добавьте несколько пробелов, чтобы было понятно:
[...] $_POST['city'] / '/' [...]
Вы пытаетесь разделить $_POST['city']
от '/'
, Если нечисловые строки ('/'
) интерпретируются PHP как имеющие числовое значение 0, тогда вы делитесь на 0.
Может быть, вы хотели объединить вместо разделения?
Ты должен использовать
Postman::MailAlert($_POST['email'],'Hello '.$_POST['name'].', Thanks for signing up.Your customer id is '.$_POST['city'].'/'.$product_id);
$_POST['city']/'/'
должен стать $_POST['city'].'/'
, распространенная ошибка, когда вы печатаете быстро
$_POST['city']/ <--- что здесь делает этот слеш? Я считаю, что это избыточно.;)
И только примечание - вы дезинфицируете ввод пользователя? Я вижу, что вы напрямую используете переменные массива $ _POST - не делайте этого. Пользователи могут представить здесь что угодно, даже несколько неприятных строк, и вы несете ответственность за то, чтобы они не скомпрометировали ваше приложение.
PS: Добавление @ является плохой практикой, поскольку оно подавляет только сообщения об ошибках (устранение симптомов), но не устраняет причину. http://php.net/manual/en/language.operators.errorcontrol.php