Facebook Game Rank via AppData by

26
Feb
2

Sorry, this entry is only available in ไทย.

(ไทย) สร้าง Disco ball 3d ใน Illustrator by

24
Feb
0

Sorry, this entry is only available in ไทย.

หากต้องการเก็บค่าตัวแปรที่เป็น array ลงใน Database หรือ ส่งค่าไปยังหน้าอื่นโดยผ่าน cookie หรือ session by

23
Feb
0

หากว่าเราเก็บข้อมูลจากหลายอย่างของ user เอาไว้ เช่น user เลือกซื้อของอะไร จำนวนกี่ชิ้น สีอะไร เราก็อาจจะใช้ array เข้ามาช่วยในการเก็บ แล้วถ้าเราต้องการส่งค่าข้ามไปอีกหน้าล่ะ จะทำอย่างไร คำตอบก็คือ เขียนใส่ cookie, session ตามแต่สะดวก
ถ้าตัวอย่างเรามีข้อมูลดังนี้
$shop = array(
’1′ => array(‘type’=>’n1′, ‘color’ => ‘red’, ‘quantity’ => ’3′),
’2′ => array(‘type’ =>’n2′, ‘color’ => ‘blue’, ‘quantity’ => ’4′)
);
เป็น array 2 มิติ แบบนี้ เรา แล้วจะเก็บอย่างไรให้ง่าย และไม่งง หลายคนคงบอกว่า ก็เก็บ cookie แบบ array ไง แล้ว วน loop เขียน และ วน loop อ่านขึ้นมา หรือกระทั่ง session ก็ตาม loop เขียนลงไปตามชื่อตัวแปรที่เราสร้างขึ้นมา 10 ชนิด ก็ได้ cookie 10 ชุดเลย อีกทั้ง เราจะรู้ได้อย่างไรว่า type ของ ตัวแปรที่เก็บลงไป แล้วอ่านขึ้นมา จะยังคงเหมือนเดิม เพราะว่าถ้า วน loop ตามปกติ เราก็ต้องคอยมาดักว่าเป็น quantity หรือเปล่า ถ้าใช่ก็กำหนดให้เป็น int คงเสียเวลามากเลย
แต่จะง่ายกว่ามั้ย หากว่าเราเปลี่ยนมาใช้วิธีง่าย แค่ function เดียว เก็บค่า และยังอ่านออกมาได้โดยคงสภาพข้อมูลที่เหมือนเดิม
นั่นคือ serialize()
วิธีการใช้ก็ง่ายมาก
$shop = serialize($shop);
เสร็จแล้ว แล้วเราก็เอา $shop ไปเก็บใน cookie หรือ session ได้เลย แค่นี้เองครับ เพราะว่าหลังจากที่ผ่านการ serialize มาแล้ว เราจะได้เพียง plain text หรือตัวหนังสือธรรมดา 1 ชุดเท่านั้นเอง
และเมื่อเราจะอ่านค่าและแปลงกลับมาใช้อีกครั้งหนึ่ง เราก็แค่ใช้
$shop = unserialize($shop);
เท่าที่ $shop เราก็จะกลับมามีหน้าตาเหมือนเดิมเปี้ยบเลย
แต่ทั้งนี้อาจจะต้องระวังการเอาไปเก็บใน cookie เพราะว่าการเก็บเป็น plain text แบบนี้จะทำให้ สามารถ แก้ไขได้ง่ายมาก อีกทั้งหลังจากการ serialize แล้วจะทำให้มี header ที่มากขึ้นด้วย แนะนำให้เก็บเป็น session หรือ database จะดีกว่าครับ

Filed under: Uncategorized

วิธีแก้ปัญหา serialize กับ unserialize ที่อยากแนะนำ by

23
Feb
1

บางครั้งที่เราใช้ function serialize ใน php เพื่อแปลงข้อมูลเป็น text ไปแล้ว แต่เมื่อจะ แปลงกลับด้วย unserialize กลับเจอ error ประมาณนี้ unserialize() [function.unserialize]: Error at offset 297 of 300 bytes โดยตัวเลขอาจจะไม่เหมือนกัน แต่ว่าโดยเนื้อหาก็เหมือนกันนั่นล่ะ
หลังจากที่หาข้อมูลอยู่นาน ก็พบได้ว่า ปัญหาที่แท้จริงแล้วก็คือ format ของ text ที่จะเอามาแปลงกลับโดยใช้ unserialize ไม่ถูกต้อง
หากเราเคยทดสอบ หรือสังเกตุจะเห็นว่า text ที่เราได้จากการแปลงโดยใช้ serialize นั้น จะมีรูปแบบที่ตายตัวครับ นั่นเป็นสาเหตุที่ว่าทำไมจึงไม่ปลอดภัยเมื่อเราเก็บข้อมูลในรูปแบบ serialize ธรรมดา และด้วยความที่เป็นรูปแบบตายตัว ดังนั้น หากมีการเปลี่ยนแปลงที่ string เพียงแค่จุดเดียวเท่านั้นก็จะทำให้เราไม่สามารถแปลงกลับโดยใช้ unserialize ได้ทันที สำหรับวิธีแก้ปัญหาที่ดีที่สุด สำหรับปัญหา unserialize() [function.unserialize]: Error at offset 297 of 300 bytes ก็คือการตรวจสอบ string โดยอาจจะทำการ echo , print_r หรืออะไรก็ได้ เพื่อหาว่าข้อมูลหรือตัวหนังสือไหน แปลก หรือเพี้ยน หรือว่ามีอะไรขาด หรือเกินจากค่าที่ควรจะเป็นหรือเปล่า
ตัวอย่างเท่าที่เคยเจอมา ก็จะมีแบบว่า จากเครื่องหมาย ” ก็เพิ่มมาเป็น \” (ถูกเติมเข้ามาในกระบวนการบันทึกลงฐานข้อมูล) หรือว่า text ที่จะเอามาแปลงนั้นไม่ครบ คือขาดไปตัวเดียวก็มี error แล้ว เป็นต้น
ดังนั้น วิธีการที่ดีที่สุดก็คือ ลองทดสอบว่า serialize แล้วดูว่าได้ค่าอะไร จากนั้น ลองเอาไปเปรียบเทียบกับค่า ที่ error ว่าหน้าตาเหมือนหรือว่าต่างกันตรงไหนอย่างไร ทำไมจึง error เท่านี้ล่ะครับ แก้ bug ได้แน่นอน

Filed under: Uncategorized

(ไทย) กระจกแตกก ก ก [Ai] by

13
Feb
0

Sorry, this entry is only available in ไทย.

Filed under: Graphic
 เราชนะรอบ 4 | ยืมเงิน 3000 ด่วน | แอพกู้เงิน | แอพเงินด่วน | สินเชื่อออนไลน์อนุมัติทันที | Site Map | กู้เงินก้อน | กระเป๋าตัง | thisshop และ ยืมเงินฉุกเฉิน 5000 ด่วน