ʹ�� Register Globals

Warning

���������� PHP 5.3.0 ������������ PHP 5.4.0 ���Ƴ���

���� PHP ���������ı仯���Ǵ� PHP » 4.2.0 �濪ʼ�����ļ��� PHP ָ�� register_globals ��Ĭ��ֵ�� on ��Ϊ off �ˡ��Դ�ѡ�������������ձ������ںܶ��˸�����֪�����Ĵ��ڶ���Ϊ PHP ����������ô�����ġ����ڻ���������ָ�����д������ȫ�Ĵ��룬��Ҫ֪�����ָ���û�в���ȫ�ĵط������òŻᡣ

�� register_globals ���Ժ󣬸��ֱ�������ע����룬�������� HTML ��������������ټ��� PHP ��ʹ�ñ���֮ǰ��������г�ʼ���ģ����ʹ�ø�����д������ȫ�Ĵ��롣���Ǹ��ܼ��ѵľ��񣬵� PHP �������Ǿ���Ĭ�Ϲرմ�ѡ�����ʱ������ʹ�ñ���ʱȷʵ��֪���������������ģ�ֻ���뵱Ȼ������ register_globals �Ĺرոı������ִ����ڲ������Ϳͻ��˷��͵ı���������һ����������������һ������ʹ�� register_globals �����ӣ�

Example #1 ����ʹ�� register_globals = on ������

<?php
// ���û��Ϸ���ʱ�򣬸�ֵ $authorized = true
if (authenticated_user()) {
    
$authorized true;
}

// ���ڲ�û�����Ȱ� $authorized ��ʼ��Ϊ false��
// �� register_globals ��ʱ������ͨ��GET auth.php?authorized=1 ������ñ���ֵ
// �����κ��˶������ƹ������֤
if ($authorized) {
    include 
"/highly/sensitive/data.php";
}
?>

�� register_globals = on ��ʱ������Ĵ���ͻ���Σ���ˡ������ off��$authorized �Ͳ���ͨ���� URL ����ȷ�ʽ���ı䣬�����ͺö��ˣ����ܳ�ʼ��������һ�����õı��ϰ�ߡ�����˵�����������Ĵ���ִ��֮ǰ���� $authorized = false �Ļ������� register_globals �� on ���� off �����ԣ���Ϊ�û�״̬����ʼ��Ϊδ����֤��

��һ�������ǹ����Ự�ġ��� register_globals = on ��ʱ��$username Ҳ������������Ĵ����У���Ҫ��ʶ�� $username Ҳ���ܻ������;������������˵ͨ�� URL �� GET��

Example #2 ʹ�ûỰʱͬʱ���� register_globals on �� off ������

<?php
// ���Dz�֪�� $username ����Դ��������� $_SESSION ��
// ��Դ�ڻỰ����
if (isset($_SESSION['username'])) {

    echo 
"Hello <b>{$_SESSION['username']}</b>";

} else {

    echo 
"Hello <b>Guest</b><br />";
    echo 
"Would you like to login?";

}
?>

��ȡ��Ӧ��Ԥ����ʩ�Ա���α����������ʱ����辯������ȫ�п��ܵġ��������ȷ��֪���������������ģ��Ϳ��Լ�����ύ�������Ƿ��ǴӲ������ı��ύ�����������ⲻ�ܱ�֤����δ��α�죬����Ҫ������ȥ�²�Ӧ������ȥα�졣������ں�����������Դ�Ļ�������ʹ�� $_REQUEST ���飬�������� GET��POST �� COOKIE ���������ݡ�����ɲμ����ֲ������ PHP ֮��ı�����

Example #3 ̽���к�����

<?php
if (isset($_COOKIE['MAGIC_COOKIE'])) {

    
// MAGIC_COOKIE ���� cookie
    // ��������ȷ�������� cookie ������

} elseif (isset($_GET['MAGIC_COOKIE']) || isset($_POST['MAGIC_COOKIE'])) {

   
mail("admin@example.com""Possible breakin attempt"$_SERVER['REMOTE_ADDR']);
   echo 
"Security violation, admin has been alerted.";
   exit;

} else {

   
// ��һ�������в�û������ MAGIC_COOKIE ����

}
?>

��Ȼ�������عر� register_globals �����������еĴ��붼��ȫ�ˡ�����ÿһ���ύ���������ݣ���Ҫ������о���ļ�顣��ԶҪ��֤�û����ݺͶԱ������г�ʼ������ error_reporting() ��Ϊ E_NOTICE ������Լ��δ��ʼ���ı�����

�������ģ�� register_globals Ϊ on �� off ����Ϣ������� FAQ��

Note: Superglobal ������˵����

�� PHP 4.1.0 �����ʹ�� Superglobal ���飬���� $_GET��$_POST���� $_SERVER���ȵȡ�������Ϣ���Ķ��ֲ��е� superglobals �½ڡ�