Я новый разработчик и недавно закончил кодирование простой СУБД PHP mySQL для моей компании. Теперь, когда я закончил работу , получив его на работу, я хочу сделать его безопасным, внедряя все лучшие методы безопасности, которые я могу найти в Интернете (например: регулярные выражения, имеющие mysqli_connect.php вне веб-каталога и строки подключения внутри скрипта и т. д.), прежде чем я возьму его онлайн. Я внедрил некоторую личную информацию за пределы этого кода и заменил ее своей работой, но внутри скобок. Я не хочу оставлять его в сети, если это возможно.Ссылка на mysqli_connect.php Перерывы PHPExcel Downloader
Обычно, я могу работать с моей базой данных только с ссылкой на mysqli_connect.php, как это:
require_once ('..\mysqli_connect.php');
Одна из функций на моей СУБД является «скачать, чтобы преуспеть» кнопку , Он отлично работает, , но только когда у меня есть соединение непосредственно внутри файла. Если я пытаюсь написать мое соединение, как я в приведенном выше примере, файл Excel выводится следующее сообщение об ошибке:
Excel cannot open the file 'xyz.xlsx' because the file format or extension is not valid. Verify that the file has not been corrupted and that the file extension matches the format of the file.
Когда я пишу подключение непосредственно внутри ExcelDownload.php, то Excel файл загрузки правильно , Строка соединения выглядит следующим образом:
$dbc = @mysqli_connect('[myhost]', '[myusername]', '[mypassword]', '[mydatabase]')
Так опять же, в основном, ссылаясь на подключение косвенно вызывает мое Excel скачать ошибка, и я не знаю, почему. Он работает нормально, если я непосредственно вызываю соединение. Любая помощь будет принята с благодарностью.
Еще раз спасибо, Джибриль
Вот ExcelDownload.php, кстати:
<?php
session_start();
//VERIFY LOGGED IN: Redirects user back to home page if they are not logged in or if they don't have the right privileges. Should be atop every page.
if(!isset($_SESSION['id']))
{header("Location: login.php");}
//CALLS PHPEXCEL: Creates connection to PHPExcel class library, and creates new instance of PHPExcel.
// From there it sets the attributes for some of PHPExcel's methods, to explain how we want the spreadsheet to be designed.
require_once 'Classes/PHPExcel.php';
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->setTitle('OpenOrders');
$objPHPExcel->getActiveSheet()->setCellValue('A1', '[my company]');
//CONFIRMATION: If Export to Excel button is pushed, then do this
if(isset($_POST["export_Excel"]))
{
//DANGER!! UNSECURED DATABASE CONNECTION. BAD PRACTICE. CHANGE IN NEXT VERSION!
//GENERATE QUERY: Connects to database -- Once connected, runs select * query and saves the outcome in $result
$dbc = @mysqli_connect('[myhost]', '[myusername]', '[mypassword]', '[mydb]')
OR die ('Could not connect to MySQL ' . mysqli_connect_error());
$sql = "[myquery]";
$result = mysqli_query($dbc, $sql);
//SET HEADING VALUE: Sets the values for the top row of the spreadsheet, which will be the headings.
$objPHPExcel->getActiveSheet()->setCellValue('C3', 'OOPONO');
$objPHPExcel->getActiveSheet()->setCellValue('D3', 'Order Status');
$objPHPExcel->getActiveSheet()->setCellValue('E3', 'Order Comments');
//ITERATOR: If there are values inside of $result, starting at row 4, insert values for OOPONO, order status, and comments until $results is totally intereated.
if(mysqli_num_rows($result) > 0)
{
$rownumber = 4;
while ($row = mysqli_fetch_array($result))
{
$row1 = 'C'.$rownumber;
$objPHPExcel->getActiveSheet()->setCellValue($row1, $row["OOPONO"]);
$row1 = 'D'.$rownumber;
$objPHPExcel->getActiveSheet()->setCellValue($row1, $row["Order_Status"]);
$row1 = 'E'.$rownumber;
$objPHPExcel->getActiveSheet()->setCellValue($row1, $row["Comments"]);
$rownumber = $rownumber + 1;
}
}
}
//DOWNLOAD SETUP: Defines the different attributes of the Excel doc ranging from filename to extension. It also does the finishing touches of setting up the download.
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="OpenOrders.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
?>
Я открыл файл и там была только куча совершенно случайных символов. Я попытался изменить расширение на .txt, но получил тот же результат. Результат слишком длинный, чтобы опубликовать его здесь. Можете ли вы помочь мне узнать, куда идти отсюда? Спасибо :-) –
Я не могу вам помочь ..... Я сказал вам, в чем проблема, но у меня нет доступа к вашим журналам, вашим файлам и т. Д., Чтобы указать вам на фактическую строку –
Хорошо, я сделаю все возможное и попытаюсь решить ее сам. Спасибо вам все равно :) –