Warning: Cannot modify header information - headers already

Q
На сайте с 26.02.2012
Offline
1
573

Сайт на joomla. Скрипт позволяющий скачивать прайс только группе авторы, ссылка на прайс формируется временная. Захожу в site.ru/components/price/index.php как автор, появляется ссылка на прайс, нажимаю на эту ссылку и выдается ошибка

Warning: Cannot modify header information - headers already sent by (output started at /www/site.ru/components/price/index.php:18) in /www/site.ru/components/price/index.php on line 35

Подскажите где ошибка в скрипте?

Содержимое index.php:

<?php

$my_path = dirname(__FILE__);

$absolute_path = dirname( $my_path."/../../configuration.php" );

// Set up the appropriate CMS framework

define( '_JEXEC', 1 );

define( 'JPATH_BASE', $absolute_path );

define( 'DS', DIRECTORY_SEPARATOR );

// Load the framework

require_once ( JPATH_BASE . DS . 'includes' . DS . 'defines.php' );

require_once ( JPATH_BASE . DS . 'includes' . DS . 'framework.php' );

// create the mainframe object

$mainframe = & JFactory::getApplication( 'site' );

?>

<?php $user = JFactory::GetUser();

if($user->get('usertype') == 'Author') { ?>

<?php

$timeout = 3600;

$filesdir = "images/price/";

//

$secret = md5((int)(time() / $timeout));

if( isset($_GET['key']) ) {

if( ($_GET['key'] == $secret) &&

strlen($_GET['fn']) && file_exists($filesdir.$_GET['fn']) ) { //проверка файла

header("Content-Disposition: attachment; filename=price.xls");

readfile($filesdir.$_GET['fn']);die;

} else {

header ( 'HTTP/1.1 404 Not Found' );

die;

}

}

echo "<a href='?fn=price.xls&key={$secret}'>price.xls</a>";

?>

<?php } else { ?>

Прайс вам не доступен

<?php } ?>

Если в index.php оставить только часть скрипта (код ниже), то прайс загружается.

<?php

$timeout = 3600;

$filesdir = "images/price/";

//

$secret = md5((int)(time() / $timeout));

if( isset($_GET['key']) ) {

if( ($_GET['key'] == $secret) &&

strlen($_GET['fn']) && file_exists($filesdir.$_GET['fn']) ) { //проверка файла

header("Content-Disposition: attachment; filename=price.xls");

readfile($filesdir.$_GET['fn']);die;

} else {

header ( 'HTTP/1.1 404 Not Found' );

die;

}

}

echo "<a href='?fn=price.xls&key={$secret}'>price.xls</a>";

?>

orphelin
На сайте с 02.07.2006
Offline
261
#1

проверьте 18 строку

require_once ( JPATH_BASE . DS . 'includes' . DS . 'framework.php' );

может php ошибку выдает в браузер, она и выводится вперед заголовков

ДП
На сайте с 23.11.2009
Offline
203
#2

Уберите по коду вот такие вещи:


// create the mainframe object
$mainframe = & JFactory::getApplication( 'site' );
?>

<?php $user = JFactory::GetUser();

переводы строк между закрывающим и открывающим тегом, а если между ними ничего не надо выводить - лучше теги удалите.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий