Предупреждение: деление на ноль

Я использую следующий статический метод для отправки почтовых предупреждений, но он бросает ошибку: warning:division by zero...

Postman::MailAlert($_POST['email'],'Hello '.$_POST['name'].', Thanks for signing up.Your customer id is '.$_POST['city']/'/'.$product_id.'.');

Я решил эту проблему, поставив @, но почему возникает эта проблема, и что я делаю неправильно?

Ответ 1

Просто проблема:

$_POST['city']/'/'.$product_id.'.');

Нужно изменить, как это.

$_POST['city'] . '/'.$product_id.'.');

Ответ 2

В конце этой строки кода:

[...]$_POST['city']/'/'[...]

Добавьте несколько пробелов, чтобы было ясно:

[...] $_POST['city'] / '/' [...]

Вы пытаетесь разделить $_POST['city'] на '/'. Если нечисловые строки ('/') интерпретируются PHP как имеющие числовое значение 0, то вы делите на 0.

Возможно, вы хотели объединиться, а не делиться?

Ответ 3

вы должны использовать

Postman::MailAlert($_POST['email'],'Hello '.$_POST['name'].', Thanks for signing up.Your customer id is '.$_POST['city'].'/'.$product_id);

Ответ 4

$_POST['city']/'/' должен стать $_POST['city'].'/', распространенной ошибкой при быстром вводе

Ответ 5

$_ POST ['city']/< --- что это за косая черта здесь? Я считаю это излишним.;)

И просто примечание - вы санируете вход пользователя? Я вижу, что вы напрямую используете переменные массива $_POST - не делайте этого. Пользователи могут представить что угодно, даже некоторые неприятные строки, и это ваша ответственность, чтобы убедиться, что они не будут компрометировать ваше приложение.

P.S.: Добавление @является плохой практикой, поскольку оно только подавляет сообщения об ошибках (удаление симптомов), не исправляя причину. http://php.net/manual/en/language.operators.errorcontrol.php