ให้เรตสมาชิก: 1 / 5

ดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

PHP (PHP Hypertext Preprocessor)

ความเป็นมา

PHP เกิดในปี 1994 โดย Rasmus Lerdorf โปรแกรมเมอร์ชาวสหรัฐอเมริกาได้คิดค้นสร้างเครื่องมือที่ใช้ในการพัฒนาเว็บส่วนตัวของเขา โดยใช้ข้อดีของภาษา C และ Perl เรียกว่า Personal Home Page และได้สร้างส่วนติดต่อกับฐานข้อมูลชื่อว่า Form Interpreter ( FI ) รวมทั้งสองส่วน เรียกว่า PHP/FI ซึ่งก็เป็นจุดเริ่มต้นของ PHP มีคนที่เข้ามาเยี่ยมชมเว็บไซต์ของเขาแล้วเกิดชอบจึงติดต่อขอเอาโค้ดไปใช้บ้าง และนำไปพัฒนาต่อ ในลักษณะของ Open Source ภายหลังมีความนิยมขึ้นเป็นอย่างมากภายใน 3 ปีมีเว็บไซต์ที่ใช้ PHP/FI ในติดต่อฐานข้อมูลและแสดงผลแบบ ไดนามิกและอื่นๆ มากกว่า 50000 ไซต์

PHP เป็นภาษาสคริปต์ที่ประมวลผลที่ฝั่งเซิร์ฟเวอร์ แล้วส่งผลลัพธ์ไปแสดงผลที่ฝั่งไคลเอ็นต์ผ่านบราวเซอร์เช่นเดียวกับ CGI และ ASP ต่อมาเมื่อมีผู้ใช้มากขึ้นจึงมีการร้องขอให้มีการพัฒนาประสิทธิภาพของ PHP/FI ให้สูงขึ้น Rasmus Lerdorf ก็ได้ผู้ที่มาช่วยพัฒนาอีก 2 คนคือ Zeev Suraski และ Andi Gutmans ชาวอิสราเอล ซึ่งปรับปรุงโค้ดของ Lerdorf ใหม่โดยใช้ C++ ต่อมาก็มีเพิ่มเข้ามาอีก 3 คน คือ Stig Bakken รับผิดชอบความสามารถในการติดต่อ Oracle, Shane Caraveo รับผิดชอบดูแล PHP บน Window 9x/NT, และ Jim Winstead รับผิดชอบการตรวจ ความบกพร่องต่างๆ และได้เปลี่ยนชื่อเป็น Professional Home Page

PHP3 ได้ออกสู่สายตาของนักโปรแกรมเมอร์เมื่อ มิถุนายน 1998 ที่ผ่านมาในเวอร์ชั่นนี้มีคุณสมบัติเด่นคือสนับสนุนระบบปฏิบัติการทั้ง Window 95/98/ME/NT, Linux และเว็บเซร์ฟเวอร์ อย่าง IIS, PWS, Apache, OmniHTTPd สนับสนุน ระบบฐานข้อมูลได้หลายรูปแบบเช่น SQL Server, MySQL, mSQL, Oracle, Informix, ODBC

เวอร์ชั่นล่าสุดในปัจจุบันคือ PHP4 ซึ่งได้เพิ่ม Functions การทำงานในด้านต่างๆให้มากและง่ายขึ้นโดย Zend ซึ่งมี Zeev และ Andi Gutmans ได้ร่วมก่อตั้งขึ้น ( http://www.zend.com ) ในเวอร์ชั่นนี้จะเป็น compile script ซึ่งในเวอร์ชั่นหน้านี้จะเป็น embed script interpreter ในปัจจุบันมีคนใช้ PHP สูงกว่า 5,100,000 sites แล้วทั่วโลก ผู้พัฒนาได้ตั้งชื่อของง PHP ใหม่ว่า PHP: Hypertext Preprocessor ซึ่งหมายถึงมีประสิทธิภาพระดับโปรเฟสเซอร์สำหรับไฮเปอร์เท็กซ์

  ความสามารถของ PHP นั้นในความสามารถพื้นฐานที่ภาษาสคริปต์ทั่วๆไปมีนั้น PHP ก็มีความสามารถทำได้ทัดเทียมเช่นเดียวกันเช่น การรับข้อมูลจากฟอร์ม, การสร้าง Content ในลักษณะ Dynamic, รับส่ง Cookies, สร้าง, เปิด, อ่าน และปิดไฟล์ในระบบ, การรองรับระบบจัดการฐานข้อมูลมากมายดังนี้

Adabas D

Ingres

Oracle (OCI7 and OCI8)

Dbase

InterBase

Ovrimos

Empress

FrontBase

PostgreSQL

FilePro (read-only)

mSQL

Solid

Hyperwave

Direct MS-SQL

Sybase

IBM DB2

MySQL

Velocis

Informix

ODBC

Unix dbm

      แต่ตัวจัดการฐานข้อมูลที่ทาง NINETO E-MAGAZINE ONLINE เลือกมาใช้ในบทความนี้คือ MySQL เหตุที่เลือกตัวนี้คือ เป็นที่นิยมกว้างขว้างและประเด็นหนึ่งที่จะต้องพิจารณาคือ Free เพราะ MySQL จัดเป็น Software ประเภท Freeware รองรับ OS ได้หลายระบบด้วยกัน ท่านสามารถดาวน์โหลดได้ที่หน้า Download ซึ่งเราได้จัดเตรียมไว้ให้แล้ว

      Protocol Support ความสามารถในการรองรับโปรโตคอลหลายแบบทั้ง IMAP, SNMP, NNTP, POP3, HTTP และยังมีไลบารีสำหรับติดต่อ กับแอพพลิเคชั่นได้มากมาย มีความยืดหยุ่นสูงสามารถนำไปสร้างแอพพลิเคชั่นได้หลากหลาย และอีกข้อดีหนึ่งที่โดเด่นคือของ PHP ก็คือสามารถแทรกลงในแท็ก HTML ในตำแหน่งใดก็ได้

 

จะใช้ PHP ต้องมีอะไรบ้าง

เนื่องจากว่า PHP ไม่ได้เป็นส่วนหนึ่งของตัว Web Server ดังนั้นถ้าจะใช้ PHP ก็จะต้องดูก่อนว่า Web server นั้นสามารถใช้สคริปต์ PHP ได้หรือไม่ ยกตัวอย่างเช่น PHP สามารถใช้ได้กับ Apache WebServer และ Personal Web Server (PWP) สำหรับระบบปฏิบัติการ Windows 95/98/NT

ในกรณีของ Apache เราสามารถใช้ PHP ได้สองรูปแบบคือ ในลักษณะของ CGI และ Apache Module ความแตกต่างอยู่ตรงที่ว่า ถ้าใช้ PHP เป็นแบบโมดูล PHP จะเป็นส่วนหนึ่งของ Apache หรือเป็นส่วนขยายในการทำงานนั่นเอง ซึ่งจะทำงานได้เร็วกว่าแบบที่เป็น CGI เพราะว่า ถ้าเป็น CGI แล้ว ตัวแปลชุดคำสั่งของ PHP ถือว่าเป็นแค่โปรแกรมภายนอก ซึ่ง Apache จะต้องเรียกขึ้นมาทำงานทุกครั้ง ที่ต้องการใช้ PHP ดังนั้น ถ้ามองในเรื่องของประสิทธิภาพในการทำงาน การใช้ PHP แบบที่เป็นโมดูลหนึ่ง
ของ Apache จะทำงานได้มีประสิทธิภาพมากกว่า

 

รูปแบบการเขียน PHP

การเขียนโค้ด เราสามารถเขียนได้จากโปรแกรม Editor ทั่วไปเช่น Notepad หรือ Editplus แน่นอนที่สะดวกที่สุดคงจะไม่พ้น Notepad เพราะแถมมากับ window อยู่แล้ว แต่ถ้าต้องการความสามารถและ Options ที่เพิ่มขึ้นก็แนะนำว่าโปรแกรม Editplus ใช้ได้ดีทีเดียว

รูปแบบการเขียน PHP เขียนได้ 4 แบบดังตัวอย่าง ที่นิยมคือแบบที่ 1 และ 2 แบบที่ 3 ใช้งานคล้ายกับ Java script  ส่วนแบบที่ 4 ตัว tag <% จะเหมือนกับ ASP โดยเมื่อรันจะได้ผลลัพธ์เหมือนกัน และสามารถแทรกลงในส่วนของภาษา HTML ส่วนใดก็ได้

1.การเขียนโค้ดในรูปแบบภาษา SGML จะมีรูปแบบดังนี้

   <?
               
คำสั่งในภาษา PHP ;
   
?>

2. การเขียนโค้ดเพื่อใช้ร่วมกับภาษา XHTML หรือ XML (แต่สามารถใช้ใน HTML แบบปกติได้) จะมีรูปแบบดังนี้

    <?php
                    
คำสั่งในภาษา PHP ;
     ?>

3. การเขียนโค้ดในรูปแบบ JavaScript จะมีรูปแบบดังนี้

     <Script Language="php">
                  
คำสั่งในภาษา PHP ;
     </Script>

4. การเขียนโค้ดในรูปแบบ ASP จะมีรูปแบบดังนี้

    <%
            
คำสั่งในภาษา PHP ;
     %>

* สำหรับรูปแบบที่ 4 จะใช้ได้กับ PHP 3.0.4 ขึ้นไป และจะต้องไปแก้ไฟล์ php.ini ในโฟลเดอร์ C:WINDOWS เสียก่อนโดยให้ asp_tags มีค่าเป็น On

 

การเขียนสคริปต์ PHP ในรูปแบบใดก็ตามจะต้องมีเครื่องหมาย semicolon ( ; ) ลงท้ายคำสั่งเสมอเหมือนกับการเขียนภาษา C กับภาษา Perl และคำสั่งหรือฟังก์ชั่นในภาษา PHP จะเขียนด้วยตัวพิมพ์เล็กหรือพิมพ์ใหญ่ก็ได้ ( case-insensitive ) การจบ statement หรือสิ้นสุด script เราจะปิดท้ายสคริปต์ด้วยแท็ก ( ?> ) และคำสั่งสุดท้ายในสคริปต์นั้นจะลงท้ายด้วย semicolon ( ; ) หรือไม่ก็ได้เพราะจะถูกปิดด้วยแท็ก ( ?> ) อยู่แล้ว

 

นอกจากรูปแบบแล้ว การวาง code ผสมกับ HTML ก็เป็นวิธีหนึ่ง

<html>
<head>
<title>Example</title>
</head>
<body>
<?php
        echo "Hi, I'm a PHP script!";
?>
</body>
</html>

 

Comment (การเขียนคำอธิบายโปรแกรม)

การเขียนโปรแกรมที่มีความยาวและซับซ้อนมากๆอาจจะทำให้สับสนในภายหลังได้ วิธีที่นิยมกันก็คือการเขียนคำอธิบายไว้ท้ายคำสั่งนั้นๆ หรือที่เรียกกันว่า comments ใน PHP จะสามารถเขียนในรูปแบบของภาษา C, C++ และ Unix shell-style comments ได้โดยจะไม่นำมาประมวลผล จะเห็นแค่ใน souce code เท่านั้น

รูปแบบ

<?php

echo "This is a test";         // comment  แบบ C++

 

/* แบบนี้เป็นการ comments
แบบหลายบรรทัด จะใช้ในกรณี
ที่คำอธิบายเยอะ*/

 

echo "This is yet another test";

echo "One Final Test";      # comment แบบ Unix shell-style

?>

 

ข้อควรระวัง PHP ไม่รับ Comment แบบ nest

<?php

/*

echo "This is a test"; /* comment ตัวนี้จะมีปัญหา */

*/

?>

 

คำสั่งแสดงผล

เราสามารถใช้คำสั่งเพื่อแสดงผลได้ 3 แบบคือ
          1. echo
          2. print
          3. printf

1. คำสั่ง echo จะสามารถแสดงได้หลายประเภท เช่น

<?php
             echo "
ทดสอบการใช้คำสั่ง echo ";
?>

นี่เราลองมาดูความสามารถอีกอย่างของคำสั่ง echo กันคือความสามารถในการแยกนิพจน์ หรือค่าตัวแปรได้ โดยจะใช้เครื่องหมาย , คั่น

<?php
echo "
ทดสอบการใช้คำสั่ง echo<br> " ;
echo " <b>10+20 = " , 15+15 , "</b>" ;
?>

สังเกตคำสั่ง echo "<b> 10+20 = " , 15+15 , "</b>" ; ผมได้ใช้เครื่องหมาย , คั้นระหว่าง "<b> 10+20 =" และ "</b>" ไว้เพื่อให้โปรแกรมแยกส่วนที่เราต้องการให้มันแสดงออกทางหน้าแบบธรรมดากับส่วนที่เราต้องการให้โปรแกรมทำการคำนาณให้เรานั้นคือ 15+15 เมื่อคำนวณแล้วจะได้ค่า 30 โปรแกรมจะนะค่าที่ได้จากการคำนวณมาแสดงแทน ส่วนแท็ก <br> และ <b>...</b> นั้นเป็นแท็ก HTML ธรรมดาซึ่งผมใส่ไว้เพื่อทำให้การแสดงผลสวยงามขึ้น

<?php
echo "
ทดสอบการใช้คำสั่ง echo " ;
echo " 10+20 = " , 15+15 ;
?>

2. คำสั่ง print
<?php
print "
ทดสอบการใช้คำสั่ง print " ;
?>

3. คำสั่ง printf

ในการใช้คำสั่ง printf เราจะต้องทราบชนิดของข้อมูลที่เราต้องการแสดงออกมาว่าเป็นชนิดใด เราจะได้กำหนดค่าลงไปถูงต้องดังนี้

         %d     ตัวเลข

        %o       เลขฐานแปด

        %c       ข้ออักษร ( 1 ตัว )

        %s       ข้อความ

        %f       ทศนิยม

<?php
            
printf ( " 15+15 = %d <br> " , 15+15) ;
            
printf ( " 20/3 = %d <br> " , 20/3 ) ;
           
 printf ( " 20/3 = %f <br> " , 20/3 ) ;
?>

สังเกตคำสั่งที่ 2 และ 3 ให้ดีนะครับ เราได้ใช้ตัวคำนวณเหมือนกันแต่กำหนดชนิดของข้อมูลไม่เหมือนกัน โดยคำสั่งที่ 2 ผมได้กำหนดชนิดข้อมูลเป็น %d แต่ในคำสั่งที่ 3 ได้กำหนดชนิดเป็น %f ผลที่ได้ก็จะแตกต่างการกันครับ

 

String

แบ่งตามลักษณะตัวปิดแบ่งออกเป็น 3 แบบคือ

single quoted

double quoted

heredoc syntax (ไม่อธิบาย)

 

single quoted

ตัวแปร ที่อยู่ภายใต้ single quoted ถือเป็นข้อความด้วย

echo ’this is a simple string’;

echo ’You can also have embedded newlines in strings,

like this way.’;

echo ’Arnold once said: "I’ll be back"’;   // output: ... "I’ll be back"

echo ’Are you sure you want to delete C:\*.*?’;      // output: ... delete C:*.*?

echo ’Are you sure you want to delete C:*.*?’;        // output: ... delete C:*.*?

echo ’I am trying to include at this point: a newline’; // output: ... this point: a newline

 

double quoted

การใช้ double quoted สามารถใช้ร่วมกับ escaped characters ได้ดังตาราง

 

Escaped characters sequence meaning

linefeed (LF or 0x0A (10) in ASCII)

carriage return (CR or 0x0D (13) in ASCII)

horizontal tab (HT or 0x09 (9) in ASCII)

\

backslash

$

dollar sign

"

double-quote

[0-7]{1,3}

the sequence of characters matching the regular expression is a character in octal notation

x[0-9A-Fa-f]{1,2}

the sequence of characters matching the regular expression is a character in hexadecimal notation

 

ข้อควรระวังในการใช้ งาน

$beer = ’Heineken’;

echo "$beer’s taste is great"; // works, "’" is an invalid character for varnames

echo "He drunk some $beers"; // won’t work, ’s’ is a valid character for varnames

echo "He drunk some ${beer}s"; // works

 

Simple syntax

$fruits = array( ’strawberry’ => ’red’ , ’banana’ => ’yellow’ );

echo "A banana is $fruits[banana].";

echo "This square is $square->width meters broad.";

echo "This square is $square->width00 centimeters broad."; // won’t work,

// for a solution, see the complex syntax.

 

Complex syntax

$great = ’fantastic’;

echo "This is { $great}"; // won’t work, outputs: This is { fantastic}

echo "This is {$great}"; // works, outputs: This is fantastic

echo "This square is {$square->width}00 centimeters broad.";

echo "This works: {$arr[4][3]}";

echo "This is wrong: {$arr[foo][3]}"; // for the same reason

// as $foo[bar] is wrong outside a string.

echo "You should do it this way: {$arr[’foo’][3]}";

echo "You can even write {$obj->values[3]->name}";

echo "This is the value of the var named $name: {${$name}}";

 

ตัวอย่างการใช้งาน String

<?php

$str = "This is a string";    /* การกำหนดค่าให้กับ string. */

 

$str = $str . " with some more text";        /* ต่อข้อความกับตัวแปร */

 

$str .= " and a newline at the end. "; /* ต่อข้อความกับตัวแปร อีกรูปแบบหนึ่ง และใช้ escaped newline. */

 

/* This string will end up being ’<p>Number: 9</p>’ */

$num = 9;+

 

$str = "<p>Number: $num</p>";

 

/* This one will be ’<p>Number: $num</p>’ */

$num = 9;

$str = ’<p>Number: $num</p>’;

 

/* Get the first character of a string */

$str = ’This is a test.’;

$first = $str{0};

 

/* Get the last character of a string. */

$str = ’This is still a test.’;

$last = $str{strlen($str)-1};

?>

 

Variable scope

        PHP โดยส่วนใหญ่ตัวแปรจะเป็นแบบ Single scope ดังแสดงตามตัวอย่าง

$a = 1;

include "b.inc";

 

 

ตัวอย่าง การใช้ตัวแปร global และ local

แบบที่1 ตัวแปร a มีค่าต่างกัน

$a = 1; /* global scope */

Function Test () {

echo $a; /* reference to local scope variable */

}

Test ();

 ที่มา: http://iwis.pcd.go.th

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
MOD_MTB_NEWS_RECENT
เราใช้งานบน Cloud Computing แทบทุกวันแต่เราไม่เคยรู้
โดย kubarnaza จ 18 ธ.ค. 2017 5:21 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
4
จ 18 ธ.ค. 2017 5:21 pm โดย kubarnaza
ปฏิวัติฝ่าย IT รองรับ Cloud อย่างจริงจัง
โดย kubarnaza จ 18 ธ.ค. 2017 4:38 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
6
จ 18 ธ.ค. 2017 4:38 pm โดย kubarnaza
Warning! - [44311] Request fields Invoice Ref.
โดย thatsawan จ 18 ธ.ค. 2017 4:15 pm บอร์ด OpenERP/Odoo Warning Message Note
0
1
จ 18 ธ.ค. 2017 4:15 pm โดย thatsawan
Warning! - [44310] Request fields Express Ref.
โดย thatsawan จ 18 ธ.ค. 2017 4:14 pm บอร์ด OpenERP/Odoo Warning Message Note
0
2
จ 18 ธ.ค. 2017 4:14 pm โดย thatsawan
Warning! - [44308] This user cannot access. Request approved By Accouting.
โดย thatsawan จ 18 ธ.ค. 2017 4:07 pm บอร์ด OpenERP/Odoo Warning Message Note
0
3
จ 18 ธ.ค. 2017 4:07 pm โดย thatsawan
แจกฟรี!! ปฏิทิน แมวเหมียว ปี 2018 พร้อมวันหยุด - ปฏิทิน 2561 โหลดเลยถ้าคุณรักแมว!!!
โดย Before Dong จ 18 ธ.ค. 2017 11:15 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
29
จ 18 ธ.ค. 2017 11:15 am โดย Before Dong
ยกคิ้ว คืออะไร ทำให้หน้าเด็กลงจริงมั้ย ??
โดย bunnyreview จ 18 ธ.ค. 2017 11:09 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
16
จ 18 ธ.ค. 2017 11:09 am โดย bunnyreview
คนทั่วไปคิด กับ โปรแกรมเมอร์คิด
โดย Before Dong จ 18 ธ.ค. 2017 10:17 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
22
จ 18 ธ.ค. 2017 10:17 am โดย Before Dong
MDFiles Components <Error>
โดย Nus อ 17 ธ.ค. 2017 4:18 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
1
21
อ 17 ธ.ค. 2017 4:18 pm โดย tsukasaz
ปฏิทินจีนปี 2561
โดย mindphp ส 16 ธ.ค. 2017 1:25 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
39
ส 16 ธ.ค. 2017 1:25 pm โดย mindphp
แนบไฟล์ภาพ เขียน เขียน code insert จะนำข้อมูลลง DB
โดย Mmn ส 16 ธ.ค. 2017 1:12 pm บอร์ด SQL - Database
3
38
ส 16 ธ.ค. 2017 1:12 pm โดย mindphp
อัพเกรด Joomla 3.7 เป็น 3.8.3 แบบ Manual ไม่ได้ครับ
โดย Before Dong ศ 15 ธ.ค. 2017 7:07 pm บอร์ด Joomla Development
0
28
ศ 15 ธ.ค. 2017 7:07 pm โดย Before Dong
[ปัญหา] ได้ข้อมูลมา แต่ต้องการจะแยกข้อมูลทีละตัวเพื่อเอาไปใช้งานค่ะ
โดย Wallapa ศ 15 ธ.ค. 2017 7:02 pm บอร์ด Programming - C/C++ & java & Python
0
32
ศ 15 ธ.ค. 2017 7:02 pm โดย Wallapa
สงคราม OpenStack ปะทะ VMware ร้อนแรงเมื่อมี IoT และ NFV
โดย kubarnaza ศ 15 ธ.ค. 2017 5:48 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
28
ศ 15 ธ.ค. 2017 5:48 pm โดย kubarnaza
[ปัญหา] ดึงข้อมูลเพื่อให้แสดงค่าใน PDF แต่ Error ค่ะ
โดย Wallapa ศ 15 ธ.ค. 2017 10:59 am บอร์ด Programming - C/C++ & java & Python
4
76
ศ 15 ธ.ค. 2017 10:59 am โดย Wallapa
ปฏิทินบัญชี ที่รวบรวมวันยื่นภาษีที่ทุกองค์กรต้องยื่น ปี 2018/ ปฏิทิน 2561 พร้อมวันหยุด - โหลดก่อนได้ก่อนอย่ารอช้า!
โดย Before Dong ศ 15 ธ.ค. 2017 10:23 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
83
ศ 15 ธ.ค. 2017 10:23 am โดย Before Dong
ฝันร้ายของโปรแกรมเมอร์
โดย Before Dong ศ 15 ธ.ค. 2017 9:42 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
157
ศ 15 ธ.ค. 2017 9:42 am โดย mindphp
[ปัญหา] เขียน selenium เพื่อcheck error แต่โค้ดที่เขียนเกิด error
โดย Panchalee พฤ 14 ธ.ค. 2017 9:27 pm บอร์ด Programming - C/C++ & java & Python
2
46
พฤ 14 ธ.ค. 2017 9:27 pm โดย mindphp
รบกวนขอวิธีคำนวนหาจำนวนตามข้อความครับ
โดย Artayaarray Dear พฤ 14 ธ.ค. 2017 4:41 pm บอร์ด Programming - PHP
1
33
พฤ 14 ธ.ค. 2017 4:41 pm โดย thatsawan
อยากทราบขั้นตอนในการทำ selenium เพื่อเช็ค Error 404
โดย Panchalee พฤ 14 ธ.ค. 2017 3:55 pm บอร์ด Programming - C/C++ & java & Python
1
51
พฤ 14 ธ.ค. 2017 3:55 pm โดย nuattawoot