2011-04-04 110 views
0

我使用下面的靜態方法用於發送郵件提醒,但它拋出一個錯誤:warning:division by zero ...警告:除零

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

我已經把@解決了這個問題,但是這是爲什麼問題提出了,我做錯了什麼?

+0

PHP.net:'目前,「@」錯誤控制運算符前綴將甚至禁用關鍵錯誤的錯誤報告,以終止腳本執行。除此之外,這意味着如果您使用「@」來抑制某個函數的錯誤,並且它不可用或錯誤輸入,那麼腳本就會在那裏死掉,而不會顯示爲什麼。「因此,解決問題,它使這個問題被忽略。 – Wh1T3h4Ck5 2011-04-04 13:22:26

+0

@ Wh1T3h4Ck5感謝您的建議。 – seoppc 2011-04-04 13:37:13

回答

3

只是問題的一部分:

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

需要改變這樣的。

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

如果它解決了您的問題,請勾選我的回答正確,謝謝。 :) – fabrik 2011-04-04 13:19:00

+0

哦,這是我的錯誤,我認爲現在會修復,謝謝。 – seoppc 2011-04-04 13:20:33

+0

@seoppc您能否將我的答案標記爲正確? – fabrik 2011-04-04 13:22:00

1

你應該使用

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

$_POST['city']/'/'應該成爲$_POST['city'].'/',當你鍵入快速

+0

感謝您的回答 – seoppc 2011-04-04 13:35:33

+0

歡迎您 – 2011-04-04 13:40:04

2

接近該行代碼的結尾常見的錯誤:

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

添加一些空間,以明確:

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

您正在嘗試劃分$_POST['city']通過'/'。如果非數字字符串('/')被PHP解釋爲數值爲0,那麼您除以0.

也許你打算連接而不是分裂?

+0

我想這只是一個錯字 – pt2ph8 2011-04-04 13:20:08

1

$ _POST ['city']/< ---此斜線在這裏做什麼?我相信這是多餘的。 ;)

而只是一個側面說明 - 你消毒用戶輸入?我看到你直接使用$ _POST數組變量 - 不這樣做。用戶可能會在這裏提交任何東西,甚至是一些討厭的字符串,這是你的責任,以確保這些不會危害你的應用程序。

P.S .:添加@是一種不好的做法,因爲它只會抑制錯誤消息(消除症狀),而不能解決原因。 http://php.net/manual/en/language.operators.errorcontrol.php