คลังเก็บบล็อก

ป้องกัน Copy Paste


ถ้าต้องการไม่ให้ user คัดลอกช้อมูลมาวางในช่องยืนยันอีเมล์ เราสามารถใช้คุณลักษณะ (attribute) onpaste ของเท็ก อินพุตช่วยป้องกันได้ ตามตัวอย่าง

<input type="text" name="confrimEmail" autocomplete="off" onDrag="return false;" onDrop="return false;" onPaste="return false;" />

แต่เนื่องจากโอเปร่าไม่สนับสนุนความสามารถนี้ (ตัวเดียว ?) ทำให้ต้องใช้จาว่าสคริปต์เต็มรูปแบบในการตรวจสอบ

<input type="text" name="confrimEmail" autocomplete="off" onDrag="return false;" onDrop="return false;" onPaste="return false;" onMouseDown="noRightClick(event);" onKeyDown="return noPaste(event);" />
<script type="text/javascript">
function noPaste(event)
{
	var pressedKey = String.fromCharCode(event.keyCode).toLowerCase();
	if (event.ctrlKey && pressedKey == 'v')
	{
		alert('Sorry, this functionality is disabled.');
		return false;
	}
}

function noRightClick(event)
{
	if (event.button==2)
	{
		alert("Right Click Not Allowed!");
	}
}
</script></a>
 

มี 2 ฟังก์ชั่นคือ

  1. noRightClick ป้องกันการคลิกขวาทุกชนิด
  2. noPaste ป้องกันการวางโดนใช้ชอร์ตคัต Shortcut,ชอร์ตคัต คนที่เคยเขียนเกมส์มาจะห็นว่าความจริง เราใช้แค่ event.ctrlKey ก็ตรวจจับการใช้ ปุ่ม control ได้แล้ว ภาษาหรือเครื่องแมค บางครั้งต้องใช้ปุ่มนี้ในการพิมพ์อักษรบางตัว ทำให้ต้องใช้ event.keyCode มาจับว่าเป็นการวางข้อความ Ctrl + V รึเปล่า

ว่างๆ ลองดัดแปลงเป็นตรวจจับการจับภาพหน้าจอหรือพิมพ์หน้าเว็บดูนะครับ
ดูเพิ่มเติม

Advertisements

ตัวแปร get ใน javascript


ในภาษา Javascript ไม่มี function ที่ทำหน้าที่รับตัวแปรจาก URL ดังนันจึงต้องใช้วิธีตัด string ทั้งหมด 3 ครั้ง

  1. แยกส่วนตัวแปรออกมา (หลังเครื่องหมาย ?)
  2. แยกตัวแปรออกเป็นชุดๆ (คั่นโดย &)
  3. แยกตัวแปรและค่าออกจากกัน (คั่นโดย =)
	
function getURIParams(uri)
{
    var params = [], hash;
    var hashes = uri.slice(uri.indexOf('?') + 1).split('&');
    for(var a = 0; a < hashes.length; a++)
    {
        hash = hashes[a].split('=');
        params[hash[0]] = hash[1];
    }
    return params;
}

ตัวอย่างวิธีใช้

uri = document.location
params = getURIParams(uri);
msg = '';
for(index in params)
{
	msg = msg+'\n'+index+'='+params[index]; 
}
alert(msg);

ตอน test อย่าลืมใส่ตัวแปรใน url ต่อท้ายด้วย เช่น
test.html?one=1&two=2
ก่อน refresh

%d bloggers like this: