Расшифровка и чтение данных сеанса Сухосина

Я только что заметил, что мой хост начал использовать Suhosin Hardering, я не совсем знаком с этим и у меня серьезные проблемы с моим приложением, в основном в сеансах.

теперь хранится в следующем формате:

_EzyqHpPJqmQbSpRmXAJTxuFq980aNQlc3XAiRkWxlZQ9B0fnV...

Я не возражаю, но это также нарушает мое приложение, мне нужен способ декодирования шифрования, потому что он не позволяет мне войти в мое приложение из-за этого.

Я есть функция десериализации данных сеанса, не знаю, откуда я взял, но вот она:

public function unserialize_session_data($data)
{
    $variables = array();

    $a = preg_split( "/(\w+)\|/", $serialized_string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE );

    for( $i = 0; $i < count( $a ); $i = $i+2 )
    {
        $variables[$a[$i]] = unserialize( $a[$i+1] );
    }

    return($variables);
}

Это ' открытый интерфейс IVector {int Size {получить; } float это [int index] {получить; установлен; } } // IMatrix.cs публичный интерфейс IMatrix {int Size {получить; } ...

У меня определены два интерфейса:

// IVector.cs
public interface IVector
{
    int Size { get; }

    float this[int index] { get; set; }
}

// IMatrix.cs
public interface IMatrix
{
    int Size { get; }

    float this[int row, int column] { get; set; }
}

А также методы расширения для этих интерфейсов

// VectorExtensions.cs
public static T Add<T>(this T vector, T value) where T : struct, IVector
{
    var output = default(T);

    for (int i = 0; i < output.Size; i++)
        output[i] = vector[i] + value[i];

    return output;
}

// MatrixExtensions.cs
public static T Add<T>(this T matrix, T value) where T : struct, IMatrix
{
    var output = default(T);

    for (int i = 0; i < output.Size; i++)
        for (int j = 0; j < output.Size; j++)
            output[i, j] = vector[i, j] + value[i, j];

    return output;
}

Все типы находятся в одном пространстве имен.

По какой-то причине при вызове Add () для чего-то полученный из IVector, компилятор не может определить, использовать ли определение в классе MatrixExtensions или классе VectorExtensions. Перемещение одного из классов расширения в другое пространство имен останавливает ошибки ... но я хочу, чтобы они находились в том же пространстве имен: D

Почему это происходит?

РЕДАКТИРОВАТЬ: (не могу поверить, что я забыл добавить это)
Что мне делать, чтобы обойти это?

12
задан YellPika 7 May 2011 в 15:34
поделиться