ปัญหา Cannot modify header information

Sunday, June 21st, 2009

พอดีผมมีปัญหาการเรียกใช้ header ของ php ครับ ก็เลยไปถามอาจารย์กู เลยไปเจอมาครับ ก็เลยขอเก็บไว้เป็น ความรู้และแบ่งปั่นกันครับ ปัญหา Cannot modify header information คงเคยประสบาสำหรับคเขียนเว็บด้วยภาษา PHP และบรรดา admin ที่ config server คงจะเจอกันบ่อย ซึ่งลักษณะ ข้อความแสดงการผิดพลาด มีลักษณะดังข้างล่าง Warning: Cannot modify header information – headers already sent by (output started at /home/somewhere/somefile.php:10) in /home/somewhere/somefile.php on line 20 การแก้ไขปัญหา ให้แก้ไขที่ตัวแปร output_buffering ที่อยู่ในไฟล์ php.ini โดยปกติแล้วบางระบบปฏิบัติการ จะตั้งค่าให้ output_buffering = Off ซึ่งเราสามารถแก้ไขเป็น […]

php-ตรวจสอบ ip จริง

Sunday, June 7th, 2009

ในบางครั้งเราต้องการตรวจสอบคนที่เข้ามาใช้เวปเรา และโดยส่วนมากแล้วจะตรวจสอบโดย check IP Address ซึ่งถ้าเราใช้ <?php $ip=getenv(REMOTE_ADDR); print “IP Address is $ip”; ?> และเราก็จะได้ IP Address มา แต่ก็ถ้าเครื่องนั้น ๆ ใช้ Proxy Server เราจะได้ IP Address ของ Proxy มาแทน ซึ่งเราควรแก้ไข code ที่ใช้เป็น <?php if (getenv(HTTP_X_FORWARDED_FOR)) { $ip=getenv(HTTP_X_FORWARDED_FOR); } else { $ip=getenv(REMOTE_ADDR); } print “IP Address is $ip”; ?> จะทำให้เราได้ IP Address ของเครื่องนั้นจริง ๆ

แปลง 1 ให้เป็น 00001

Thursday, May 28th, 2009

เรื่องของเรื่องของผมคือ ผมต้องการให้ค่าของผมที่ได้ สมมติ 1 ไปเป็น 00001 แบบว่าผมก็ไม่ค่อยได้เล่น php ก็เลยงง(ถ้าเป็น Java สบาย อิอิ) ก็เลยไปเจอค่ำสั่งนี้เข้า sprintf(รูปแบบ string, ตัวแปร [มีหลายตัวได้]) และนี่ก็วิธีใช้คำสั่งครับ <?php $value = 1; echo $value.” ไปเป็น “.sprintf(“%05d”, $value).”; ?> ผลลัพธ์ที่ได้ ก็คือ 00001 เห็น แบบนี้แล้ว คงเข้าใจได้ในทันทีละครับ ว่าฟังก์โค้ดนี้ จะทำการแปลงค่าตัวเลขใดๆ ให้ออกมาในรูปแบบของตัวเลข 5 หลัก โดยมีเลข 0 นำหน้า จนกว่าจะครบ 5 หลัก เช่น รับค่า 1 ที่เป็นเลขหลักเดียวเข้ามา มันก็จะเติม 0 นำหน้าไป 4 ตัว ให้เป็น […]