은행 사이트를 보면 가끔씩 '잘못된 경로로 접근하셨습니다' 라는 메시지가 뜨면서 내가 원하는 URL 로의 접근이 차단되는 경우가 있습니다.
예를들어, 로그인을 한 후에 접근해야하는 계좌정보를 표시하는 페이지의 URL 을 사용자가 직접입력했을 경우에, 이를 인식하여 로그인 창으로 돌려보낸다거나, '잘못된 경로로 접근하셨습니다' 라는 메시지를 뿌려주는 등의 경우입니다
이와 같이 url직접입력 방지, 주소직접입력 방지를 하기 위해서는 PHP의 define 함수와 defined 함수를 사용하면 쉽게 해결가능합니다.
<?php
define("GREETING","안녕하세요. 오셔서 감사드립니다");
echo constant("GREETING");
?>
위와 같이 GREETING 이라는 상수를 정의하여 그 값을 '안녕하세요. 오셔서 감사드립니다' 라고 세팅한 후에 constant() 함수를 이용하여 GREETING 이라는 상수를 출력하면 '안녕하세요. 오셔서 감사드립니다' 라는 메시지가 출력되게 됩니다.
실례로, 로그인을 처리하는 부분을 login.php 로 지정해놓고 index.php 에서 login.php 를 include 하여 사용하는 경우, 사용자가 index.php로 접근하지 않고 login.php URL 을 직접 입력했을때 이를 방지하려면, 다음과 같이 가능합니다.
index.php 코드내에서 define 함수를 이용하여 상수하나를 지정합니다.
define('ALLOWED', true);
include_once('login.php');
login.php 코드내에는 defined() 함수를 이용하여 상수지정 여부를 확인합니다.
if (!defined('ALLOWED')) exit;
login.php 는 로딩될때 ALLOWED 상수값이 true 가 아니면 exit 합니다. 즉, 정상적인 index.php 로 접근하지 않고 사용자가 직접 login.php 의 URL 을 입력하게되면, ALLOWED 값에 전혀 지정되지 않은 상태이므로 exit 가 실행되게 됩니다.
PHPSESSID 가 주소창에 표시되는 것 방지하기, PHP코딩팁 / ini_set() (0) | 2019.09.21 |
---|---|
php디버깅, php에러출력 ... error_reporting 함수 / php error / php오류 (2) | 2019.09.18 |
PHP 문자열 공백제거하기, trim() ltrim() rtrim() 함수, 문자공백 또는 특정문자 제외하기 (2) | 2019.08.13 |
php file open / write / close , PHP파일 열기/ 쓰기/ 닫기 (0) | 2019.07.28 |
PHP 문자열 나누기 split / preg_split / str_split / explode 함수 살펴보기 / 문자열분할/ 문자열배열로 ... (0) | 2019.07.16 |
댓글 영역