Skip to content

gongo/merciful-polluter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MercifulPolluter

To relieve register_globals and magic_quotes_gpc refugees.

CI status Coverage Status Scrutinizer Code Quality

Description

In PHP 5.4, violent directives (register_globals and magic_quotes_gpc) has been removed. But there are systems that may still depend on them.

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.