Latest web development tutorials
×

PHP หลักสูตร

PHP หลักสูตร PHP แนะนำโดยย่อ PHP ติดตั้ง PHP ไวยากรณ์ PHP ตัวแปร PHP echo/print PHP ชนิดข้อมูล PHP คงที่ PHP เชือก PHP ผู้ประกอบการ PHP If...Else PHP Switch PHP แถว PHP เรียงลำดับอาร์เรย์ PHP Superglobals PHP While การไหลเวียน PHP For การไหลเวียน PHP ฟังก์ชัน PHP ตัวแปรเมจิก PHP namespaces PHP เชิงวัตถุ

PHP ฟอร์ม

PHP ฟอร์ม PHP รูปแบบการตรวจสอบสิทธิ์ PHP ฟอร์ม - ฟิลด์ที่จำเป็น PHP ฟอร์ม - อีเมลยืนยันและ URL PHP ตัวอย่างสมบูรณ์แบบ PHP $_GET ตัวแปร PHP $_POST ตัวแปร

PHP การสอนที่ทันสมัย

PHP อาร์เรย์หลายมิติ PHP วันที่ PHP บรรจุ PHP ไฟล์ PHP อัปโหลดไฟล์ PHP Cookie PHP Session PHP E-mail PHP ความปลอดภัย E-mail PHP Error PHP Exception PHP กรอง PHP กรองขั้นสูง PHP JSON

PHP 7 คุณสมบัติใหม่

PHP 7 คุณสมบัติใหม่

PHP ฐานข้อมูล

PHP MySQL แนะนำโดยย่อ PHP MySQL สัมพันธ์ PHP MySQL การสร้างฐานข้อมูล PHP MySQL สร้างตารางข้อมูล PHP MySQL แทรกข้อมูล PHP MySQL ใส่ข้อมูลหลาย PHP MySQL งบเตรียม PHP MySQL อ่านข้อมูล PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX แนะนำโดยย่อ AJAX PHP AJAX ฐานข้อมูล AJAX XML AJAX ค้นหาแบบ Real-time AJAX RSS Reader AJAX โหวต

PHP คู่มืออ้างอิง

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP การประมวลผลภาพ PHP RESTful

กรอง PHP

กรอง PHP จะใช้ในการตรวจสอบและกรองข้อมูลจากแหล่งที่ไม่ปลอดภัยเช่นการป้อนข้อมูลของผู้ใช้


กรอง PHP คืออะไร?

กรอง PHP จะใช้ในการตรวจสอบและกรองข้อมูลจากแหล่งที่ไม่ปลอดภัย

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

ขยายตัวกรอง PHP ถูกออกแบบเพื่อให้การกรองข้อมูลได้ง่ายขึ้นและเร็วขึ้น


ใช้ตัวกรองทำไม?

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

คุณควรกรองข้อมูลภายนอก!

การกรองการป้อนข้อมูลเป็นสิ่งสำคัญที่สุดปัญหาโปรแกรมรักษาความปลอดภัย

เป็นข้อมูลภายนอกอะไร?

  • การป้อนข้อมูลจากแบบฟอร์ม
  • คุ้กกี้
  • ข้อมูลบริการเว็บ
  • ตัวแปรเซิร์ฟเวอร์
  • ผลการสืบค้นฐานข้อมูล

ฟังก์ชั่นและตัวกรอง

เพื่อกรองตัวแปรใช้หนึ่งในฟังก์ชั่นกรองต่อไปนี้:

  • filter_var () - การกรองตัวแปรเดียวโดยตัวกรองที่ระบุ
  • filter_var_array () - การกรองหลายตัวแปรโดยฟิลเตอร์ที่เหมือนกันหรือแตกต่างกัน
  • filter_input - รับตัวแปรหนึ่งและกรองมัน
  • filter_input_array - รับตัวแปรมากขึ้นและโดยตัวกรองเหมือนกันหรือแตกต่างกันเพื่อกรองพวกเขา

ในตัวอย่างต่อไปนี้เราจะใช้ filter_var () ฟังก์ชันตรวจสอบจำนวนเต็ม:

<?php
$int = 123;

if(!filter_var($int, FILTER_VALIDATE_INT))
{
	echo("不是一个合法的整数");
}
else
{
	echo("是个合法的整数");
}
?>

รหัสข้างต้นใช้กรอง "FILTER_VALIDATE_INT" เพื่อกรองตัวแปร ตั้งแต่จำนวนเต็มถูกต้องตามกฎหมายดังนั้นรหัสข้างต้นออกจะ:

ถ้าเราพยายามที่จะใช้ตัวแปรที่ไม่ใช่จำนวนเต็ม (เช่น "123abc") เป็นเอาท์พุท: "จำนวนเต็มไม่ถูกต้อง"

สำหรับรายการที่สมบูรณ์ของฟังก์ชั่นและตัวกรองเยี่ยมชม PHP คู่มือกรองอ้างอิง


การตรวจสอบและการฆ่าเชื้อ

มีสองชนิดของฟิลเตอร์คือ:

การตรวจสอบฟิลเตอร์:

  • ใช้ในการตรวจสอบผู้ใช้ป้อน
  • กฎระเบียบที่เข้มงวดรูปแบบ (เช่น URL หรือที่ E-Mail ตรวจสอบ)
  • หากประสบความสำเร็จชนิดตอบแทนที่คาดหวังถ้ามันล้มเหลวที่จะกลับเท็จ

ฆ่าเชื้อตัวกรอง:

  • มันใช้ในการอนุญาตหรือห้ามสตริงอักขระที่ระบุ
  • ไม่มีกฎรูปแบบข้อมูล
  • เสมอกลับสตริง

ตัวเลือกและธง

ตัวเลือกและธงที่ใช้ในการเพิ่มตัวเลือกเพิ่มเติมในการกรองฟิลเตอร์ที่ระบุ

ฟิลเตอร์ที่แตกต่างกันมีตัวเลือกที่แตกต่างกันและธง

ในตัวอย่างต่อไปนี้เราจะใช้ filter_var () และ "min_range" และ "max_range" ตัวเลือกในการตรวจสอบเป็นจำนวนเต็ม:

<?php
$var=300;

$int_options = array(
	"options"=>array
	(
		"min_range"=>0,
		"max_range"=>256
	)
);

if(!filter_var($var, FILTER_VALIDATE_INT, $int_options))
{
	echo("不是一个合法的整数");
}
else
{
	echo("是个合法的整数");
}
?>

เช่นโค้ดข้างต้นเป็นตัวเลือกที่เกี่ยวข้องจะต้องมีการวางไว้ในอาร์เรย์ที่เรียกว่า "ตัวเลือก" ใน ถ้าธงไม่จำเป็นต้องใช้ภายในอาร์เรย์

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

不是一个合法的整数

สำหรับรายการที่สมบูรณ์ของฟังก์ชั่นและตัวกรองเยี่ยมชม PHP คู่มือกรองอ้างอิง คุณสามารถดูตัวเลือกที่ใช้ได้สำหรับแต่ละตัวกรองและธง


การตรวจสอบการป้อนข้อมูล

ลองตรวจสอบข้อมูลจากแบบฟอร์ม

เราต้องทำสิ่งแรกคือการยืนยันว่าข้อมูลของท่านเรากำลังมองหา

จากนั้นเราจะใช้ filter_input () ฟังก์ชั่นในการกรองข้อมูลที่ป้อน

ในตัวอย่างด้านล่างที่ตัวแปร "อีเมล" จะถูกส่งผ่านไปยังหน้าของ PHP:

<?php
if(!filter_has_var(INPUT_GET, "email"))
{
	echo("没有 email 参数");
}
else
{
	if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL))
	{
		echo "不是一个合法的 E-Mail";
	}
	else
	{
		echo "是一个合法的 E-Mail";
	}
}
?>

ตัวอย่างของผลลัพธ์ข้างต้นมีดังนี้

ตัวอย่างอธิบาย

ตัวอย่างข้างต้นมีตัวแปรจาก (อีเมล) "รับ" วิธีการของการถ่ายโอน:

  1. ตรวจสอบสถานะของ "อีเมล" ตัวแปร "รับ" ชนิด
  2. หากมีตัวแปรในการตรวจสอบไม่ว่าจะเป็นที่อยู่อีเมลที่ถูกต้อง

การป้อนข้อมูลการทำให้บริสุทธิ์

ลองให้ชัดเจนขึ้นมาจาก URL แบบฟอร์ม

ครั้งแรกของทั้งหมดที่เราต้องยืนยันว่าข้อมูลของท่านเรากำลังมองหา

แล้วเรา sanitize ข้อมูลเข้า filter_input () ฟังก์ชัน

ในตัวอย่างด้านล่างที่ตัวแปร "URL" จะถูกส่งผ่านไปยังหน้าของ PHP:

<?php
if(!filter_has_var(INPUT_GET, "url"))
{
	echo("没有 url 参数");
}
else
{
	$url = filter_input(INPUT_GET, 
	"url", FILTER_SANITIZE_URL);
	echo $url;
}
?>

ตัวอย่างอธิบาย

ตัวอย่างข้างต้นโดยตัวแปรหนึ่ง (URL) "ได้รับ" วิธีการส่ง:

  1. ตรวจสอบสถานะของ "URL" ตัวแปร "รับ" ชนิด
  2. ถ้าตัวแปรการป้อนข้อมูลที่มีอยู่ของตนให้บริสุทธิ์ (ลบอักขระที่ผิดกฎหมาย) และจะเก็บไว้ในตัวแปร $ URL ไป

ถ้าตัวแปรเป็นสตริงเช่นนี้ "http://www.ruaanoob.com/" ตัวแปร $ URL หลังจากที่บริสุทธิ์จะเป็นดังนี้:



ใหญ่ของกรองขาเข้า

รูปแบบที่มักจะประกอบด้วยช่องใส่หลาย เพื่อหลีกเลี่ยงการ filter_var หรือฟังก์ชั่นที่เรียกว่า filter_input ซ้ำ ๆ เราสามารถใช้ filter_var_array filter_input_array หรือฟังก์ชั่น

ในกรณีนี้เราจะใช้ filter_input_array () ฟังก์ชันการกรองสามตัวแปร GET ได้รับตัวแปรที่ได้รับคือชื่ออายุและที่อยู่ E-mail:

<?php
$filters = array
(
	"name" => array
	(
		"filter"=>FILTER_SANITIZE_STRING
	),
	"age" => array
	(
		"filter"=>FILTER_VALIDATE_INT,
		"options"=>array
		(
			"min_range"=>1,
			"max_range"=>120
		)
	),
	"email"=> FILTER_VALIDATE_EMAIL
);

$result = filter_input_array(INPUT_GET, $filters);

if (!$result["age"])
{
	echo("年龄必须在 1 到 120 之间。<br>");
}
elseif(!$result["email"])
{
	echo("E-Mail 不合法<br>");
}
else
{
	echo("输入正确");
}
?>

ตัวอย่างอธิบาย

ตัวอย่างข้างต้นมีตัวแปรสาม (ชื่ออายุและอีเมล) ส่งผ่าน "รับ" วิธีการ:

  1. ตั้งค่าอาร์เรย์ที่มีชื่อของตัวแปรที่ใช้ในการระบุตัวแปรและกรอง
  2. () ฟังก์ชั่นการป้อนพารามิเตอร์รวมทั้งตัวแปร GET และเพียงแค่ตั้ง filter_input_array อาร์เรย์โทร
  3. การตรวจสอบผล $ ตัวแปร "อายุ" และ "อีเมล" ตัวแปรเป็นสิ่งผิดกฎหมาย (หากมีการป้อนข้อมูลที่ผิดกฎหมายหลังการใช้งานฟังก์ชั่น filter_input_array () ตัวแปรเป็นเท็จ.)

filter_input_array () อาร์กิวเมนต์ที่สองฟังก์ชั่นที่สามารถอาร์เรย์หรือรหัสตัวกรอง

ถ้าพารามิเตอร์คือรหัสที่กรองแล้วกรองที่ระบุจะกรองทุกค่าอาร์เรย์การป้อนข้อมูล

ถ้าพารามิเตอร์นี้เป็นอาร์เรย์อาร์เรย์จะต้องปฏิบัติตามหลักเกณฑ์ดังต่อไปนี้:

  • ต้องเป็นอาเรย์ที่มีตัวแปรเป็นคีย์อาร์เรย์ (เช่น "อายุ" ตัวแปร)
  • ค่าของอาร์เรย์นี้จะต้องเป็น ID กรองหรือบทบัญญัติของตัวกรอง, ธงและตัวเลือกอาร์เรย์

โทรกลับใช้ตัวกรอง

โดยใช้ตัวกรอง FILTER_CALLBACK คุณสามารถเรียกฟังก์ชั่นที่กำหนดเองใช้มันเป็นตัวกรองที่จะใช้ ดังนั้นเราจึงมีการควบคุมที่สมบูรณ์มากกว่าการกรองข้อมูล

คุณสามารถสร้างฟังก์ชั่นของคุณเองหรือคุณสามารถใช้ฟังก์ชั่นที่มีอยู่ PHP

คุณจะพร้อมที่จะใช้ฟังก์ชั่นกรองตามบทบัญญัติที่ระบุวิธีการที่กำหนดไว้ตัวเลือก ในอาเรย์ที่มีชื่อ "ตัวเลือก"

ในตัวอย่างต่อไปนี้เราจะใช้ฟังก์ชั่นที่กำหนดเองของทุกคน "_" แปลงเป็นช่องว่าง:

<?php
function convertSpace($string)
{
	return str_replace("_", ".", $string);
}

$string = "www_w3big_com!";

echo filter_var($string, FILTER_CALLBACK,
array("options"=>"convertSpace"));
?>

ผลมาจากโค้ดข้างต้นดังต่อไปนี้:

ตัวอย่างอธิบาย

ตัวอย่างข้างต้นทั้งหมด "_" เป็น "".

  1. ที่จะสร้าง "_" จะถูกแทนที่ด้วย "." ฟังก์ชั่น
  2. filter_var () ฟังก์ชั่นการโทรซึ่งพารามิเตอร์กรอง FILTER_CALLBACK และอาเรย์ที่มีฟังก์ชั่นของเรา