Home Backend Development PHP Tutorial Learn more about register_globals

Learn more about register_globals

Dec 17, 2016 am 09:32 AM

In-depth understanding of register_globals

register_globals is forcibly restricted in dedecms

Since the register_globals setting controls the PHP variable access range, if it is turned on, it will cause unnecessary security issues, so it is forcibly turned off here. If the webmaster's space does not support it, The following methods can be used to modify it for the reference of webmasters:

*If you are a stand-alone server user, you can modify php.ini in the php configuration file, change register_globals=On to register_globals=Off, and then restart Apache.

*If you are a virtual host user, notify the space provider as much as possible to let them modify the configuration, or you can try ini_set('register_globals',0).

*Create a new .htaccess file in the website directory and add Just go to php_flag register_globals off. If there is already an .htaccess file, just add it in a new line at the end;

*If it doesn't work, then the only way is to go directly to include/common.inc.php and add the following code Just delete it (not recommended).

//Opening register_globals will have many unsafe possibilities, so it is mandatory to close register_globalsif(ini_get('register_globals')){ exit('php.ini register_globals must is Off! '); } Starting from PHP4.2.0 version, the default value of register_globals setting option in php.ini changes Became off. So, it's best to start programming in Off's style now!
The value of register_globals can be set to: On or Off. Let’s give a piece of code to describe their differences respectively.

Code:

. The code is as follows:









When register_globals=Off, the next program should use $_GET['user_name'] and $_GET['user_pass'] to accept the passed value when receiving. (Note: When the method attribute of

is post, you should use $_POST['user_name'] and $_POST['user_pass'])

When register_globals=On, the next program can directly use $user_name and $user_pass to accept the value.

As the name suggests, register_globals means to register as a global variable, so when it is On, the passed value will be directly registered as a global variable and used directly, and when it is Off, we need to get it in a specific array. Therefore, friends who encounter the above problems of not being able to get the value should first check whether your register_globals setting matches your method of obtaining the value. (To check, you can use the phpinfo() function or check php.ini directly) Let’s see what’s wrong here?

Look at the following PHP script, which is used to authorize access to a web page when the entered username and password are correct:

. The code is as follows:


// Check the username and Password
if ($username == 'kevin' and $password == 'secret')
$authorized = true;
?>


Please enter your username and password:



Username:

Password:







The problem with the above code is that you can easily gain access without providing the correct username and password. Just add ?authorized=1 at the end of your browser's address bar. Because PHP automatically creates a variable for every submitted value -- whether from a form submission, a URL query string, or a cookie -- this will set $authorized to 1, so an unauthorized user can Security restrictions can be exceeded.

register_globals=off Solution to the problem that the website cannot be opened

register_globals is a configuration in php.ini. This configuration affects how php receives the passed parameters. As the name suggests, register_globals means to register as a global variable, so when On When, the passed value will be directly registered as a global variable for direct use, and when Off, we need to get it in a specific array. Therefore, friends who encounter the above problems of not being able to get the value should first check whether your register_globals setting matches your method of obtaining the value. (To check, you can use the phpinfo() function or directly check php.ini)

register_globals=off is mainly for security reasons. At the same time, most programs require that the value be set to off. What should I do with a large number of scripts written in the On style before? ? If your previous scripts were planned well and there is a public include file, such as a config.inc.php file, add the following code to this file to simulate it (this code is not guaranteed to solve your problem 100%, Because I haven't tested it extensively, but I think it works well).


Code:

. The code is as follows:


if ( !ini_get("register_globals") )
{
extract($_POST);
extract($_GET);
extract($ _SERVER);
extract($_FILES);
extract($_ENV);
extract($_COOKIE);

if ( isset($_SESSION) )
{
extract($_SESSION);
}
}
?> ;



php Undefined index and Undefined variable solution

$act=$_POST['act'];

Using the above code always prompts
Notice: Undefined index: act in F:windsflybookpost.php on line 18

In addition, sometimes

quote content
Notice: Undefined variable: Submit...

and other such prompts

Cause: caused by undefined variables

Solution:
1) error_reporting setting:
Find error_reporting = E_ALL
Modify to error_reporting = E_ALL & ~E_NOTICE

2) Register_globals setting:
Find register_globals = Off
Modify to register_globals = On

Notice: Undefined variable: email in D:PHP5ENOTEADDNOTE. PHP on line 9
Notice: Undefined variable: subject in D:PHP5ENOTEADDNOTE.PHP on line 9
Notice: Undefined variable: comment in D:PHP5ENOTEADDNOTE.PHP on line 9
... Variables need to be defined, but what should we do if this happens?
Just find php.ini in C: WINDOWS
In line 302 of php.ini error_reporting = E_ALL
Change it to
error_reporting = E_ALL & ~E_NOTICE Just restart apache2.2
Solution: Modify php.ini
Change: error_reporting = E_ALL
to: error_reporting = E_ALL & ~E_NOTICE
If you don’t want any errors to be displayed, just modify:
display_errors = Off
If you don’t have To modify the permissions of php.ini, you can add ini_set("error_reporting", "E_ALL & ~E_NOTICE"); to the php header. That's it

The above is the in-depth understanding of register_globals. For more related articles, please pay attention to the PHP Chinese website (www.php.cn)!


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

cURL in PHP: How to Use the PHP cURL Extension in REST APIs cURL in PHP: How to Use the PHP cURL Extension in REST APIs Mar 14, 2025 am 11:42 AM

The PHP Client URL (cURL) extension is a powerful tool for developers, enabling seamless interaction with remote servers and REST APIs. By leveraging libcurl, a well-respected multi-protocol file transfer library, PHP cURL facilitates efficient execution of various network protocols, including HTTP, HTTPS, and FTP. This extension offers granular control over HTTP requests, supports multiple concurrent operations, and provides built-in security features.

Explain the concept of late static binding in PHP. Explain the concept of late static binding in PHP. Mar 21, 2025 pm 01:33 PM

Article discusses late static binding (LSB) in PHP, introduced in PHP 5.3, allowing runtime resolution of static method calls for more flexible inheritance.Main issue: LSB vs. traditional polymorphism; LSB's practical applications and potential perfo

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

Framework Security Features: Protecting against vulnerabilities. Framework Security Features: Protecting against vulnerabilities. Mar 28, 2025 pm 05:11 PM

Article discusses essential security features in frameworks to protect against vulnerabilities, including input validation, authentication, and regular updates.

How to send a POST request containing JSON data using PHP's cURL library? How to send a POST request containing JSON data using PHP's cURL library? Apr 01, 2025 pm 03:12 PM

Sending JSON data using PHP's cURL library In PHP development, it is often necessary to interact with external APIs. One of the common ways is to use cURL library to send POST�...

Customizing/Extending Frameworks: How to add custom functionality. Customizing/Extending Frameworks: How to add custom functionality. Mar 28, 2025 pm 05:12 PM

The article discusses adding custom functionality to frameworks, focusing on understanding architecture, identifying extension points, and best practices for integration and debugging.

What exactly is the non-blocking feature of ReactPHP? How to handle its blocking I/O operations? What exactly is the non-blocking feature of ReactPHP? How to handle its blocking I/O operations? Apr 01, 2025 pm 03:09 PM

An official introduction to the non-blocking feature of ReactPHP in-depth interpretation of ReactPHP's non-blocking feature has aroused many developers' questions: "ReactPHPisnon-blockingbydefault...

See all articles