แนะนำ PHP Library สำหรับเขียนเชื่อมต่อกับเครื่องพิมพ์ใบเสร็จ

“ESC/POS Print Driver for PHP” เป็น Library ที่เราสามารถเขียน PHP ติดต่อกับเครื่องพิมพ์ใบเสร็จได้ครับ แน่นอนเราสามารถนำไปเชื่อมกับระบบ POS (point-of-sale)ได้เลย

Library ตัวนี้รองรับ printers ได้หลายยี่ห้อครับ สามารถสั่งพิมพ์รูปภาพ บาร์โค้ด คิวอาร์โค้ด และยังสามารถสั่งตัดกระดาษได้อีกด้วย

 

สำหรับคนที่สนใจ หรือกำลังอยากพัฒนาระบบ POS อยู่ก็ลองดูได้นะครับ

รายละเอียด: http://bit.ly/2NbZ1ei

โค้ชเอก

แนะนำระบบ modern eCommerce สำเร็จรูปฟรีครับ

แนะนำระบบ modern eCommerce สำเร็จรูปฟรีครับ เขียนด้วย PHP เท่าที่ลอง DEMO ถือว่าใช้ได้ดีมาก น่าจะประหยัดเวลาได้เยอะอยู่ ใครที่เขียน PHP เป็นอยู่แล้ว ก็สามารถปรับแต่ง และแก้โค้ดได้ไม่ยากครับ ลองดูๆ 🙂

เว็บไซต์หลัก: https://arastta.org/
Demo: https://arastta.org/demo


โค้ชเอก

แนะนำ PHP Library ไว้ทำระบบล็อกอินครับ

แนะนำ PHP Library ไว้ทำระบบล็อกอินครับ จะเอาไว้ใช้กับโปรเจค หรือจะเอาไว้ศึกษาโค้ดที่เค้าเขียนก็ได้ 

หลักๆ ก็สามารถ Login, Logout, Activate account, Reset password, Change password และอื่นๆ

รายละเอียด: https://goo.gl/4klxT2


โค้ชเอก

PHP กับ Google Map API ลองดูตัวนี้ได้

สำหรับคนที่กำลังมองหา Library หรือกำลังศึกษาการเขียน PHP กับ Google Map API ลองดูตัวนี้ได้ ค่อนข้างเขียนง่าย ที่สำคัญเอกสารละเอียดดีมาก 

รายละเอียด: https://goo.gl/hloVd8


โค้ชเอก

สรุป PHP Web Application Security

1. ต้อง Validate input หรือตรวจสอบความถูกต้องของข้อมูลทุกอย่างที่นำเข้ามา เช่น ต้องตรวจสอบว่ามีข้อมูล หรือใช่ข้อมูลที่เราต้องการจริงๆ หรือใหม่

เช่น การใช้ isset(), ?? operator, is_*() อาจเขียนเอง หรือใช้ ctype Extension หรือ ฟังก์ชัน filter_var, filter_input

ส่วนใน PHP 7 ให้ใช้ความสามารถของ Type Declarations โดยต้องประกาศคำสั่ง

declare(strict_types=1);

ไว้บนสุดของไฟล์ เพื่อ strict ชนิดของตัวแปรครับ
2. การป้องกัน Cross-site Scripting (XSS) ต้องมีการกรอง หรือ Filtering Input เสมอ เช่น

– ใช้คำสั่ง strip_tags($s) เพื่อเอาคำสั่ง HTML ออกไป
หรือจะใช้คำสั่ง filter_var($s, FILTER_SANITIZE_STRING) เพื่อเอาคำสั่ง HTML ออกก็ได้เหมือนกัน

– ใช้คำสั่ง preg_replace($, ‘/…/’, ”) เพื่อกรองและป้องกันด้วย regular expressions (เขียนเอง)

2.1 การป้องกัน Cross-site Scripting อีกอย่าง คือ การใช้ฟังก์ชัน htmlspecialchars($s) ยกตัวอย่างที่ควรทำ

เช่น

//ตัวอย่าง string
$s = ‘<p class=”c”>Let\’s go!</p>’;

//วิธีการเขียนที่ดี
echo htmlspecialchars($s);
echo htmlspecialchars($s, ENT_QUOTES);
echo htmlentities($s, ENT_QUOTES);
echo filter_var($s,FILTER_SANITIZE_FULL_SPECIAL_CHARS);

2.2 การป้องกัน Cross-site Scripting ด้วยการส่งไฟล์ชนิด JSON เข้ามา

$data = [
‘term’ => $_GET[‘q’]
];

header(‘Content-type: application/json’);

echo json_encode(
$data,
JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT |
JSON_HEX_AMP);
3. การป้องกัน SQL Injection

3.1 อย่างแรกให้ escape string ที่เข้ามา ยกตัวอย่าง เช่น

//สำหรับ MySQL/MariaDB
mysqli_real_escape_string($db, $value);
หรือ $db->real_escape_string($value);

//สำหรับ PostgreSQL
pg_escape_string($db, $value);

//สำหรับ SQLite
SQLITE3::escapeString($value);

3.2 ใช้ Prepared Statements ของ PDO (PHP Data Objects) ตัวอย่าง เช่น

$db = new PDO(…);
$sql = ‘INSERT INTO searches (term) VALUES (:term)’;
$cmd = $db->prepare($sql);
$cmd->bindParam(‘:term’, $term);
$cmd->execute();

3.3 ใช้ Prepared Statements ของ MySQLi

$db = new MySQLi(…); //mysqli_connect()
$sql = ‘INSERT INTO searches (term) VALUES (?)’;
$cmd = $db->prepare($sql); //mysqli_prepare()
$cmd->bind_param(‘s’, $term); //mysqli_stmt_bind_param()
$cmd->execute(); //mysqli_stmt_execute()

ป.ล. สำหรับคนที่ไม่ได้เขียนในแนว OOP ลองค้นเพิ่มได้ครับ วิธีการคำสั่งคล้ายกัน
4. เพิ่มความปลอดภัยให้กับ Cookies แนะนำให้ใช้ HTTPS และใช้ฟังก์ชัน setcookie ให้ถูกต้อง ด้วยการ set ค่าพารามิเตอร์ secure ให้เป็น true (กรณีใช้ https) และค่า httponly ให้เป็น true
ดูฟังก์ชัน setcokkieได้ที่นี่ http://goo.gl/4QulZg

ตัวอย่างการเขียน
//ปลอดภัย
setcookie(‘Cookie1’, rand(100, 999), 0, ‘/’, ”, true, true);

//ไม่ปลอดภัย
setcookie(‘Cookie2’, rand(100, 999), 0, ‘/’, ”, false, false);
5. การป้องกัน Cross-site Request Forgery (CSRF)

5.1 สร้างและเก็บค่า token โดยการสุ่มขึ้นมา
$name = ‘token-‘ . mt_rand();
$token = random_bytes(32);

$_SESSION[$name] = $token;

5.2 นำค่าตัวแปร token ไปใส่ไว้ในทุกๆฟอร์ม เช่น

<input type=”hidden” name=”_csrfname” value=”token-123456″>
<input type=”hidden” name=”_csrfvalue” name=”a1b2c3d4e5f6″>

5.3 จากฟอร์มข้อ 5.2 เมื่อผู้ใช้คลิก Submit ฟอร์มแล้วก็อย่าลืม isset เช็คตัวแปร และค่าด้วยนะครับว่าตรงกันกับที่ส่งมามั้ย

ป.ล. จากข้อ 5.2 นี้ถ้าใครเคยเขียน Framework จะเห็นว่าเกือบทุก Framework จะมีมาให้แล้ว
6. เข้ารหัส Password ด้วยวิธีที่ถูกต้อง

6.1 Hash passwords ทุกครั้ง

6.2 อย่าใช้ algorithms เช่น MD5 หรือ SHA1 (มันเก่าแล้ว และไม่ปลอดภัย)

6.3 ให้ใช้ Password Hashing API ของ PHP เช่น
password_hash(), password_get_info(), password_needs_rehash(), password_verify()

แนะนำ 6 เว็บไซต์ ไว้เขียนส่งอีเมล สำหรับ Web Developer ครับ

สำหรับคนที่มีปัญหาเขียน PHP แล้วส่งเมลได้บ้างไม่ได้บ้าง หรือส่งเมลไปแล้วไม่เข้า inbox ผมแนะนำให้ใช้บริการ SMTP Service ดีกว่าครั

ใครอยากใช้อันไหนก็ลองดูได้เลยครับ ที่สำคัญทุกเจ้าที่แนะนำมีบริการฟรีด้วย งั้นแนะนำแบบฟรีมากไปหาฟรีน้อยแล้วกันนะ 55+

1. ElasticEmail ฟรี 25,000 ฉบับ/เดือน
เว็บไซต์: https://elasticemail.com/
คู่มือ PHP : https://goo.gl/Z4zUwl

2. Postmark ฟรี 25,000 ฉบับ/เดือน
เว็บไซต์: https://postmarkapp.com/
คู่มือ PHP: http://goo.gl/GG1Fki

3. SendGrid ฟรี 12,000 ฉบับ/เดือน
เว็บไซต์: https://sendgrid.com
คู่มือ PHP: https://goo.gl/sznb8g

4. MailGun ฟรี 10,000 ฉบับ/เดือน
เว็บไซต์: https://www.mailgun.com
คู่มือ PHP : https://goo.gl/Q0M8z0

5. SendInBlue ฟรี 9,000 ฉบับ/เดือน
เว็บไซต์: https://www.sendinblue.com/
คู่มือ PHP: https://goo.gl/usctco

6. MailJet ฟรี 6,000 ฉบับ/เดือน
เว็บไซต์: https://www.mailjet.com/
คู่มือ PHP: http://goo.gl/RnKqRA

ขอให้สนุกกับการเขียนส่งเมลนะครับ

4 ขั้นตอน การแทรก Google reCAPTCHA และใช้งานร่วมกับ PHP

re

ขั้นตอนการแทรก Google reCAPTCHA เพื่อป้องกัน robot และ spam ให้กับฟอร์มในเว็บไซต์

  1. ล็อกอินเพื่อรับ API Key ก่อน ที่ http://www.google.com/recaptcha/admin
  2. เสร็จแล้วให้กรอก Label และ Domains ของเราเอง ดังรูป
    2016-05-25_10-45-42
  3. เราจะได้ Site key และ Secret key มา ดังรูป
    2016-05-25_10-48-59
    ต่อมา จากภาพ (หมายเลข 1) ให้ copy โค้ดส่วนนี้ ไปวางไว้ในส่วน <head> ของ html  และ (หมายเลข 2) ให้ copy โค้ดส่วนนี้ไปวางไว้ฟอร์ม <form> ที่ต้องการครับ

    หมายเหตุ สำหรับคนที่อยากแสดงผลภาษาไทย ให้แก้โค้ดหมายเลข 1 ดังนี้

    แค่นี้ฝั่ง client-side ก็เรียบร้อยแล้วครับ

  4. ต่อมาฝั่ง php เราจะต้องติดตั้ง reCAPTCHA PHP client library ครับ รายละเอียดตามนี้
    https://github.com/google/recaptcha (ไม่เข้าใจตรงนี้ถามได้ครับ) เมื่อติดตั้งเรียบร้อยให้เขียนโค้ดฝั่ง php ดังนี้

แค่นี้ก็เสร็จเรียบร้อยครับ สำหรับการแทรก Google reCAPTCHA กับภาษา PHP ไว้พบกันอีกในโอกาสต่อไป

แนะนำ Guzzle สำหรับทำ RESTful APIs (PHP)

สำหรับคนที่เขียน PHP อยากเขียนต่อกับ RESTful APIs หรือ Web Services แนะนำตัวนี้ครับ “Guzzle”

 

 

รายละเอียด
http://goo.gl/BKjZXv

– Guzzle เป็น PHP HTTP client ที่ใช้สำหรับส่ง HTTP requests และเชื่อมต่อกับ web services ครับ

– สามารถดึงข้อมูล เพิ่ม แก้ไข ลบ หรืออัพโหลดไฟล์ไปที่ web services ได้ง่ายมากเพียงใช้โค้ดไม่กี่บรรทัด

– สามารถเขียนเชื่อมกับ APIs เจ้าดังๆ ได้ไม่ว่าจะเป็น Twitter, Facebook, GitHub ได้สบายๆ

แน่นอนมันติดตั้งผ่าน Composer เราสามารถใช้ได้ทั้ง เขียน PHP แบบปกติ หรือใช้ PHP framework ก็ได้

 

ถ้าง่ายหน่อยสำหรับคนใช้ Yii Framework 2 ดูที่นี่
https://goo.gl/PLq6gg

สำหรับคนใช้ Laravel 5 ดูที่นี่
https://goo.gl/4kq0PT

ลองใช้ดูกันได้ครับ

9 ฟังก์ชัน PHP สำหรับจัดการข้อความ ที่มือใหม่ควรใช้ให้เป็น

1. rawurlencode เปลี่ยนเครื่องหมาย & และช่องว่าง ให้อยู่ในรูปแบบ url ที่ถูกต้อง
2. htmlentities ช่วยแปลง string ให้อยู่ในรูปแบบของ html entities
3. nl2br แทรกคำสั่ง <br> ถ้าต้องการขึ้นบรรทัดใหม่
4. strip_tags การเอาคำสั่ง html ออกจาก string
5. wordwrap ตัดคำ หรือขึ้นบรรทัดใหม่ โดยกำหนดได้ว่าจะแทรกที่ตัวอักษรที่เท่าไหร่
6. trim ลบช่องว่างออกจาก string ทั้งซ้ายและขวา
7. substr ตัดเอา string บางส่วนตามตำแหน่งที่เรากำหนด
8. number_format จัดรูปแบบของตัวเลข เช่น ให้มีคอมม่าคั่นหลักพัน เป็นต้น
9. strcmp เปรียบเทียบ string แบบแน่นอนในระดับ binary

สรุปแบบย่อๆนะครับ วิธีใช้แบบเต็มๆดูเพิ่มเติมได้ที่:
http://php.net/manual/en/ref.strings.php