ผลต่างระหว่างรุ่นของ "คู่มือการพัฒนาซอฟต์แวร์บนเว็บบราวซ์เซอร์ให้รองรับ UA ด้วยภาษา PHP"

จาก Wiki_EAI
ไปยังการนำทาง ไปยังการค้นหา
 
(ไม่แสดง 22 รุ่นระหว่างกลางโดยผู้ใช้ 4 คน)
แถว 1: แถว 1:
 +
<languages/>
 +
<translate>
 +
<!--T:3-->
 +
คู่มือนี้ได้จัดทำขึ้นมาเพื่อใช้เป็นแนวทางในการพัฒนาซอฟต์แวร์บนเว็บบราวซ์เซอร์เพื่อให้รองรับโดเมนภาษาไทย (IDN) และอีเมลภาษาไทย (EAI) โดยใช้ภาษา PHP
  
  
== Preparing to Support UA in PHP ==
+
<!--T:1-->
 +
<!--
 +
 
 +
<!--T:16-->
 +
User/Pass สำหรับเข้าเซิร์ฟเวอร์ใน workshop  [[https://คน.ไทย/วิกิ/list-user-ws.jpg User]]
 +
# HOST: https://ws.kon.in.th
 +
# DB: https://ws.kon.in.th/phpmyadmin/
 +
# user: userX
 +
# pass: eaiuserX
 +
 
 +
<!--T:17-->
 +
-->
 +
 
 +
== Preparing to Support UA in PHP == <!--T:2-->
  
คู่มือนี้ได้จัดทำขึ้นมาเพื่อใช้เป็นแนวทางในการพัฒนาซอฟต์แวร์บนเว็บบราวซ์เซอร์เพื่อให้รองรับโดเมนภาษาไทย (IDN) และอีเมลภาษาไทย (EAI) โดยใช้ภาษา PHP
 
  
=== ระบบที่ใช้ในการพัฒนา ===
+
=== ระบบที่ใช้ในการพัฒนา === <!--T:4-->
 
# ระบบฐานข้อมูล  
 
# ระบบฐานข้อมูล  
 
#* MySQL
 
#* MySQL
แถว 16: แถว 32:
 
#* PHPMailer
 
#* PHPMailer
  
=== Software ที่ใช้ในการพัฒนา: ===
+
=== Software ที่ใช้ในการพัฒนา === <!--T:5-->
 
# Filezilla [[https://dl4.cdn.filezilla-project.org/client/FileZilla_3.52.2_win64-setup.exe?h=nRlrhWw7NLjal-h8S-C__A&x=1615717392 Win]] [[https://dl4.cdn.filezilla-project.org/client/FileZilla_3.52.2_macosx-x86.app.tar.bz2?h=jSIej0fAkYK7rWgFBbsUPA&x=1615717392 Mac]]
 
# Filezilla [[https://dl4.cdn.filezilla-project.org/client/FileZilla_3.52.2_win64-setup.exe?h=nRlrhWw7NLjal-h8S-C__A&x=1615717392 Win]] [[https://dl4.cdn.filezilla-project.org/client/FileZilla_3.52.2_macosx-x86.app.tar.bz2?h=jSIej0fAkYK7rWgFBbsUPA&x=1615717392 Mac]]
 
# Web Browser เช่น Firefox, Chrome, Safari
 
# Web Browser เช่น Firefox, Chrome, Safari
 
# Text Editor (Code Editor) เช่น Notepad, Atom
 
# Text Editor (Code Editor) เช่น Notepad, Atom
  
=== Application Architecture: ===
+
=== Source code === <!--T:19-->
 +
* Source code ที่ใช้ใน workshop นี้ [[https://github.com/THNICF/UA-Workshop-12062021 source code]]
 +
 
 +
== Application Architecture == <!--T:6-->
 
[[File:App-archetiect-3.png|400px]]
 
[[File:App-archetiect-3.png|400px]]
 
[[File:App-archetiect-2.png|400px]]
 
[[File:App-archetiect-2.png|400px]]
 
[[File:App-archetiect-1.png|400px]]
 
[[File:App-archetiect-1.png|400px]]
  
== Developing Applications to Support UA in PHP ==
+
== Developing Applications to Support UA in PHP == <!--T:7-->
=== [[สร้างฐานข้อมูลที่รองรับ IDN และ EAI]] ===
+
 
 +
=== [[สร้างฐานข้อมูลที่รองรับ IDN และ EAI]] === <!--T:8-->
 +
'''CREATE TABLE IF NOT EXISTS accounts ( '''
 +
'''  `id` int(11) NOT NULL AUTO_INCREMENT,
 +
'''  `username` varchar(50) NOT NULL,
 +
'''  `password` varchar(255) NOT NULL,
 +
'''  `email` varchar(100) NOT NULL,
 +
'''  `activation_code` varchar(50) DEFAULT &apos;&apos;,
 +
'''  PRIMARY KEY (`id`)
 +
''' ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;'''
 +
 
 +
=== [[แก้ไขให้ระบบลงทะเบียนรองรับการใส่อีเมล EAI]] === <!--T:9-->
 +
แก้ไขไฟล์ register.html จาก
 +
'''<input type=&quot;email&quot; name=&quot;email&quot; placeholder=&quot;Email&quot; id=&quot;email&quot; required>
 +
 
 +
<!--T:10-->
 +
เป็น
 +
'''<input type=[[&quot;text&quot;]] name=&quot;email&quot; placeholder=&quot;Email&quot; id=&quot;email&quot; required>
 +
 
 +
=== [[แก้ไขให้ระบบลงทะเบียนตรวจสอบอีเมล EAI ได้]] === <!--T:11-->
 +
แก้ไขไฟล์ register.php จาก
 +
'''if (!filter_var($_POST[&apos;email&apos;], FILTER_VALIDATE_EMAIL)) {
 +
'''
      exit(&apos;Email is not valid!&apos;);

 +
'''  }
 +
 
 +
<!--T:12-->
 +
เป็น
 +
'''  if (preg_match('/^[ก-๛a-zA-Z0-9_+&*-]+(?:\.[ก-๛a-zA-Z0-9_+&*-]+)*@(?:[ก-๛a-zA-Z0-9-]+\.)+[ก-๛a-zA-Z]{2,16}$/u', $_POST[&apos;email&apos;]) == 0) {
 +
'''      exit(&apos;Email is not valid!&apos;);

 +
''' }
 +
 
 +
=== [[แก้ไขให้ระบบลงทะเบียนสามารถส่งอีเมล EAI ได้ด้วย PHPMailer]] === <!--T:13-->
 +
แก้ไขไฟล์ PHPMailer/src/PHPMailer.php จาก
 +
'''  case &apos;php&apos;:
 +
'''  default:
 +
'''  return filter_var($address, FILTER_VALIDATE_EMAIL) !== false;
 +
 
 +
<!--T:14-->
 +
เป็น
 +
'''  case &apos;php&apos;:
 +
'''  default:
 +
'''  return (bool) preg_match("/^[ก-๛a-zA-Z0-9_+&*-]+(?:\.[ก-๛a-zA-Z0-9_+&*-]+)*@(?:[ก-๛a-zA-Z0-9-]+\.)+[ก-๛a-zA-Z]{2,16}$/u", $address);
 +
 
 +
Regular expression ข้างต้นสามารถใช้ตรวจสอบรูปแบบ email ภาษาไทยได้ หากต้องการตรวจสอบ email ภาษาอื่นๆอาจต้องพิจารณาใช้ regular expression รูปแบบอื่นที่ไม่เจาะจง เช่น
 +
* something@something  ^(.+)@(.+)$
 +
 
 +
<!--T:15-->
 +
แก้ไขจาก
 +
''' $this->punyencodeAddress
 +
 
 +
<!--T:16-->
 +
เป็น
 +
'''  //...$this->punyencodeAddress...
 +
(Comment บรรทัดเหล่านี้เพื่อให้โค้ดไม่ทำงาน)
 +
 
 +
 
 +
แก้ไขไฟล์ PHPMailer/src/SMTP.php จาก
 +
'''  'MAIL FROM:<' . $from . '>' . $useVerp,
 +
 
 +
<!--T:18-->
 +
เป็น
 +
'''  'MAIL FROM:<' . $from . '> SMTPUTF8',
  
=== [[แก้ไขให้ระบบลงทะเบียนรองรับการใส่อีเมล EAI]] ===
 
=== [[แก้ไขให้ระบบลงทะเบียนตรวจสอบอีเมล EAI ได้]] ===
 
=== [[แก้ไขให้ระบบลงทะเบียนสามารถส่งอีเมล EAI ได้ด้วย PHPMailer]] ===
 
  
 +
<!--T:19-->
 
[[Category: EAI]]
 
[[Category: EAI]]
 +
</translate>

รุ่นแก้ไขปัจจุบันเมื่อ 14:17, 24 มีนาคม 2565

ภาษาอื่น ๆ:
English • ‎ไทย

คู่มือนี้ได้จัดทำขึ้นมาเพื่อใช้เป็นแนวทางในการพัฒนาซอฟต์แวร์บนเว็บบราวซ์เซอร์เพื่อให้รองรับโดเมนภาษาไทย (IDN) และอีเมลภาษาไทย (EAI) โดยใช้ภาษา PHP


Preparing to Support UA in PHP

ระบบที่ใช้ในการพัฒนา

  1. ระบบฐานข้อมูล
    • MySQL
    • PHPMyAdmin
  2. ระบบบนเว็บบราวซ์เซอร์
    • ระบบลงทะเบียน (Registration)
    • ระบบ Login
    • ระบบแสดงผล Profile
  3. ระบบส่งอีเมล
    • PHPMailer

Software ที่ใช้ในการพัฒนา

  1. Filezilla [Win] [Mac]
  2. Web Browser เช่น Firefox, Chrome, Safari
  3. Text Editor (Code Editor) เช่น Notepad, Atom

Source code

  • Source code ที่ใช้ใน workshop นี้ [source code]

Application Architecture

App-archetiect-3.png App-archetiect-2.png App-archetiect-1.png

Developing Applications to Support UA in PHP

สร้างฐานข้อมูลที่รองรับ IDN และ EAI

CREATE TABLE IF NOT EXISTS accounts ( 
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `username` varchar(50) NOT NULL,
   `password` varchar(255) NOT NULL,
   `email` varchar(100) NOT NULL,
   `activation_code` varchar(50) DEFAULT '',
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

แก้ไขให้ระบบลงทะเบียนรองรับการใส่อีเมล EAI

แก้ไขไฟล์ register.html จาก

<input type="email" name="email" placeholder="Email" id="email" required>

เป็น

<input type="text" name="email" placeholder="Email" id="email" required>

แก้ไขให้ระบบลงทะเบียนตรวจสอบอีเมล EAI ได้

แก้ไขไฟล์ register.php จาก

if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { 

      exit('Email is not valid!');
 
  }

เป็น

  if (preg_match('/^[ก-๛a-zA-Z0-9_+&*-]+(?:\.[ก-๛a-zA-Z0-9_+&*-]+)*@(?:[ก-๛a-zA-Z0-9-]+\.)+[ก-๛a-zA-Z]{2,16}$/u', $_POST['email']) == 0) {
      exit('Email is not valid!');
 
 }

แก้ไขให้ระบบลงทะเบียนสามารถส่งอีเมล EAI ได้ด้วย PHPMailer

แก้ไขไฟล์ PHPMailer/src/PHPMailer.php จาก

  case 'php': 
  default:
  return filter_var($address, FILTER_VALIDATE_EMAIL) !== false;

เป็น

  case 'php': 
  default: 
  return (bool) preg_match("/^[ก-๛a-zA-Z0-9_+&*-]+(?:\.[ก-๛a-zA-Z0-9_+&*-]+)*@(?:[ก-๛a-zA-Z0-9-]+\.)+[ก-๛a-zA-Z]{2,16}$/u", $address);

Regular expression ข้างต้นสามารถใช้ตรวจสอบรูปแบบ email ภาษาไทยได้ หากต้องการตรวจสอบ email ภาษาอื่นๆอาจต้องพิจารณาใช้ regular expression รูปแบบอื่นที่ไม่เจาะจง เช่น

  • something@something ^(.+)@(.+)$

แก้ไขจาก

 $this->punyencodeAddress

เป็น

  //...$this->punyencodeAddress...

(Comment บรรทัดเหล่านี้เพื่อให้โค้ดไม่ทำงาน)


แก้ไขไฟล์ PHPMailer/src/SMTP.php จาก

  'MAIL FROM:<' . $from . '>' . $useVerp,

เป็น

  'MAIL FROM:<' . $from . '> SMTPUTF8',