สอบถาม Function Mail ในภาษา PHP ครับ

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderator: mindphp, ผู้ดูแลกระดาน

NNS

สอบถาม Function Mail ในภาษา PHP ครับ

โพสต์ที่ยังไม่ได้อ่าน โดย NNS »

mail($to, $subject, $message, $headers)
และ
@mail($to, $subject, $message, $headers)

แตกต่างกันอย่างไรครับ
ขอบคุณมากครับ
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41232
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: สอบถาม Function Mail ในภาษา PHP ครับ

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

@ เป็น Operator ตัวหนึ่ง ไว้ จัดการกับ error
ดูต่อที่กระทู้
https://www.mindphp.com/forums/viewtopic.php?t=2964
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
NNS

Re: สอบถาม Function Mail ในภาษา PHP ครับ

โพสต์ที่ยังไม่ได้อ่าน โดย NNS »

อย่างนี้นี่เอง
ขอบคุณมากครับ
roteee
PHP Jr. Member
PHP Jr. Member
โพสต์: 11
ลงทะเบียนเมื่อ: 25/09/2011 12:19 pm

Re: สอบถาม Function Mail ในภาษา PHP ครับ

โพสต์ที่ยังไม่ได้อ่าน โดย 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) จะไม่ถูกแสดง เช่น

โค้ด: เลือกทั้งหมด

    $fp = fopen($myFile, 'r');
    if (!$fp) {
        echo 'ขออภัยค่ะ เปิดไฟล์ไม่ได้ เป็นอะไรก็ไม่รู้ :P';
    } else {
        // do your job here ... 
    }
ถ้า $myFile ไม่มีอยู่จริง หรือ ไม่ได้รับอนุญาตให้เปิดเพื่ออ่าน PHP ก็จะแสดง warning message พร้อมกับข้อความ "ขออภัยค่ะ เปิดไฟล์ไม่ได้ เป็นอะไรก็ไม่รู้ :P" เช่น

โค้ด: เลือกทั้งหมด

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 เช่น

โค้ด: เลือกทั้งหมด

    $fp = @fopen($myFile, 'r');
    if (!$fp) {
        echo 'ขออภัยค่ะ เปิดไฟล์ไม่ได้ เป็นอะไรก็ไม่รู้ :P';
    } else {
        // do your job here ... 
    }
เมื่อรันโปรแกรม และไฟล์เปิดไม่ได้ เราก็จะเห็นเฉพาะ error message ที่เราออกแบบไว้ เช่น

โค้ด: เลือกทั้งหมด

ขออภัยค่ะ เปิดไฟล์ไม่ได้ เป็นอะไรก็ไม่รู้ :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() ก็จะทำงานเหมือนกัน ไม่มีอะไรต่าง
<?php ?> เสมอ แบบนี้ <? ?> มันเอาท์แล้ว
เขียน code ให้อ่านง่ายๆ มีชัยไปกว่าครึ่ง
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: Bing [Bot] และบุคลทั่วไป 106