แนะนำ 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

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