2014-12-08 5 views
0

Я использую SobiPro на моем веб-сайте Joomla 3.x, и у меня есть собственное поле, в моих записях, которое является изображением, оно хранится в моей таблице с именем XXXX_sobipro_field_data У меня есть fid (field id), который равное 23 для поля изображения. Но данные выглядят следующим образом: jVFNT8JAEL37KzZ70kQp/US34WCgIEQ+AjUeyULXdgjtVrqgaPrf3d1WRA/E27438+a9maXEJZ8FcQiOqKDYp8SsMXuHF4XtGvcGj4HCnsK3EsOGjWnKsF8Qs0mway5gxRvrPNaMVXV0qWAhqC4gpmO2POuu5dj+ccIcPqqarPyw4SHXbE2N5ICKqqwgpTEz1jmrrGyC52wlgGdFj++ySJEtgjuT0SgYh9gv9RAJp09h0FU7OPVOiUg3qtuSad8gEkkbezZGCYM4Efqtqh7BD5pRkTwV3iX4WbUfCWk3KDp8w7d6GWV5mkBfFUhTSRU/C+7DyYygOLpRW6C92Wiiy10BWYwGwz4aToM+2nvW1TV63dENiANqo5Z7IXcpS22vT6DCOd/3KIyCLyHfcoNlYgsSu64Babz4/TFSK5JdutRa65xWt/1Ry1NL9A/fFf+jlD/AtxBDRvXFbe+c/FRafgE=
Но мне нужно отобразить изображение, как я должен иметь дело с такой штукой?Получить изображение из таблицы SQL

EDIT

Я сделал это: (Это работает, но только с .png изображений)

<?php 
$sid = $_GET["id"]; 
$db = mysql_connect("localhost", "admin", "root") 
    or die("Impossible de se connecter : " . mysql_error()); 
mysql_select_db('database_name',$db); 

$sql = 'SELECT baseData, sid, fid FROM XXXX_sobipro_field_data WHERE sid = ' . $sid; 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

while($data = mysql_fetch_assoc($req)) 
{ 
    if ($data["fid"] == 22) { 
     $title = $data["baseData"]; 
    } 
    if ($data["fid"] == 19) { 
     $desc = $data["baseData"]; 
    } 
    if ($data["fid"] == 17) { 
     $activity = $data["baseData"]; 
    } 
    if ($data["fid"] == 23) { 
     $enc_image = $data["baseData"]; 
     $dec_image = unserialize(base64_decode($enc_image)); 
    } 
} 
?> 
<p> 
    <?php 
    echo "<span class=\"img\"><img src=\" ".$dec_image['original']." \" alt=\"\"> </img> </span>"; 
    ?> 
    <span class="title"><?php echo $title; ?></span> 
    <br /> 
    <span class="activity"><?php echo $activity; ?></span> 
    <br /> 
    <span class="desc"><?php echo $desc; ?></span> 
</p> 
<?php 
    mysql_close($db); 
?> 
+1

Пожалуйста, проверьте этот пост: https://forum.sigsiu.net/sobipro-public-community-board/getting-url-for-images-uploaded-to-sobipro-entries/. – emmanuel

+0

Wowo вы повсюду благодарите! –

+0

@emmanuel: Кажется, что это не работает для каждого изображения. –

ответ

0

Исправлена ​​ошибка.

$entries[$key]['field_avatar'] = $entry->get('field_avatar'); 

// Encrypt Image 
$enc_image = $entries[ $key ]['field_avatar']; 

// Decrypt image 
**$dec_image = SPConfig::unserialize($enc_image);** 
3

Я также искал тот же ответ ... в конце концов, должен был выяснить сам ,

Короче есть 2 варианта вы должны проверить:

  1. для некоторых коротких строк (которые получают закодированные) просто использовать base64_decode ($ ул)
  2. для длинных строк используйте gzinflate (base64_decode ($ ул))

более длинная версия доступна в файле "/com_sobipro/lib/base/config.php" в функции:

public static function unserialize($var, $name = null) 
{ 
    $r = null; 
    if (is_string($var) && strlen($var) > 2) { 
     if (($var2 = base64_decode($var, true))) { 
      if (function_exists('gzinflate')) { 
       if (($r = @gzinflate($var2))) { 
        if (!$r = @unserialize($r)) { 
         throw new SPException(sprintf('Cannot unserialize compressed variable %s', $name)); 
        } 
       } 
       else { 
        if (!($r = @unserialize($var2))) { 
         throw new SPException(sprintf('Cannot unserialize raw (?) encoded variable %s', $name)); 
        } 
       } 
      } 
      else { 
       if (!($r = @unserialize($var2))) { 
        throw new SPException(sprintf('Cannot unserialize raw encoded variable %s', $name)); 
       } 
      } 
     } 
     else { 
      if (!($r = @unserialize($var))) { 
       throw new SPException(sprintf('Cannot unserialize raw variable %s', $name)); 
      } 
     } 
    } 
    return $r; 
} 

Ниже приводится функция, которая делает кодировку:

public static function serialize($var) 
{ 
    if (!(is_string($var)) && (is_array($var) && count($var)) || is_object($var)) { 
     $var = serialize($var); 
    } 
    if (is_string($var) && function_exists('gzdeflate') && (strlen($var) > 500)) { 
     $var = gzdeflate($var, 9); 
    } 
    if (is_string($var) && strlen($var) > 2) { 
     $var = base64_encode($var); 
    } 
    return is_string($var) ? $var : null; 
} 

Надеется, что это помогает.

Ваша строка декодируется выглядит следующим образом:

A: 5: {S: 4: "данные", A: 1: {ы: 4: "Exif"; а: 3: {S: 4: "ФАЙЛ"; а: 6: {s: 8: "имя_файла"; s: 10: "51_ico.jpg"; s: 12: "FileDateTime"; я: 1417629743; s: 8: "FileSize"; я: 1762 ; s: 8: "FileType"; я: 2; s: 8: "MimeType"; s: 10: "изображение/JPEG"; s: 13: "SectionsFound"; s: 7: "комментарий";} s: 8: «COMPUTED», a: 4: {s: 4: «html»; s: 22: «width =« 63 »height =« 63 »«; s: 6: «Height»; i: 63; s: 5: «Ширина»; i: 63; s: 7: «IsColor»; i: 1;} s: 7: «КОММЕНТАРИЙ»; a: 1: {i: 0; s: 57: «CREATOR: gd-jpeg v1.0 (с использованием IJG JPEG v62), quality = 75 ";}}} s: 5:« image »; s: 40:« images/sobipro/entries/55/img_51_ico.jpg »; s: 5:« thumb "; s: 42:" изображения/sobipro/записи/55/thumb_51_ico.jpg "; s: 3:" ICO "; s: 40:" изображения/sobipro/записи/55/ico_51_ico.jpg "; s: 8: «original»; s: 36: «images/sobipro/entries/55/51_ico.jpg»;}

Смежные вопросы