Page 1 of 1
สอบถาม Function Mail ในภาษา PHP ครับ
Posted: 18/09/2011 11:41 pm
by NNS
mail($to, $subject, $message, $headers)
และ
@mail($to, $subject, $message, $headers)
แตกต่างกันอย่างไรครับ
ขอบคุณมากครับ
Re: สอบถาม Function Mail ในภาษา PHP ครับ
Posted: 19/09/2011 12:05 am
by mindphp
@ เป็น Operator ตัวหนึ่ง ไว้ จัดการกับ error
ดูต่อที่กระทู้
https://www.mindphp.com/forums/viewtopic.php?t=2964
Re: สอบถาม Function Mail ในภาษา PHP ครับ
Posted: 19/09/2011 9:16 am
by NNS
อย่างนี้นี่เอง
ขอบคุณมากครับ
Re: สอบถาม Function Mail ในภาษา PHP ครับ
Posted: 25/09/2011 1:32 pm
by roteee
Error Control Operators
PHP supports one error control operator: the at sign (@). When prepended to an expression in PHP, any error messages that might be generated by that expression will be ignored.
แปลว่า: PHP มี "@" เป็นตัวควบคุม ข้อความ error ไว้ให้ใช้ ซึ่งถ้าใส่ @ ไว้ในประโยค PHP ข้อความ error (เช่น warning, notice message ไม่รวม parsing error) จะไม่ถูกแสดง เช่น
Code: Select all
$fp = fopen($myFile, 'r');
if (!$fp) {
echo 'ขออภัยค่ะ เปิดไฟล์ไม่ได้ เป็นอะไรก็ไม่รู้ :P';
} else {
// do your job here ...
}
ถ้า $myFile ไม่มีอยู่จริง หรือ ไม่ได้รับอนุญาตให้เปิดเพื่ออ่าน PHP ก็จะแสดง warning message พร้อมกับข้อความ "ขออภัยค่ะ เปิดไฟล์ไม่ได้ เป็นอะไรก็ไม่รู้

" เช่น
Code: Select all
Warning: fopen(yout-file.txt) [function.fopen]: failed to open stream: Permission denied in D:\home\server_name\your-program.php on line xx ขออภัยค่ะ เปิดไฟล์ไม่ได้ เป็นอะไรก็ไม่รู้ :P
แต่ถ้าใส่ "@" หน้า fopen() ก็จะไม่มีข้อความ warning เช่น
Code: Select all
$fp = @fopen($myFile, 'r');
if (!$fp) {
echo 'ขออภัยค่ะ เปิดไฟล์ไม่ได้ เป็นอะไรก็ไม่รู้ :P';
} else {
// do your job here ...
}
เมื่อรันโปรแกรม และไฟล์เปิดไม่ได้ เราก็จะเห็นเฉพาะ error message ที่เราออกแบบไว้ เช่น
Code: Select all
ขออภัยค่ะ เปิดไฟล์ไม่ได้ เป็นอะไรก็ไม่รู้ :P
จากคำถามของ จขกท.
แล้ว mail($to, $subject, $message, $headers) และ @mail($to, $subject, $message, $headers) แตกต่างกันอย่างไร
ต่างกันตรงที่:
- mail() หากส่งเมล์ไม่สำเร็จ และ PHP มี error message อะไรก็จะแสดงออกมาตามนั้น ซึ่งแน่นอนว่าเป็นข้อความภาษาอังกฤษแน่ๆ และอาจจะไม่งามนัก หากมี error message นี้แสดงออกไปใน production system
- @mail() หากส่งเมล์ไม่สำเร็จ จะไม่มี error message อะไรแสดงออกมาจาก PHP และเข้าใจว่าคนเขียนโปรแกรมเขาอยากจะออกแบบ error message เอง เพื่อให้อ่านเข้าใจง่าย และ
- หากการส่งเมล์สำเร็จดี mail() และ @mail() ก็จะทำงานเหมือนกัน ไม่มีอะไรต่าง