Непонятное поле с адресом

159
15 декабря 2016, 15:47

Нашел в чужой базе поле для адреса картинок такого вида:

YToyOntpOjA7YTo0OntzOjQ6InJlYWwiO3M6MzY6IjAzMGVlYTUxNjJjOGViZTBiYTQ4YTk5MTM2MDdjYjR6LmpwZyI7czo0OiJvcmlnIjtzOjg6ImltZzYuanBnIjtzOjE6InciO2k6Mjc0O3M6MToiaCI7aToyMDk7fWk6MTthOjQ6e3M6NDoicmVhbCI7czozNjoi­OTFlMzA3OGM1MWNiOWFhZjMxNjM0MGZkZTc3ZDU1ZTAuanBnIjtzOjQ6Im9yaWciO3M6ODoiaW1nNi5qcGciO3M6MToidyI7aToxMjA7czoxOiJoIjtpOjkyO319

Автодекодер подсказал такой вариант декода из Base64:

a:2:{i:0;a:4:{s:4:"real";s:36:"030eea5162c8ebe0ba48a9913607cb4z.jpg";s:4:"orig";s:8:"img6.jpg";s:1:"w";i:274;s:1:"h";i:209;}i:1;a:4:{s:4:"real";s:36:"91e3078c51cb9aaf316340fde77d55e0.jpg";s:4:"orig";s:8:"img6.jpg";s:1:"w";i:120;s:1:"h";i:92;}}

Код php:

 while ($row = mysql_fetch_assoc($res)) {
 $img = foto_info($row['r_foto']);

2 вопроса, как и зачем? Как заводить новые url'ы в такое поле особо не извращаясь?

Answer 1

Это сериализованный массив, закодированный в base64.

Пример декодирования информации:

$encoded_string = 'YToyOntpOjA7YTo0OntzOjQ6InJlYWwiO3M6MzY6IjAzMGVlYTUxNjJjOGViZTBiYTQ4YTk5MTM2MDdjYjR6LmpwZyI7czo0OiJvcmlnIjtzOjg6ImltZzYuanBnIjtzOjE6InciO2k6Mjc0O3M6MToiaCI7aToyMDk7fWk6MTthOjQ6e3M6NDoicmVhbCI7czozNjoi­OTFlMzA3OGM1MWNiOWFhZjMxNjM0MGZkZTc3ZDU1ZTAuanBnIjtzOjQ6Im9yaWciO3M6ODoiaW1nNi5qcGciO3M6MToidyI7aToxMjA7czoxOiJoIjtpOjkyO319';
$img = base64_decode(unserialize($encoded_string));
var_dump($img);

Выведет:

array (size=2)
  0 => 
    array (size=4)
      'real' => string '030eea5162c8ebe0ba48a9913607cb4z.jpg' (length=36)
      'orig' => string 'img6.jpg' (length=8)
      'w' => int 274
      'h' => int 209
  1 => 
    array (size=4)
      'real' => string '91e3078c51cb9aaf316340fde77d55e0.jpg' (length=36)
      'orig' => string 'img6.jpg' (length=8)
      'w' => int 120
      'h' => int 92

Как с ним работать:

function decodeThis($str){
    return unserialize(base64_decode($str));
}
function encodeThis($arr){    
    return base64_encode(serialize($arr));
}
//Пример работы
//Входная закодированная строка
$value = 'YToyOntpOjA7YTo0OntzOjQ6InJlYWwiO3M6MzY6IjAzMGVlYTUxNjJjOGViZTBiYTQ4YTk5MTM2MDdjYjR6LmpwZyI7czo0OiJvcmlnIjtzOjg6ImltZzYuanBnIjtzOjE6InciO2k6Mjc0O3M6MToiaCI7aToyMDk7fWk6MTthOjQ6e3M6NDoicmVhbCI7czozNjoi­OTFlMzA3OGM1MWNiOWFhZjMxNjM0MGZkZTc3ZDU1ZTAuanBnIjtzOjQ6Im9yaWciO3M6ODoiaW1nNi5qcGciO3M6MToidyI7aToxMjA7czoxOiJoIjtpOjkyO319';
//Раскодируем ее в массив
$img = decodeThis($value);
//Посмотрим, что получилось:
echo '<p>Массив до манипуляций</p>';
var_dump($img);
//Изменим массив. Например, извлечем последний элемент
array_pop($img);
//Посмотрим, что получилось:
echo '<p>Массив после манипуляций</p>';
var_dump($img);
//Закодируем обратно
$new_value = encodeThis($img);
//Посмотрим, что получилось:
echo '<p>Старая закодированная строка</p>';
var_dump($value);
echo '<p>Новая закодированная строка</p>';
var_dump($new_value);
READ ALSO
Префикс в таблицах mysql

Префикс в таблицах mysql

Для чего названия таблиц базы данных mysql, как правило, начинаются с префикса? Самый нелепый ответ, который я получил - это "в целях безопасности"А...

202
Непонятка с полем mysql

Непонятка с полем mysql

В таблице users_sessions, есть поле hash int(35)Почему-то когда пытаюсь добавить в него к примеру более 10 цифр, то оно генерирует непонятное число 2147483647

171
Выборка данных за последние 30 секунд

Выборка данных за последние 30 секунд

Выборка данных за последние 30 секунд:

172
Есть ли шанс расшифровать базу?

Есть ли шанс расшифровать базу?

У меня есть диск с веб Java приложением и всем необходимым (Apache, плагины итд) чтоб оно работало на компьютере через ИЕЭто приложение использует...

157