У меня есть форма, где после вставки их в базу данных.Я шифрую изображения, используя open ssl, а затем сохраняю их в базе данных.
Я также дешифрую и отображаю их.Изображения не отображаются после того, как они были извлечены из базы данных и затем расшифрованы.
Я не могу понять, почему изображения не отображаются.Из того, что я вижу, они правильно вставляются в базу данных
<?php
if(isset($_POST["action"]))
{
$connect = mysqli_connect("","","","");
$cipher = "aes-128-cbc";
$ivlen = openssl_cipher_iv_length($cipher);
$key = openssl_random_pseudo_bytes(128);
if($_POST["action"] == "fetch")
{
$query = "SELECT * FROM tbl_images where r_id = '".$_POST["r_id"]."' ORDER BY id DESC";
$result = mysqli_query($connect, $query);
$output = '
<table class="table table-bordered table-striped">
<tr>
<th width="10%">ID</th>
<th width="70%">Image</th>
<th width="10%">Remove</th>
</tr>
';
while($row = mysqli_fetch_array($result))
{
$newciphertext = $row["name"];
$newiv = $row["iv"];
$img = openssl_decrypt($newciphertext, $cipher, $key, $options=0, $newiv);
$output .= '
<tr>
<td>'.$row["id"].'</td>
<td>
<a target="_blank" href="#" onClick="enlarge(this)""><img src="data:image/jpeg;base64,'.base64_encode($img).'" class="img-thumbnail"/></a>
</td>
<td><button type="button" name="delete" class="btn btn-danger bt-xs delete" id="'.$row["id"].'">Remove</button></td>
</tr>
';
}
$output .= '</table>';
echo $output;
}
if($_POST["action"] == "insert")
{
$file = file_get_contents($_FILES["image"]["tmp_name"]);
$iv = openssl_random_pseudo_bytes($ivlen);
$ciphertext = openssl_encrypt($file, $cipher, $key, $options=0, $iv);
$query = "INSERT INTO tbl_images(name, r_id, iv) VALUES ('\"" . addslashes($ciphertext) ."\"', '".$_POST["r_id"]."', '$iv')";
if(mysqli_query($connect, $query))
{
echo 'Image Inserted into Database';
}
}
if($_POST["action"] == "delete")
{
$query = "DELETE FROM tbl_images WHERE id = '".$_POST["image_id"]."'";
if(mysqli_query($connect, $query))
{
echo 'Image Deleted from Database';
}
}
}
?>