Skip to content
Emulate "register_globals" and "magic_quotes_gpc"
PHP
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
test
.gitignore
.travis.yml
README.md
composer.json
phpunit.xml

README.md

MercifulPolluter

To relieve register_globals and magic_quotes_gpc refugees.

Build Status Coverage Status Scrutinizer Code Quality

Description

In PHP 5.4, violent directives (register_globals and magic_quotes_gpc) has been removed. But system that depends on them still running lot maybe.

This library reproduce these features in PHP 5.4 and later. Salvation

Usage

<?php
/**
 * example.com/?foo=3&bar=12
 */

(new Gongo\MercifulPolluter\Request)->pollute();

global $foo, $bar;
var_dump($foo, $bar);

/**
 * int(3)
 * int(12)
 */

Installation

Add this lines to your application's composer.json:

{
    "require": {
        "gongo/merciful-polluter": "*"
    }
}

And then execute:

$ composer install

Or install it yourself as:

$ composer require gongo/merciful-polluter

See also: https://packagist.org/packages/gongo/merciful-polluter

Features

Emulate register_globals

Add this lines to your application's entry point (like in auto_prepend_file):

<?php
$request = new Gongo\MercifulPolluter\Request;
$request->pollute();

// main routine...

If use the session, call Gongo\MercifulPolluter\Session::pollute() after session_start():

session_start();

/**
 * $_SESSION['user_id'] = 'gongo'
 */

(new Gongo\MercifulPolluter\Session)->pollute();

var_dump($user_id); // string(5) "gongo"

// Reference global variables to session.
$user_id = 'taro';
var_dump($_SESSION['user_id']); // string(4) "taro"

Emulate magic_quotes_gpc

If want to apply magic_quotes_gpc, call Gongo\MercifulPolluter\Request::enableMagicQuotesGpc():

<?php
/**
 * example.com/?foo=1'2'3
 */

$request = new Gongo\MercifulPolluter\Request;
$request->enableMagicQuotesGpc();
$request->pollute();

// $_GET['foo'] => "1\'2\'3"
//        $foo  => "1\'2\'3"

License

MIT License.

You can’t perform that action at this time.