ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingเปิดปิด <? ?> บ่อยๆ กับ ใช้ php ทั้งหมด อันไหนดีกว่ากัน
หน้า: 1 [2] 3   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: เปิดปิด <? ?> บ่อยๆ กับ ใช้ php ทั้งหมด อันไหนดีกว่ากัน  (อ่าน 8183 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
payu
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 125
ออฟไลน์ ออฟไลน์

กระทู้: 1,881



ดูรายละเอียด
« ตอบ #20 เมื่อ: 09 มกราคม 2008, 18:13:53 »

แสดงว่าแบบนี้เร็วสุดสินะครับ

โค๊ด:
function test(&$a) {
     $a++;
}

ไว้ต้องหมั่นศึกษา  Tongue

คิดว่าถ้าลำพังตัวแปร int คงไม่ช้าครับ .. แต่ถ้าเป็น class หรือ string ใหญ่ๆ น่าจะเห็นความแตกต่างแน่ครับ

ถ่ายทอดให้ผมมั่งนะคร้าบบบบ  ...

บันทึกการเข้า

lemon
Newbie
*

พลังน้ำใจ: 0
ออฟไลน์ ออฟไลน์

กระทู้: 3



ดูรายละเอียด
« ตอบ #21 เมื่อ: 09 มกราคม 2008, 18:48:31 »


- ผมเคยได้ยินมาว่าเวลาเขียนโค้ด ไม่ควรจะเปิด <?php  และปิด ?> บ่อยๆ เครื่องจะทำงานหนัก
- และผมก็เคยได้ยินมาอีกว่า ให้ใช้ html ให้มากที่สุด อะไรที่ไม่ต้องประมวลผลก็ไม่ต้องไปใช้ php

ทีนี้ถ้า 2 ข้อนี้มันขัดกันควรเลือกแบบไหนดีครับ


สมมุติทีเว็บอยู่ประมาณนี้ แบบเก็บ path ของเว็บไว้ในตัวแปล


โค๊ด:
<a href='<?=$path?>/index.html'><img src='<?=$path?>/image/pic01.jpg'></a>
<a href='<?=$path?>/profile.html'><img src='<?=$path?>/image/pic02.jpg'>
<a href='<?=$path?>/gallery.html'><img src='<?=$path?>/image/pic03.jpg'>
<a href='<?=$path?>/board.html'><img src='<?=$path?>/image/pic04.jpg'>
<a href='<?=$path?>/chat.html'><img src='<?=$path?>/image/pic05.jpg'>


จะเห็นว่ามีการเปิดปิด <? ?> เพื่อสลับการทำงานระหว่าง php กับ html อยู่เพียบเลย

กับอีกแบบนึงคือ เปิดปิด <? ?> ครั้งเดียว โดยจับ html ทั้งหมดของเว็บยัดลงตัวแปลซะ ก็จะได้ประมาณนี้

โค๊ด:
$text = "<a href='$path/index.html'><img src='$path/image/pic01.jpg'>";
$text .= "<a href='$path/profile.html'><img src='$path/image/pic02.jpg'>";
$text .= "<a href='$path/gallery.html'><img src='$path/image/pic03.jpg'>";
$text .= "<a href='$path/board.html'><img src='$path/image/pic04.jpg'>";
$text .= "<a href='$path/chat.html'><img src='$path/image/pic05.jpg'>";
echo $text;

อยากถามว่าแบบไหนดีกว่ากันครับ


ผมอยากแนะว่า
ผมอยากให้อ่านโค้ดของคุณ hurahura ดูดีๆครับ
สิ่งที่ทุกคนพูดถึงมาตลอดคือทำไงถึงเขียน PHP ให้ประหยัดทรัพยากรมากที่สุดโดยเน้นที่PHPครับ
แต่สิ่งที่ผมจะเน้นคือการมีพื้นฐาน HTMLที่ดีมากๆและเก่งPHPให้มากจะทำให้ประหยัดทรัพยากรมากที่สุดครับ
และผมจะเน้นเรื่อง HTML อีกครั้งนั่นคือการใช้ HTML ให้ถูกต้องและใช้HTMLให้มากที่สุด
เรื่องแรก นั่นคือโค้ดของคุณ hurahura เขียนTAG
โค๊ด:
<a>
เปิดแล้วไม่ปิดครับผมแนะว่าให้ปิดด้วย
โค๊ด:
</a>
แม้ว่ามันจะแสดงผลออกมาได้ก็ตาม
เรื่องที่สอง คือ การที่คุณ hurahura ใช้โค้ด PHP ทั้งๆที่ไม่มีความจำเป็นเลย
โค้ดทั้ง 2 แบบที่คุณ hurahura เสนอมาครับ มันเปลืองทรัพยากรทั้งคู่ครับ
บันทึกการเข้า
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,459



ดูรายละเอียด เว็บไซต์
« ตอบ #22 เมื่อ: 09 มกราคม 2008, 19:04:00 »

^
^
^

ผมว่าคุณ hurahura (ตอนแรกผมอ่านชื่อเขาเป็น haruhura ฮารูฮูล่า -*-)
เขาอยากยกตัวอย่างเฉยๆ ครับ อย่าจับผิดขนาดนั้นเลย

ผมเองปัจจุบันยังใช้แบบสอง เลย
ถามว่าจำเป็นไหม จำเป็นมาก เพราะผมทำเว็บ adsense
เลยต้องทำเป็น full url แถมทำหลายเว็บ
เลยต้องทำเป็นค่า config เรียกเอา ไม่งั้นแก้ตายเลย

---------------------------------------------

ผมว่าเรื่องกินระบบนี้ ตั้งแต่มีคนคิดเริ่มเขียนเว็บ php ด้วยตัวเอง ผมก็ว่าดีแล้ว
ดีมากๆ เทียบกับหลายคนที่ใช้ CMS ผมว่ายังดีกว่าหลายขุมเลย

ถ้ามองจากคนเคยต้องดูแลคอมสักเครื่อง จะรู้เลยว่า
cms มันกินขนาดไหน แค่เขียนใช้เองได้นี้
ผมว่าต้องภูมิใจในตัวเองไว้ได้เลย ว่าเราช่วยผู้ให้บริการโฮสได้บ้าง ไม่มากก็น้อย

ขอแค่ อย่าลูปค้างแถมให้เขาเป็นพอ อิๆ
บันทึกการเข้า

icez
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 296
ออฟไลน์ ออฟไลน์

กระทู้: 2,876



ดูรายละเอียด
« ตอบ #23 เมื่อ: 09 มกราคม 2008, 23:15:30 »

อ่านมาบนๆ รู้สึกมันเท่ห์ดีนะโจ้นะ
แต่ไอ้บรรทัดสุดท้ายนี่ (ทำหน้าแบบว่า จะขำหรือจะร้องดีเนี่ย)


ไหนๆ ก็ไหนๆ เข้าเรื่อง security ด้วยเลยแล้วกัน

มี cms ตัวนึงครับ อยากให้ลองแกะ code เป็นแนวทางการเขียนดู น่าจะช่วยได้เยอะ
http://www.neocrome.net/

ลองดูการรับค่าจาก form ของเค้านะครับ
แทนที่เค้าจะเขียน $a = $_GET["a"]; ตรงๆ
เค้าก็ไปสร้าง function ขึ้นมาใหม่ (คุ้นๆ ว่าชื่อ function cv รึเปล่าเนี่ยแหละ)
แล้วก็เขียนเป็น $a = cv('G', 'a', 'TXT'); สารพัด PARAM อะไรพวกนี้
จากตัวอย่าง... บอกว่าเป็น method GET ('G') โดยชื่อ field คือ a ('a') รูปแบบข้อความเป็น plain text ('TXT')
แล้วก็จะมีรูปแบบอีกสารพัด
ลองแกะแฟ้ม system/functions.php หา function ตัวนี้ดูนะครับ ขอ บอก ว่า สุดยอดมากๆ
ถึงแม้ว่าจะทำให้ดูยุ่งยากขึ้นอีกนิด... แต่รับรอง ปลอดภัยขึ้นเยอะครับ


ส่วนเรื่องความเร็ว... หลักๆ แล้วตัวที่ทำให้ช้าอยู่ที่ sql ครับ
เพราะฉะนั้น ทำไงก็ได้ให้ query sql น้อยที่สุด เอาที่จำเป็นที่สุดไว้
อันไหนไม่จำเป็นก็อย่าไป query มันให้เสียเวลา + เปลืองทรัพยากรเปล่าๆ
แล้วก็ ทำ index ด้วยนะครับ

* เงื่อนไขการทำ index ต้องวิเคราะห์ query ของเราดูครับ ยุ่งยากนิดหน่อย
แต่ช่วยด้านประสิทธิภาพดีกว่าการปรับแต่งอะไรเล็กๆ น้อยๆ พวกนี้เยอะครับ
บันทึกการเข้า

THZHost SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ
hurahura
สมุนแก๊งเสียว
*

พลังน้ำใจ: 20
ออฟไลน์ ออฟไลน์

กระทู้: 867



ดูรายละเอียด
« ตอบ #24 เมื่อ: 09 มกราคม 2008, 23:19:32 »

อ้างถึง
ผมอยากแนะว่า
ผมอยากให้อ่านโค้ดของคุณ hurahura ดูดีๆครับ
สิ่งที่ทุกคนพูดถึงมาตลอดคือทำไงถึงเขียน PHP ให้ประหยัดทรัพยากรมากที่สุดโดยเน้นที่PHPครับ
แต่สิ่งที่ผมจะเน้นคือการมีพื้นฐาน HTMLที่ดีมากๆและเก่งPHPให้มากจะทำให้ประหยัดทรัพยากรมากที่สุดครับ
และผมจะเน้นเรื่อง HTML อีกครั้งนั่นคือการใช้ HTML ให้ถูกต้องและใช้HTMLให้มากที่สุด
เรื่องแรก นั่นคือโค้ดของคุณ hurahura เขียนTAG
โค๊ด:
<a>
เปิดแล้วไม่ปิดครับผมแนะว่าให้ปิดด้วย
โค๊ด:
</a>
แม้ว่ามันจะแสดงผลออกมาได้ก็ตาม
เรื่องที่สอง คือ การที่คุณ hurahura ใช้โค้ด PHP ทั้งๆที่ไม่มีความจำเป็นเลย
โค้ดทั้ง 2 แบบที่คุณ hurahura เสนอมาครับ มันเปลืองทรัพยากรทั้งคู่ครับ


 Lips Sealed

เอ่อ...กำ คือ...อันนี้ไม่แน่ใจว่าแซวเล่นขำๆ หรือเอาจริงๆจัง

ผมเห็นคุณเขียนแย้งตัวอย่าง ที่บอกว่าไม่จำเป็นตัวใช้ $path อะไรนั้นแล้ว แต่ผมไม่ได้ชี้แจงอะไร เพราะมันไม่ใช่ประเด็น และคิดว่าคนทั้วไปเขาคงเข้าใจว่ามันคือตัวอย่างเฉยๆ คงไม่มีใครจับมันมาเป็นประเด็นอีก แต่เห็นคุณเอาตัวอย่างมาเป็นประเด็นอีกครั้งก็เลยของชี้แจ้งหน่อยครับว่า

โค้ดที่ยกมาเป็นตัวอย่างเฉยๆครับท่าน เขียนมาสดๆ เป็นแค่ตัวอย่างประกอบคำถามเท่านั้น เพื่อให้มองภาพออกเฉยๆครับ

แหมถ้าจะจับผิดตัวอย่างแบบนั้น ทำไมไม่บอกไปเลยอ่ะครับว่า ตัวอย่างอ่ะมันผิดเพราะ ตัวแปร $path ยังไมได้ใส่ค่าเลย หรือไม่ก็บอก ยังไม่มี tag <html> ไม่มี <body> เลย หรือบอกยังไม่เปิด <? ปิด ?> ซะเลยล่ะครับ

ผมแค่หาตัวอย่างที่มาการใช้ตัวแปรเยอะๆ ซึ่งที่ผมยกมาจะว่าไปก็ไม่ใช่ตัวอย่างที่ดี เพราะจากตัวอย่างคนมักจะบอกให้ทำตามข้อ 2 แต่ถ้าตัวอย่างมัน มีข้อความเยอะๆและมีการใช้ตัวแปรครั้งเดียวเชื่อว่าหลายคนคงตอบว่าข้อแรกดีกว่า



จริงๆการมีตัวอย่างประกอบคำถามนี่มันก็มีทั้งข้อดีข้อเสียนะ

คนที่เข้าใจประเด็นก็จะไม่มีปัญหาอะไร แต่มันจะมีคนบางประเภทเสมอ ที่สนใจตัวอย่างมากกว่าประเด็นของกระทู้ ผมเจอแบบนี้มาหลายครั้งละ มีครั้งนึงขำดี ขอเล่าหน่อย ตอนนั้นคุยกันเรื่องเกี่ยวกับสีอะไรทำนองนี้ ผมก็บอกไปว่า

"สมมุตผมถ้าเอาแมวสีดำวางบนพื้นสีขาว จะมองเห็นตัวแมวชัดกว่า เอาแมวสีแดงไปวางบนพื้นสีชมพู"

ปรากฎว่า ดันมีคนมาบอกว่า "ทฤษฎีนี้ไม่จริง เพราะโลกนี้ไม่มีแมวสีแดง" ซะงั้น  เจอแบบนี้ผมก็ไปไม่ถูกเลย ฮ่าๆ


อ้อ ไหนๆเขียนแล้ว ขอพูดเรื่อง $path หน่อย บางเว็บก็ถูกออกแบบมาให้จำเป็นจะต้องใช้ครับ

อย่างเช่นถ้าเขียน .htaccress ดักไว้ จะทำให้ path ของตัว link ผิดเพี้ยนไป จึงจำเป็นต้องใช้ path เต็ม แต่ถ้าหากใช้ path ลงไปเลยโดยไม่ใช้ตัวแปร ก็จะมีปัญหาเรื่องความยืดหยุ่น

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

แต่ไม่ว่ายังก็อย่างที่บอกไป ตรงนี้ไม่ใช้ประเด็น เพราะมันเป็นแค่ตัวอย่าง ต่อให้โค้ดมันรันไม่ได้มันก็ไม่ใช่ประเด็นอยู่ดี

บันทึกการเข้า
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,459



ดูรายละเอียด เว็บไซต์
« ตอบ #25 เมื่อ: 09 มกราคม 2008, 23:29:20 »

อ่านมาบนๆ รู้สึกมันเท่ห์ดีนะโจ้นะ
แต่ไอ้บรรทัดสุดท้ายนี่ (ทำหน้าแบบว่า จะขำหรือจะร้องดีเนี่ย)

 Grin

ส่วนเรื่องความเร็ว... หลักๆ แล้วตัวที่ทำให้ช้าอยู่ที่ sql ครับ
เพราะฉะนั้น ทำไงก็ได้ให้ query sql น้อยที่สุด เอาที่จำเป็นที่สุดไว้
อันไหนไม่จำเป็นก็อย่าไป query มันให้เสียเวลา + เปลืองทรัพยากรเปล่าๆ
แล้วก็ ทำ index ด้วยนะครับ

* เงื่อนไขการทำ index ต้องวิเคราะห์ query ของเราดูครับ ยุ่งยากนิดหน่อย
แต่ช่วยด้านประสิทธิภาพดีกว่าการปรับแต่งอะไรเล็กๆ น้อยๆ พวกนี้เยอะครับ

สำหรับตรงนี้ หลายคนมักจะงงกันกับเรื่อง index
ยิ่งถ้าพูดถึง relation เดียวจะแป๊ก

ผมแนะนำให้คนที่ยังงงๆ ให้ลองศึกษาการเขียนฐานข้อมูลบน MS Access ดูนะครับ

ลองทำฐานข้อมูลเล่นๆ สักอัน เช่น
ฐานข้อมูลบุคคล แยก 2 ตารางเป็น รายชื่อคน กับ สถานที่ทำงาน โดยใช้เลขประชาชนเป็น key
แล้วสร้างรายงานมาแสดงดูด้วยนะครับ

รับรองท่านจะเข้าใจเรื่อง index และ relation ด้วยเลย
ไม่รวมถึงการกำหนดชนิดข้อมูล และอื่นๆ ที่ได้เป็นของแถม

ปล. ผมว่าคุณ hurahura เครียดเลยนะเนี่ย  เป็นผมๆ ก็เครียด  Lips Sealed
บันทึกการเข้า

lemon
Newbie
*

พลังน้ำใจ: 0
ออฟไลน์ ออฟไลน์

กระทู้: 3



ดูรายละเอียด
« ตอบ #26 เมื่อ: 10 มกราคม 2008, 01:57:21 »

อ้างถึง
ผมอยากแนะว่า
ผมอยากให้อ่านโค้ดของคุณ hurahura ดูดีๆครับ
สิ่งที่ทุกคนพูดถึงมาตลอดคือทำไงถึงเขียน PHP ให้ประหยัดทรัพยากรมากที่สุดโดยเน้นที่PHPครับ
แต่สิ่งที่ผมจะเน้นคือการมีพื้นฐาน HTMLที่ดีมากๆและเก่งPHPให้มากจะทำให้ประหยัดทรัพยากรมากที่สุดครับ
และผมจะเน้นเรื่อง HTML อีกครั้งนั่นคือการใช้ HTML ให้ถูกต้องและใช้HTMLให้มากที่สุด
เรื่องแรก นั่นคือโค้ดของคุณ hurahura เขียนTAG
โค๊ด:
<a>
เปิดแล้วไม่ปิดครับผมแนะว่าให้ปิดด้วย
โค๊ด:
</a>
แม้ว่ามันจะแสดงผลออกมาได้ก็ตาม
เรื่องที่สอง คือ การที่คุณ hurahura ใช้โค้ด PHP ทั้งๆที่ไม่มีความจำเป็นเลย
โค้ดทั้ง 2 แบบที่คุณ hurahura เสนอมาครับ มันเปลืองทรัพยากรทั้งคู่ครับ


 Lips Sealed

เอ่อ...กำ คือ...อันนี้ไม่แน่ใจว่าแซวเล่นขำๆ หรือเอาจริงๆจัง

ผมเห็นคุณเขียนแย้งตัวอย่าง ที่บอกว่าไม่จำเป็นตัวใช้ $path อะไรนั้นแล้ว แต่ผมไม่ได้ชี้แจงอะไร เพราะมันไม่ใช่ประเด็น และคิดว่าคนทั้วไปเขาคงเข้าใจว่ามันคือตัวอย่างเฉยๆ คงไม่มีใครจับมันมาเป็นประเด็นอีก แต่เห็นคุณเอาตัวอย่างมาเป็นประเด็นอีกครั้งก็เลยของชี้แจ้งหน่อยครับว่า

โค้ดที่ยกมาเป็นตัวอย่างเฉยๆครับท่าน เขียนมาสดๆ เป็นแค่ตัวอย่างประกอบคำถามเท่านั้น เพื่อให้มองภาพออกเฉยๆครับ

แหมถ้าจะจับผิดตัวอย่างแบบนั้น ทำไมไม่บอกไปเลยอ่ะครับว่า ตัวอย่างอ่ะมันผิดเพราะ ตัวแปร $path ยังไมได้ใส่ค่าเลย หรือไม่ก็บอก ยังไม่มี tag <html> ไม่มี <body> เลย หรือบอกยังไม่เปิด <? ปิด ?> ซะเลยล่ะครับ

ผมแค่หาตัวอย่างที่มาการใช้ตัวแปรเยอะๆ ซึ่งที่ผมยกมาจะว่าไปก็ไม่ใช่ตัวอย่างที่ดี เพราะจากตัวอย่างคนมักจะบอกให้ทำตามข้อ 2 แต่ถ้าตัวอย่างมัน มีข้อความเยอะๆและมีการใช้ตัวแปรครั้งเดียวเชื่อว่าหลายคนคงตอบว่าข้อแรกดีกว่า



จริงๆการมีตัวอย่างประกอบคำถามนี่มันก็มีทั้งข้อดีข้อเสียนะ

คนที่เข้าใจประเด็นก็จะไม่มีปัญหาอะไร แต่มันจะมีคนบางประเภทเสมอ ที่สนใจตัวอย่างมากกว่าประเด็นของกระทู้ ผมเจอแบบนี้มาหลายครั้งละ มีครั้งนึงขำดี ขอเล่าหน่อย ตอนนั้นคุยกันเรื่องเกี่ยวกับสีอะไรทำนองนี้ ผมก็บอกไปว่า

"สมมุตผมถ้าเอาแมวสีดำวางบนพื้นสีขาว จะมองเห็นตัวแมวชัดกว่า เอาแมวสีแดงไปวางบนพื้นสีชมพู"

ปรากฎว่า ดันมีคนมาบอกว่า "ทฤษฎีนี้ไม่จริง เพราะโลกนี้ไม่มีแมวสีแดง" ซะงั้น  เจอแบบนี้ผมก็ไปไม่ถูกเลย ฮ่าๆ


อ้อ ไหนๆเขียนแล้ว ขอพูดเรื่อง $path หน่อย บางเว็บก็ถูกออกแบบมาให้จำเป็นจะต้องใช้ครับ

อย่างเช่นถ้าเขียน .htaccress ดักไว้ จะทำให้ path ของตัว link ผิดเพี้ยนไป จึงจำเป็นต้องใช้ path เต็ม แต่ถ้าหากใช้ path ลงไปเลยโดยไม่ใช้ตัวแปร ก็จะมีปัญหาเรื่องความยืดหยุ่น

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

แต่ไม่ว่ายังก็อย่างที่บอกไป ตรงนี้ไม่ใช้ประเด็น เพราะมันเป็นแค่ตัวอย่าง ต่อให้โค้ดมันรันไม่ได้มันก็ไม่ใช่ประเด็นอยู่ดี


จะบอกว่าผม พูดจริงๆครับ
และบอกว่า ผมไม่ได้เข้าใจประเด็นผิดครับ
ที่ผมเข้าใจผิดคือวัตถุประสงค์ของคุณ hurahura มากกว่า ขออภัยด้วย
ที่ผมต้องพูดถึงตัวอย่างเพราะผมไม่แน่ใจว่า
ปกติคุณ hurahura เขียนโค้ด HTML เป็นอย่างตัวอย่างหรือเปล่า
ส่วนเรื่อง path ก็ไม่ขอเถียงคุณ hurahura ครับ ที่ผมบอกว่าไม่จำเป็นเพราะไม่คิดว่าคุณจะใช้ path แบบซับซ้อน
ขออภัยด้วย

ขอกล่าวอีกครั้ง ที่ผมต้องพูดถึงตัวอย่าง เพราะทุกคนพูดถึงแต่PHPครับ
ผมรู้ว่าคุณ hurahura ต้องการทราบความรู้ทาง PHP ในการจัดสรรทรัพยากรเพิ่มเติม
ที่ผมดึงประเด็นมาที่ตัวอย่างของคุณ hurahura มันดูเหมือนหลุดประเด็น ใช่
แต่ผมต้องการให้ทุกคนใส่ใจ HTML ซึ่งเป็นพื้นฐานครับ แค่หวังดีเท่านั้นครับ
เพราะผมคิดว่า ท้ายสุดความรู้ PHPขั้นสูง จะจบลงที่ HTML ครับ (อาจมีคนเถียงผมประโยคนี้ครับแต่ก็แล้วแต่ความคิดคน)
ผมไม่ใช่เซียนPHPครับ สิ่งอยากจะบอกไม่ใช้ความรู้ครับ แต่เป็นข้อคิดเท่านั้น
หากคิดว่าสิ่งที่ผมกล่าวนั้นไม่มีประโยชน์ก็ขออภัยด้วย


« แก้ไขครั้งสุดท้าย: 10 มกราคม 2008, 02:48:56 โดย lemon » บันทึกการเข้า
icez
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 296
ออฟไลน์ ออฟไลน์

กระทู้: 2,876



ดูรายละเอียด
« ตอบ #27 เมื่อ: 10 มกราคม 2008, 09:06:21 »

 Tongue ได้ข่าวว่าเค้าถาม php - -'

คุณ lemon จริงจังกะชีวิตมากเกินไปรึเปล่าครับ
relax ลงบ้างก็ดีนะครับ เดี๋ยวจะเครียดขึ้นสมองเปล่าๆ
บันทึกการเข้า

THZHost SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ
hurahura
สมุนแก๊งเสียว
*

พลังน้ำใจ: 20
ออฟไลน์ ออฟไลน์

กระทู้: 867



ดูรายละเอียด
« ตอบ #28 เมื่อ: 10 มกราคม 2008, 19:27:14 »

จะบอกว่าผม พูดจริงๆครับ
และบอกว่า ผมไม่ได้เข้าใจประเด็นผิดครับ
ที่ผมเข้าใจผิดคือวัตถุประสงค์ของคุณ hurahura มากกว่า ขออภัยด้วย
ที่ผมต้องพูดถึงตัวอย่างเพราะผมไม่แน่ใจว่า
ปกติคุณ hurahura เขียนโค้ด HTML เป็นอย่างตัวอย่างหรือเปล่า
ส่วนเรื่อง path ก็ไม่ขอเถียงคุณ hurahura ครับ ที่ผมบอกว่าไม่จำเป็นเพราะไม่คิดว่าคุณจะใช้ path แบบซับซ้อน
ขออภัยด้วย

ขอกล่าวอีกครั้ง ที่ผมต้องพูดถึงตัวอย่าง เพราะทุกคนพูดถึงแต่PHPครับ
ผมรู้ว่าคุณ hurahura ต้องการทราบความรู้ทาง PHP ในการจัดสรรทรัพยากรเพิ่มเติม
ที่ผมดึงประเด็นมาที่ตัวอย่างของคุณ hurahura มันดูเหมือนหลุดประเด็น ใช่
แต่ผมต้องการให้ทุกคนใส่ใจ HTML ซึ่งเป็นพื้นฐานครับ แค่หวังดีเท่านั้นครับ
เพราะผมคิดว่า ท้ายสุดความรู้ PHPขั้นสูง จะจบลงที่ HTML ครับ (อาจมีคนเถียงผมประโยคนี้ครับแต่ก็แล้วแต่ความคิดคน)
ผมไม่ใช่เซียนPHPครับ สิ่งอยากจะบอกไม่ใช้ความรู้ครับ แต่เป็นข้อคิดเท่านั้น
หากคิดว่าสิ่งที่ผมกล่าวนั้นไม่มีประโยชน์ก็ขออภัยด้วย



อย่าเครียดครับๆ เข้าใจว่าหวังดี  เอาเป็นว่า เราข้ามเรื่องนี่กันไปดีกว่า


ขอถามต่อเรื่อง ติดต่อ database และ query ข้อมูล เขียนโค้ดกันแบบไหนกันครับ
ผมเขียนแบบนี้ไม่ทราบว่าดีที่สุดแล้วหรือยัง


อ้างถึง
$db="databasename";
mysql_connect("localhost","username","password");
mysql_select_db($db);


$sql = "select * from table";
$table = mysql_db_query($db,$sql);
$tablerow = mysql_num_rows($table);

$a=0;
while($a < $tablerow){
$result = mysql_fetch_array($table);
echo $result['field'];
$a++;
}
บันทึกการเข้า
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,459



ดูรายละเอียด เว็บไซต์
« ตอบ #29 เมื่อ: 10 มกราคม 2008, 19:30:56 »

ต้องใช้ตัวนี้ด้วยครับ อ้างอิงจากโพสของ icez มาเลย

mysql_query("insert into table(id, text) values('".mysql_real_escape_string($id)."', '".mysql_real_escape_string($text)."')");


การเอาค่าจากตัวแปรไปใส่ mysql กรุณาคร่อมด้วย function mysql_real_escape_string ทุกครั้ง
1. รันได้ชัวร์
2. ป้องกัน sql injection (hack ฐานข้อมูล) ได้ด้วย

mysql_escape_string ก็ใช้ได้ครับ
ความแตกต่างของ 2 function นี้อยู่ที่ mysql_escape นั่น php ทำงานเอง
ส่วน mysql real escape ตัว php จะไปเรียก library ของ mysql ให้ทำงานให้
ซึ่ง algorithm ก็ตัวเดียวกันนั่นแหละ
บันทึกการเข้า

payu
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 125
ออฟไลน์ ออฟไลน์

กระทู้: 1,881



ดูรายละเอียด
« ตอบ #30 เมื่อ: 10 มกราคม 2008, 20:48:32 »

mysql_escape_string ก็ใช้ได้ครับ
ความแตกต่างของ 2 function นี้อยู่ที่ mysql_escape นั่น php ทำงานเอง
ส่วน mysql real escape ตัว php จะไปเรียก library ของ mysql ให้ทำงานให้
ซึ่ง algorithm ก็ตัวเดียวกันนั่นแหละ

เพิ่มเติมครับ .. คัดมาจาก help ของ php

อ้างถึง
string mysql_escape_string ( string $unescaped_string )

This function will escape the unescaped_string, so that it is safe to place it in a mysql_query(). This function is deprecated.

This function is identical to mysql_real_escape_string() except that mysql_real_escape_string() takes a connection handler and escapes the string according to the current character set. mysql_escape_string() does not take a connection argument and does not respect the current charset setting.

เค้าบอกว่า mysql_escape_string is deprecated คือไม่แนะนำให้ใช้แล้ว
การทำงานของ mysql_escape_string เหมือนกันกับ mysql_real_escape_string แต่ต่างกันตรงที่ mysql_real_escape_string จะใช้ db connection (เดาว่าไปทำใน db ตามที่คุณ icez บอก) และ escape string ตาม character set ปัจจุบัน

อ้างถึง
$db="databasename";
mysql_connect("localhost","username","password");
mysql_select_db($db);


$sql = "select * from table";
$table = mysql_db_query($db,$sql);
$tablerow = mysql_num_rows($table);

$a=0;
while($a < $tablerow){
$result = mysql_fetch_array($table);
echo $result['field'];
$a++;
}

ใช้แบบนี้ก็น่าจะดีกว่านะครับ

อ้างถึง
$db="databasename";
mysql_connect("localhost","username","password");
mysql_select_db($db);


$sql = "select * from table";
$table = mysql_db_query($db,$sql);

while(($result = mysql_fetch_array($table)) !== false) {
echo $result['field'];
}

บันทึกการเข้า

icez
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 296
ออฟไลน์ ออฟไลน์

กระทู้: 2,876



ดูรายละเอียด
« ตอบ #31 เมื่อ: 11 มกราคม 2008, 14:58:17 »

อ้างถึง
$db="databasename";
mysql_connect("localhost","username","password");
mysql_select_db($db);


$sql = "select * from table";
$table = mysql_db_query($db,$sql);
$tablerow = mysql_num_rows($table);

$a=0;
while($a < $tablerow){
$result = mysql_fetch_array($table);
echo $result['field'];
$a++;
}


ส่วน mark สีแดงคือจุดที่เสียการประมวลผลไปโดยเปล่าประโยชน์ครับ

mysql_db_query ช้ากว่า mysql_query นะครับ
กรณีที่ สั่ง mysql_select_db() ไปแล้ว ไม่สมควรใช้คำสั่ง mysql_db_query อีกครับ
สาเหตุมันเพราะ
mysql_db_query จะส่งคำสั่ง
USE $database
ไปที่ mysql ทุกครั้งที่ทำ query
จะทำให้ mysql ต้องประมวลผลเปลี่ยนฐานข้อมูลทุกครั้งที่ทำงาน เปลือง process ที่ mysql ครับ


แก้ใหม่จะได้ประมาณนี้


อ้างถึง
$db="databasename";
mysql_connect("localhost","username","password") or die("can't connect to mysql : ". mysql_error());
mysql_select_db($db) or die("can't select database : ". mysql_error());


$table = mysql_query("select * from table");

if ($table && mysql_num_rows($table) > 0) {
  while($result = mysql_fetch_array($table)){
    echo $result['field'];
  }
}

ตัวสีฟ้าเป็นส่วนของ error correction & preservation ครับ
เพื่อให้ไม่ต้องประมวลผล script ด้านล่างเมื่อเจอ error ที่ทำให้ทำงานต่อไม่ได้ หรือไม่ครบตามเงื่อนไข
« แก้ไขครั้งสุดท้าย: 11 มกราคม 2008, 15:00:35 โดย icez » บันทึกการเข้า

THZHost SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ
hurahura
สมุนแก๊งเสียว
*

พลังน้ำใจ: 20
ออฟไลน์ ออฟไลน์

กระทู้: 867



ดูรายละเอียด
« ตอบ #32 เมื่อ: 11 มกราคม 2008, 16:10:09 »

โอ้ว ขอบคุณมากๆเลยครับ ได้ความรู้อีกเพียบเลย




ขอถามต่อ
มีใครเคยเขียน forum เองบ้างหรือเปล่าครับ

ผมเคยเขียนในลักษณะแบบที่ พอผู้ใช้มาลงข้อความผมก็จะแปลงจาก bbcode เป็น html code แล้วเก็บลง database เวลาจะแสดงผลก็เรียกมาแสดงได้เลย

แต่มันมีปัญหาตรงที่ว่าเวลาอยากเปลี่ยนแปลงการแสดงผลอะไรมันลำบากเพราะต้องไปแก้ที่ database ผมเลยลองโหลดพวก ipb smf  phpbb อะไรพวกนี้มาแกะดู สังเกตุว่าเขาจะเก็บข้อมูลเป็น bbcode เลย นั่นแปลว่า เขาจะต้องนำข้อมูลไปแก้จาก bbcode เป็น html cold ในทุกๆครั้งที่แสดงผล ผมก็เลยสงสัยว่าทำแบบนั้น เครื่องไม่ทำงานหนักแย่เหรอ 

เคยคิดว่าจะใช้พวก javascript AJAX ทำการแปลงข้อมูลแทน เพราะมันทำงานฝั่งผู้ใช้ เครื่อง server เราจะได้ไม่ต้องทำงานหนัก แต่ก็ไม่รู้ว่าจะมีข้อเสียอะไรบ้าง อาจมีปัญหากับ bot ที่จะเข้ามาเก็บเว็บ เพราะ bot มันอ่าน javascript ไม่เป็น เลยยังไม่ได้ทำ

ไม่ทราบใครพอมีแนวคิดเรื่องนี้บ้างครับ
« แก้ไขครั้งสุดท้าย: 11 มกราคม 2008, 16:32:24 โดย hurahura » บันทึกการเข้า
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,459



ดูรายละเอียด เว็บไซต์
« ตอบ #33 เมื่อ: 11 มกราคม 2008, 16:55:56 »

เรื่องการแปลง bbcode มันเป็นเรื่องจำเป็นครับ

ยังไงก็ต้องทำแบบนั้น
เพราะถ้าเรามาคิดระยะสั้นๆ ว่า "ทีเดียวจบ"
กรณี smf เป็นโครงการระยะยาว แล้วเกิดมีการต่อเติม มันจะแก้ลำบากครับ

บางครั้งเราก็ต้องยอมเสียเรื่องบางเรื่อง เพื่อเรื่องอีกเรื่องหนึ่งก็มีครับ
บันทึกการเข้า

icez
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 296
ออฟไลน์ ออฟไลน์

กระทู้: 2,876



ดูรายละเอียด
« ตอบ #34 เมื่อ: 11 มกราคม 2008, 17:19:45 »

พูดถึงตัว parse bbcode หรอครับ
php มันไป call API ภาษา C ครับ (คำสั่ง preg_replace) แทบไม่กิน resource เลย
สบายๆ ฮะ เขียน engine ก่อนประมวลผลให้ดีๆ แค่นั้นแหละ


ถ้ากลัวหนักมาก... ก็แยก 2 field ซะ... field นึงเป็น parsed data อีก field เป็น original post
เวลาแก้ไขก็แก้เข้า original post แล้ว parse เข้าไปเก็บใน parsed data

แต่วิธีนี้... เปลืองฮะ
ทำ cache ผ่าน memcache เอาดีกว่า
แต่ถ้าคนเข้าเว็บไม่ถึงขนาดที่ วินาทีละครั้งหรือมากกว่า ก็ไม่มีประโยชน์อะไรที่จะต้องทำครับ
« แก้ไขครั้งสุดท้าย: 11 มกราคม 2008, 17:23:26 โดย icez » บันทึกการเข้า

THZHost SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ
hurahura
สมุนแก๊งเสียว
*

พลังน้ำใจ: 20
ออฟไลน์ ออฟไลน์

กระทู้: 867



ดูรายละเอียด
« ตอบ #35 เมื่อ: 11 มกราคม 2008, 17:40:16 »

อาวพวกคำสั่งพวกนี้

ereg(), ereg_replace(), preg_replace()


มันไม่กินเครื่องหรอกหรือครับ ไอ้ผมก็หลงนึกว่าคำสั่งประเภทนี้มันหนักเครื่องมากซะอีก

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

ถ้าไม่หนัก แบบนี้ก็สบายหน่อย จะได้ไม่ต้องมากังวลเรื่องนี้อีก  Smiley

ขอบคุณมากครับ

=================================
อาวกำ แก้ข้อความแล้วเหรอ

ผมก็คิดว่าคงต้องทำแบบนั้นเหมือนกัน เพิ่มมาอีก field ไว้เก็บส่วนที่แสดงผลได้เลย แต่นั้นหมายถึง database จะมีขนาดใหญ่ขึ้นเกือบเท่าตัวเลยนะเนี่ย


ปล. ไอ้คนใช้บอร์ดเว็บผมนี่มันก็ยังไงนะ มี chatroom ให้ใช้ ก็ไม่ใช้กัน ดันจะใช้ board มา chat คุยกัน แล้วก็ refresh กันสนุกเลย ไม่สงสารเครื่องมั่ง


« แก้ไขครั้งสุดท้าย: 11 มกราคม 2008, 17:47:32 โดย hurahura » บันทึกการเข้า
icez
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 296
ออฟไลน์ ออฟไลน์

กระทู้: 2,876



ดูรายละเอียด
« ตอบ #36 เมื่อ: 11 มกราคม 2008, 17:53:41 »

ตระกูล ereg น่ะเปลืองครับ แต่ preg ไม่ค่อยเปลืองเท่าไหร่
บันทึกการเข้า

THZHost SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ
hurahura
สมุนแก๊งเสียว
*

พลังน้ำใจ: 20
ออฟไลน์ ออฟไลน์

กระทู้: 867



ดูรายละเอียด
« ตอบ #37 เมื่อ: 11 มกราคม 2008, 18:00:23 »

ตระกูล ereg น่ะเปลืองครับ แต่ preg ไม่ค่อยเปลืองเท่าไหร่

อาวเหรอครับ ผมนึกว่ามันประเภทเดียวกัน



อีกคำถามนะครับ

ฟังชั้นที่ยังไม่ได้ใช้ เครื่องมันจะอ่านหรือเปล่าครับ หรือมันจะมาอ่านก็ต่อเมื่อมีการเรียกใช้

สมมุตเว็บเรามีฟังชั้นอยู่หลายกลุ่ม เลยเก็บไว้หลายไฟล์ แบบนี้

function_text.php
function_database.php
function_board.php
function_checkdata.php

เวลาเรียกใช้ก็ include เฉพาะ กลุ่มของฟังชั้นที่ต้องใช้ในหน้านั้นๆ

แต่ทีนี้มันยุ่งยาก ผมอย่างทำให้โค้ดมันเรียบง่าย เลยเอาทุกฟังชั้นรวมเข้าเป็นไฟล์เดียว แล้วทุกหน้าก็ include ไฟล์นี้ไฟล์เดียวพอ เหมือนกันทุกหน้า

แต่มันก็จะติดฟังชั้นในกลุ่มที่ไม่ต้องใช้ในหน้านั้นๆมาด้วย ไม่ทราบว่าฟังชั้นที่ไม่ได้เรียกใช้นี่มันจะประมวลผลด้วยหรือเปล่าหรือว่ามันจะอ่านข้ามไปเลย
บันทึกการเข้า
icez
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 296
ออฟไลน์ ออฟไลน์

กระทู้: 2,876



ดูรายละเอียด
« ตอบ #38 เมื่อ: 11 มกราคม 2008, 18:47:48 »

มันอ่านเก็บไว้ครับ

จะเรียกใช้เมื่อไหร่ถึงจะมีการประมวลผล
บันทึกการเข้า

THZHost SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,459



ดูรายละเอียด เว็บไซต์
« ตอบ #39 เมื่อ: 11 มกราคม 2008, 18:57:39 »

เคยได้ยินมาบ้างว่า php จริงๆ
คือเป็นโค้ดคำสั่ง แต่พอมีการใช้งานจริงๆ ถึงจะมีการแปลงเป็น opcode เพื่อมาโปรเซสอีกที

ถ้าไม่ได้มีการทำงานในส่วนไหน มันก็ยังคงเป็น php เหมือนเดิม

มั้งนะ  Grin
บันทึกการเข้า

หน้า: 1 [2] 3   ขึ้นบน
พิมพ์