Я только что заметил, что мой хост начал использовать 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
Почему это происходит?
РЕДАКТИРОВАТЬ: (не могу поверить, что я забыл добавить это)
Что мне делать, чтобы обойти это?