Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > มี tips technic ดีๆมาฝากครับ เกี่ยวกับการเพิ่มแทกคำสั่งให้เนื้อหา (เหมาะสำหรับคนที่ทำฟอร์มเพื่อกรอกเนื้อหาในเว็บอย่างมาก)



 

มี tips technic ดีๆมาฝากครับ เกี่ยวกับการเพิ่มแทกคำสั่งให้เนื้อหา (เหมาะสำหรับคนที่ทำฟอร์มเพื่อกรอกเนื้อหาในเว็บอย่างมาก)

 



Topic : 051373



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์




http://www.okvee.net/2010/11/08/%E0%B9%80%E0%B8%9E%E0%B8%B4%E0%B9%88%E0%B8%A1%E0%B8%84%E0%B8%B3%E0%B8%AA%E0%B8%B1%E0%B9%88%E0%B8%87%E0%B9%83%E0%B8%AB%E0%B9%89%E0%B9%80%E0%B8%99%E0%B8%B7%E0%B9%89%E0%B8%AD%E0%B8%AB%E0%B8%B2/

การเพิ่มคำสั่งให้กับเนื้อหา จะว่าไปแล้วก็คล้ายๆกับ BBcode นั่นแหละ แต่นอกจากจะใช้ประโยชน์ใน forum แล้วยังเอามาทำประโยชน์อย่างอื่นได้ด้วย.

ยกตัวอย่างเช่น มีการทำหน้าอัปโหลดวิดีโอขึ้นมา แต่ทาง Shared hosting ที่เราใช้ไม่มี ffmpeg ที่สามารถแปลงวิดีโอเป็นภาพได้ไว้ให้ใช้ เราก็ต้องสร้างภาพ screenshot เอาเอง.
ในกรณีนี้การแทรกคำสั่งให้เนื้อหาเป็นวิธีที่ง่ายที่สุด เพราะไม่ต้องสร้างฟิลด์ในฐานข้อมูลเพิ่มเติม ไม่ต้องสร้างฟอร์มเพิ่มเติมอะไรอีก แทรก URL screenshot ลงไปในคำอธิบายนั่นแหละ.

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

หากนึกออกแล้ว ก็หวังว่าผู้อ่านจะมีจินตนาการเอาไปใช้งานอย่างอื่นได้อีกมากมาย…
เรามาดูโค้ดกัน. [Download code ตัวอย่างจาก URL ข้างบน]

Code (PHP)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test tag cmd</title>
</head>

<body>
<h1>test tag cmd</h1>
<p>eg. [cmd screenshot=http://www.xxx.xxx/img.jpg width=500]</p>
<?php $act = ( isset($_GET['act']) ? $_GET['act'] : ""); ?>
<?php if ( $act == null ): ?>
<form method="post" action="testtagcmd.php?act=post">
<textarea name="cmd" rows="7" cols="60"><?php echo @$_POST["cmd"]; ?></textarea>
<input type="submit" value="submit" style="display:block;" />
</form>
<?php else: ?>
<a href="testtagcmd.php">back</a>
<hr />
<?php
$cmd = ( isset($_POST["cmd"]) ? $_POST["cmd"] : "");
echo "<p><b>input cmd: ".htmlentities($cmd, ENT_QUOTES, "UTF-8")."</b></p>";
if ( $cmd != null ) {
	$lkupcmd = lookupcmd($cmd);
	echo "<pre>";
	print_r($lkupcmd);
	echo "</pre>";
	if ( isset($lkupcmd['screenshot']) ) {
		echo "screenshot = ".$lkupcmd['screenshot']['value']."<br />";
		echo "width = ".$lkupcmd['width']['value']."</p>";
	} else {
		echo "<p>\$lkupcmd['screenshot'] is NOT set</p>";
	}
}
?>
<?php endif; ?>
</body>
</html>
<?php
function lookupcmd($string = '', $name = '') {
	if ( $string == null ) {return null;}
	//if ( $name == null ) {return null;}
	if ( preg_match('/\[cmd (?<commands>.*)]/', $string, $out) ) {
		// found as $out['commands']
		$commands = preg_split('/ /', $out['commands']);
		foreach ( $commands as $key => $item ) {// $item is like name=value
			preg_match('/(?<name>\w+)=(?<value>.*)/', $item, $out2);
			$output[$out2['name']]['value'] = $out2['value'];
		}
		return $output;
	} else {
		// not found
		return null;
	}
}// lookupcmd
?>


ในส่วนของฟังก์ชั่น lookupcmd() จะทำการหาตัวเปิดคำสั่ง [cmd และตัวปิดคำสั่ง ] ให้เจอเสียก่อน preg_match(‘/\[cmd (?<commands>.*)]/’, $string, $out)

จากนั้นจึงเอาชุดคำสั่งที่เลาะออกมาแล้วมาแยกจากกันด้วยพื้นที่ว่าง (space) ซึ่งมันจะรองรับหลายๆคำสั่งในแทกเดียวกัน ไม่ต้องเขียนคำสั่งหลายๆที เขียนบรรทัดเดียวได้หลายคำสั่งเลย

พอแยกแล้วก็ทำการวนไปตามจำนวน เพื่อหาคำสั่ง=ค่าของมัน อีกทีหนึ่ง preg_match(‘/(?<name>\w+)=(?<value>.*)/’, $item, $out2);

แล้วก็จับยัดใส่ array $output[...] เพื่อจะได้ส่งคำสั่งไปได้พร้อมๆกันหมด เสร็จขั้นตอนในฟังก์ชั่น

การเรียกใช้งาน

กำหนดตัวแปรตัวหนึ่งให้เรียกไปยังฟังกชั่นตามนี้ $lkupcmd = lookupcmd($POST_['cmd']);

จากนั้นการเรียกใช้ก็เพียงเรียกตัวแปรนี้ออกมา echo $lkupcmd['screenshot']['value']; ซึ่งตรงคำว่า screenshot ก็คือสิ่งที่ผู้กรอกฟอร์มกำหนดลงไปนั่นเองว่า screenshot URL คืออะไร

สิ่งที่ต้องระวัง

นอกจากการใช้โค้ดนี้อย่างง่ายแล้ว ยังต้องระวังเรื่องของการกรอกฟอร์มเพื่อซุ่มโจมตี ซึ่งแน่นอนแม้ว่าจะมีแค่ echo $_POST['message']; แสดงสิ่งที่ผู้กรอกเขียนมาก็โดนโจมตีได้แล้ว

ยกตัวอย่างเช่น ผู้ใช้กรอกฟอร์มว่า <script>alert(‘ok’);</script> การ echo ไปบนหน้าเว็บเพจโดยไม่ผ่านการตรวจก่อน จะเปิดช่องว่างให้ใช้โจมตีได้ทันที (ตัวอย่างนี้เป็นแค่ alert ทักทายเท่านั้น)

ดังนั้นจึงต้องป้องกันการกรอกฟอร์มที่มีค่า <script> เข้ามา
ทั้งนี้ทั้งนั้นขอแนะนำให้หาความรู้เรื่องการป้องกันการโจมตีแบบ xss เพิ่มเติม.



Tag : PHP









ประวัติการแก้ไข
2010-11-09 10:00:10
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-11-09 08:23:20 By : mr.v View : 1061 Reply : 6
 

 

No. 1



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

link not found (on FF 3.0)






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-09 08:29:26 By : pjgunner.com
 


 

No. 2

Guest


โค้ดคุณ win ผิดครับไม่สามารถ redirect ภาษาไทยได้ ไม่เชื่อลอง copy url text ไปตรงๆ แทนคลิ้กดูครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-09 09:55:42 By : :)
 

 

No. 3



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


เดี้ยงเลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-09 10:00:48 By : mr.v
 


 

No. 5



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


http://www.okvee.net/ เท่านี้ก้อดูได้แล้วค่ะ
CONTENT ไม่ค่อยจะเคลื่อนไหวเท่าไรนะคะ ละก้อหมั่นเติมน้ามปลากะบีบมะนาวม่างดิคะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-09 20:13:59 By : blurEyes
 


 

No. 6



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


จะเคลื่อนไหวอะไรกันมากมายล่ะครับ ก็ไม่มีสาวสวยมาจิ๊จ๊ะในเว็บเหมือนอย่าง thaicreate นี่นา..

55 ล้อเล่นครับ

ผมงานเยอะ นานๆถึงจะหาเทคนิดดีๆมาฝากหน้าเว็บสักที เรื่องต่อไปผมกำลังคิดจะเขียนเกี่ยวกับการสร้าง email marketing เองแบบสวยๆไม่แคร์ใคร (html email)

รอว่างก่อน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-09 21:04:38 By : mr.v
 


 

No. 7



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

เดียวจัดการแก้ไขให้น่ะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-11-09 21:18:19 By : webmaster
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : มี tips technic ดีๆมาฝากครับ เกี่ยวกับการเพิ่มแทกคำสั่งให้เนื้อหา (เหมาะสำหรับคนที่ทำฟอร์มเพื่อกรอกเนื้อหาในเว็บอย่างมาก)
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่