Экспорт зашифрованной записи в CSV-файл из таблицы MySQL в PHP не удается

У меня есть страница PHP, которая выбирает запись из моей таблицы SQL и отправляет зашифрованную версию записи в файл CSV. Моя проблема: когда я выбираю запись без использования openssl в зашифрованном виде, она успешно экспортируется, однако, если я включаю шифрование, он открывает пустой экран.

Я надеюсь получить помощь здесь. Спасибо заранее

This is my code:

<?php

// Database Connection
require("xxx.php");
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'))
$encryption_key = 'bRuD5WYw5wd0rdHR9yLlM6wt2vteuiniQBqE70nAuhU=';

$result='select   *
from encrypt';


$file='grade/file'.date('YmdDH_i_s').'.csv';
$qry = "select * from gb_centre where use_flag=1";
$rs = mysqli_query($con,$qry);
$getRowAssoc = mysqli_fetch_assoc($rs);
$query = (
openssl_encrypt($result->uniqueid,'AES-256-CBC',$encryption_key,0,$iv),
openssl_encrypt($result->username,'AES-256-CBC',$encryption_key,0,$iv),
openssl_encrypt($result->shortname,'AES-256-CBC',$encryption_key,0,$iv),
openssl_encrypt($result->rawgrade,'AES-256-CBC',$encryption_key,0,$iv),
openssl_encrypt($result->finalgrade,'AES-256-CBC',$encryption_key,0,$iv),
openssl_encrypt($result->cid,'AES-256-CBC',$encryption_key,0,$iv),
openssl_encrypt($result->id,'AES-256-CBC',$encryption_key,0,$iv)

);


if (!$result = mysqli_query($con, $query)) {
exit(mysqli_error($con));
}

$users = array($uniqueid,$username,$shortname,$rawgrade,$finalgrade,$cid,$id);
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
$users[] = $row;
}
}

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename='.$getRowAssoc['cid'].date('_Y-m-d_Hi').'.csv');
$output = fopen('php://output', 'w');
fputcsv($output, array('a1', 'a2', 'a3', 'a4', 'a5','a6','a7'));

if (count($users) > 0) {
foreach ($users as $row) {
fputcsv($output, $row);
}
}

?>

**

РЕДАКТИРОВАТЬ:

**
Я отредактировал раздел кода, теперь он может экспортировать запись в CSV с использованием PHP OpenSSL и работает нормально. Проблема в том, что он добавляет дополнительные столбцы в CSV-файл. Я не могу понять, где ошибка.
Вот отредактированный код:

<?php
// Database Connection
require("config.php");
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
$key = 'bRuD5WYw5wd0rdHR9yLlM6wt2vteuiniQBqE70nAuhU=';
$encryption_key = 'bRuD5WYw5wd0rdHR9yLlM6wt2vteuiniQBqE70nAuhU=';
$string='select   *
from encrypt'
$qry = "select * from gb_centre where use_flag=1";
$rs = mysqli_query($con,$qry);
$getRowAssoc = mysqli_fetch_assoc($rs);
if (!$result = mysqli_query($con, $string)) {
exit(mysqli_error($con));
}


if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {

$uniqueid[] = openssl_encrypt($row->uniqueid,'AES-256-CBC',$encryption_key,0,$iv);
$username[] = openssl_encrypt($row->username,'AES-256-CBC',$encryption_key,0,$iv);
$shortname[] = openssl_encrypt($row->shortname,'AES-256-CBC',$encryption_key,0,$iv);
$rawgrade[] = openssl_encrypt($row->rawgrade,'AES-256-CBC',$encryption_key,0,$iv);
$finalgrade[] = openssl_encrypt($row->finalgrade,'AES-256-CBC',$encryption_key,0,$iv);
$cid[] = openssl_encrypt($row->cid,'AES-256-CBC',$encryption_key,0,$iv);
$id[] = openssl_encrypt($row->id,'AES-256-CBC',$encryption_key,0,$iv);
}
}
$users = array($uniqueid,$username,$shortname,$rawgrade,$finalgrade,$cid,$i);
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename='.$getRowAssoc['cid'].date('_Y-m-d_Hi').'.csv');
$output = fopen('php://output', 'w');
fputcsv($output, array('a1', 'a2', 'a3', 'a4', 'a5','a6','a7'));

if (count($users) > 0) {
foreach ($users as $row1) {
fputcsv($output, $row1);
}
}

?>

0

Решение

Похоже, вы испытываете трудности с основами выполнения запросов. Я просто написал бы простой код для извлечения и показа результатов одного запроса. Затем, когда вы получите идею, вы можете добавить больше к своему коду.

Это пример использования подготовленных утверждений. Это предотвратит инъекции sql. Вы должны научиться использовать подготовленные заявления для всех ваших запросов в будущем. Вот ссылка на хороший ресурс, который научит вас, как правильно выполнять любые запросы. Добавьте эту ссылку в закладки и часто обращайтесь к ней. MySQLi Подготовленные Заявления

Этот код будет распечатывать уникальный идентификатор из каждой строки результатов, возвращаемых по вашему запросу.

$query = "SELECT *
FROM gb_centre
WHERE use_flag = ?";

$stmt = $con->prepare($query);
$stmt->bind_param('i', 1); //set your bindings
$stmt->execute();
while ($result = $stmt->fetch_object()) {

echo $result->uniqueid . '<br>';

}
-1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector