Сегодня я впервые узнал, как создать простую систему входа в систему (благодаря советам StackExchange и ЭТОМУ ОБУЧЕНИЮ . Я пытаюсь использовать фреймворк PHPExcel создать файл Excel ТОЛЬКО для тех, кто успешно вошел в систему.
Я подошел очень близко, однако я получаю сумасшедшее сообщение о заголовках, а ниже - куча смешанного текста на жаргоне.
Warning: Cannot modify header information - headers already sent by (output started at /home3/mydir/public_html/d23/members/loggedin.php:6) in /home3/mydir/public_html/d23/members/create_excel.php on line 92
Warning: Cannot modify header information - headers already sent by (output started at /home3/mydir/public_html/d23/members/loggedin.php:6) in /home3/mydir/public_html/d23/members/create_excel on line 93
Warning: Cannot modify header information - headers already sent by (output started at /home3/mydir/public_html/d23/members/loggedin.php:6) in /home3/mydir/public_html/d23/members/create_excel on line 94
ÐÏࡱá;þÿ þÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Я знаю, что из-за этих строк в файле "create_excel.php" происходит ошибка, потому что, когда я их закомментирую, ошибки нет. Но также не создается файл Excel.
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="userList.xls"');
header('Cache-Control: max-age=0');
Я буду шаг за шагом описывать свой процесс - я новичок, поэтому держу пари, что это кому-то глупо просто.
STEP # 1 (login.php)
Вызывает файл «process_login.php» для аутентификации пароля, введенного в форму.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Login Please</title>
</head>
<body>
<form action="process_login.php" method="post">
Password: <input type="password" name="password" /><br />
<input type="submit" value="Login" />
</form>
</body>
</html>
PAGE 2 (process_login.php)
Если все в порядке, он теперь перенаправит вас на «logged_in.php»,если нет - вы получите сообщение об отказе.
mysql_connect($host, $user, $pass);
mysql_select_db($database);
//$username = mysql_real_escape_string($_POST['username']);
$username = "person";
$password = hash('sha512', $_POST['password']);
$result = mysql_query("SELECT * FROM $table WHERE password = '$password'
");
if(mysql_num_rows($result))
{
// Login
session_start();
$_SESSION['username'] = htmlspecialchars($username); // htmlspecialchars() sanitises XSS
// Redirect
header('Location: loggedin.php');
exit;
}
else
{
echo '<p><strong>Error:</strong> Invalid username or password.</p>';
}
?>
ШАГ 3 (logged_in.php)
Теперь мы успешно вошли в систему, с уведомлением об утверждении, а также с запросом на запуск файла "create_excel.php",
<?php
session_start();
if(isset($_SESSION['username']))
{
// Logged in
echo '<p>You are logged in as '. $_SESSION['username']. '.</p>';
// require the PHPExcel file
require 'create_excel.php';
}
else
{
// Not logged in
echo '<p>You are not <a href="login.php">logged in</a>.</p>';
}
?>
ШАГ # 4 (create_excel.php)
Здесь возникает проблема с заголовком.Я попытался поместить скрипт сессии на этой странице в одиночку, но у меня та же проблема.Я думал, если бы он был вытащен со страницы "logged_in", все было бы хорошо, но нет.(В настоящее время, если я получаю доступ к этой странице напрямую, файл Excel генерируется и загружается без проблем).
<?php
/** Error reporting */
error_reporting(E_ALL);
date_default_timezone_set('Europe/London');
/** PHPExcel */
require_once 'Classes/PHPExcel.php';
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
// Set properties
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
->setLastModifiedBy("Maarten Balliauw")
->setTitle("Office 2007 XLSX Test Document")
->setSubject("Office 2007 XLSX Test Document")
->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
->setKeywords("office 2007 openxml php")
->setCategory("Test result file");
// Add some data
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Hello')
->setCellValue('B2', 'world!')
->setCellValue('C1', 'Hello')
->setCellValue('D2', 'world!');
// Miscellaneous glyphs, UTF-8
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A4', 'Miscellaneous glyphs')
->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç');
// Rename sheet
$objPHPExcel->getActiveSheet()->setTitle('Simple');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// Redirect output to a client’s web browser (Excel5)
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="01simple.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;