Study/WebHacking

[PHP] strcmp ํ•จ์ˆ˜ ์ทจ์•ฝ์ 

mnzy๐ŸŒฑ 2024. 6. 20. 05:37

 

strcmp ํ•จ์ˆ˜ ์ž์ฒด๋Š” PHP์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

PHP์—์„œ strcmp ํ•จ์ˆ˜๋Š” ๋‘ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•˜์—ฌ ๊ฐ™์œผ๋ฉด 0์„, ๋‹ค๋ฅด๋ฉด 0์ด ์•„๋‹Œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

(strcmp($a, $b) ๋ฅผ ์‹คํ–‰ ํ•  ๋•Œ, $a๊ฐ€ ์ž‘์œผ๋ฉด ์Œ์ˆ˜, $b๊ฐ€ ์ž‘์œผ๋ฉด ์–‘์ˆ˜, ๊ทธ๋ฆฌ๊ณ  $a์™€ $b๊ฐ€ ๊ฐ™์œผ๋ฉด 0 ์ด ๋ฐ˜ํ™˜)

์ด ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด์˜ ๊ฐ’๊ณผ ํƒ€์ž…์„ ์—„๊ฒฉํ•˜๊ฒŒ(strict) ๋น„๊ตํ•œ๋‹ค. 

ํ•˜์ง€๋งŒ strcmp๋Š” ์ธ์ž๊ฐ’์œผ๋กœ ๋ฌธ์ž์—ด์ด ๋“ค์–ด์˜ค์ง€ ์•Š์„ ๊ฒฝ์šฐ(๋ฐฐ์—ด๋กœ ์ธ์ž๊ฐ’์„ ์ฃผ๊ฒŒ ๋  ๊ฒฝ์šฐ), NULL์„ ์ถœ๋ ฅํ•˜๋Š” ์ทจ์•ฝ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 

์˜ˆ์ œ 

GET ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญ์„ ๋ฐ›์•„ admin์ธ์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•  ๋•Œ,

test = 1์„ ์ฃผ๋ฉด no๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๊ณ  test=admin์„ ์ž…๋ ฅํ•˜๋ฉด yes๋ฅผ ์ถœ๋ ฅํ•  ๊ฒƒ์ด๋‹ค. 

<?php
	$test = $_GET['test'];
 
	if(!strcmp($test,"admin")){
		echo "yes";
	}
	else{
		echo "no";
	}
 
?>

 

(php 7.1 ๋ฒ„์ „์—์„œ ํ…Œ์ŠคํŠธ: http://phptester.net/)

 

์ด๋•Œ test๋ผ๋Š” ๋ฐฐ์—ด ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋„ฃ์–ด์ค€ ๋’ค strcmpํ•จ์ˆ˜๋กœ admin๊ณผ ๋น„๊ตํ•˜๋ฉด yes๋ผ๋Š” ๊ฐ’์ด ์ถœ๋ ฅ์ด ๋œ๋‹ค. 

๋ถ„๋ช… admin๊ฐ’์„ ์ฃผ์ง€ ์•Š์•˜๋Š”๋ฐ๋„ yes๊ฐ€ ์ถœ๋ ฅ๋œ ๊ฒƒ์ด๋‹ค. 

<?php
	$test = Array('asdfasdf');
 
	if(!strcmp($test,"admin")){
		echo "yes";
	}
	else{
		echo "no";
	}
?>

 

์‹ค์ œ๋กœ var_dump ๋ฅผ ์ด์šฉํ•ด์„œ strcmp($test, "admin") ์˜ ๋ฆฌํ„ด๊ฐ’์„ ๋ณด๋ฉด, test ๋ณ€์ˆ˜๊ฐ€ ๋ฐฐ์—ด์ผ ๋•Œ strcmp ๊ฒฐ๊ณผ๊ฐ€ null๊ฐ’์œผ๋กœ ์ถœ๋ ฅ์ด ๋œ๋‹ค. 

๊ทธ ์ด์œ ๋Š” strcmp ์ธ์ž๊ฐ’์œผ๋กœ ๋ฌธ์ž์—ด์ด ๋“ค์–ด์˜ค์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๋กœ NULL์„ ๋ฆฌํ„ดํ•˜๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

<?php
	$test = Array('asdfasdf');
    
	var_dump(strcmp($test,"admin"));
	var_dump(!strcmp($test,"admin"));
	var_dump(strcmp($test,"admin") == 0);
?>

์ด๋•Œ NULL๊ณผ 0์„ == ์—ฐ์‚ฐ์„ ํ•˜๊ฑฐ๋‚˜ !NULL (NULL == false)๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด TRUE๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. 

 

๋”ฐ๋ผ์„œ, strcmp๋กœ ์–ด๋–ค ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๋ฐฐ์—ด ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋ฉด ์šฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

[์ฐธ๊ณ ] https://lactea.kr/entry/php-strcmp%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%B7%A8%EC%95%BD%ED%95%9C-%EC%9D%B8%EC%A6%9D%EC%A0%88%EC%B0%A8