PHP Register_globals 값 on 및 off_php 기본 사항에 대한 이해를 공유하세요.
register_globals 값은 On 또는 Off로 설정할 수 있습니다. 각각 다르게 설명합니다.
코드:
<form name="frmTest" id="frmTest" action="URL"> <input type="text" name="user_name" id="user_name"> <input type="password" name="user_pass" id="user_pass"> <input type="submit" value="login"> </form>
register_globals=Off일 때 다음 프로그램은 $_GET['user_name' ] 및 $_GET[을 사용해야 합니다. 'user_pass'] 전달된 값을 수락합니다. (참고: ff9c23ada1bcecdd1a0fb5d5a0f18437의 method 속성이 post인 경우 $_POST['user_name'] 및 $_POST['user_pass']를 사용해야 합니다.)
register_globals=On일 경우 다음 프로그램에서 사용할 수 있습니다. $user_name 및 $user_pass를 직접 사용하여 값을 허용합니다.
register_globals는 이름 그대로 전역변수로 등록한다는 뜻이므로 On일 경우 전달된 값을 전역변수로 직접 등록하여 직접 사용하고, Off일 경우에는 전역변수로 등록해야 합니다. 특정 배열로 이동하여 가져옵니다. 따라서 위와 같이 값을 얻을 수 없는 문제를 겪는 친구는 먼저 Register_globals 설정이 값을 얻는 방법과 일치하는지 확인해야 합니다. (확인하려면 phpinfo() 함수를 사용하거나 php.ini를 직접 확인하면 됩니다.)
어떤 문제가 있는지 살펴볼까요?
입력한 사용자 이름과 비밀번호가 올바른 경우 웹페이지에 대한 액세스를 인증하는 데 사용되는 다음 PHP 스크립트를 살펴보세요.
코드는 다음과 같습니다.
<?php // 检查用户名及口令 if ($username == 'kevin' and $password == 'secret') $authorized = true; ?> <?php if (!$authorized): ?> <!-- 未授权的用户将在这里给予提示 --> <p>Please enter your username and password:</p> <form action="<?=$PHP_SELF?>" method="POST"> <p>Username: <input type="text" name="username" /><br /> Password: <input type="password" name="password" /><br /> <input type="submit" /></p> </form> <?php else: ?> <!-- 有安全要求的HTML内容 --> <?php endif; ?>
위 코드의 문제점은 올바른 사용자 이름과 비밀번호를 제공하지 않고도 쉽게 액세스할 수 있다는 것입니다. 브라우저의 주소 표시줄 끝에 ?authorized=1을 추가하세요. PHP는 양식 제출, URL 쿼리 문자열 또는 쿠키 등 제출된 모든 값에 대해 자동으로 변수를 생성하므로 $authorized가 1로 설정되므로 승인되지 않은 사용자가 보안 제한을 초과할 수 있습니다.
위 내용은 PHP Register_globals 값 on 및 off_php 기본 내용에 대한 이해를 공유하기 위한 것입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 주목해주세요!