X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Помогите с php! Буферизация?!
str3ss
str3ss
Topic Starter сообщение 5.4.2011, 15:57; Ответить: str3ss
Сообщение #1


Немного утрирую скрипт: есть страница выгрузки товара, допустим, в txt формат. Если заходим на страницу без параметров - выводим ссылку на выгрузку. Если гетом передаем dump - делаем выгрузку, возвращаем файл пользователю, и на страницу выводим сообщение о успешной выгрузке.

<html>
<head>
<title>Выгрузка товаров</title>
</head>
<body>
<h1>Выгрузка товаров</h1>
<?php
if(!isset($_GET['dump']))
{
?>
<a href="?dump">Выгрузить</a>
<?php
}
else
{
    //тут выгрузка товара
?>
Выгрузка завершена!
<?php
}
?>
</body>
</html>


место, где "тут выгрузка товара" я представляю так:
в $out я записываю то, что хочу видеть в файле

    $out = "Все товары тут";
    header("Content-type: text/plain");
    header("Content-Disposition: attachment; filename=content.txt");
    echo $out;


Понятно, что если прям так вставить - то ничего работать не будет: не можем отсылать заголовки, т.к. они уже посланы
На ум приходит буферизация - помогите реализовать! Вариант выноса последнего блока в отдельный файл, и из страницы выгрузки ссылаться на него не подходит.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
danisimo
danisimo
сообщение 5.4.2011, 17:01; Ответить: danisimo
Сообщение #2


Чето я не понял в чем проблема, делай выгрузку товаров до того как страницу выводить, то есть в твоем случае

<?
if(isset($_GET['dump'])){
$out = "Все товары тут";
header("Content-type: text/plain");
header("Content-Disposition: attachment; filename=content.txt");
echo $out;

echo "Выгрузка завершена!";
}
else{
?>
<html>
<head>
<title>Выгрузка товаров</title>
</head>
<body>
<h1>Выгрузка товаров</h1>

<a href="?dump">Выгрузить</a>


</body>
</html>
<?}?>


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
str3ss
str3ss
Topic Starter сообщение 5.4.2011, 19:44; Ответить: str3ss
Сообщение #3


(danisimo @ 5.4.2011, 19:01) *
Чето я не понял в чем проблема, делай выгрузку товаров до того как страницу выводить, то есть в твоем случае

и на выходе мы получим файл, содержащий $out и "Выгрузка завершена!" - в этом и проблема
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
freesoccer
freesoccer
сообщение 5.4.2011, 19:53; Ответить: freesoccer
Сообщение #4


и на выходе мы получим файл, содержащий $out и "Выгрузка завершена!" - в этом и проблема

Судя по приведенному коду, именно это и должно выводиться в Вашем content.txt.
Если там должны быть товары - где их выборка?
Суть экспорта в текстовый файл Вы изложили верно, но чтобы данный экспорт произвести необходимо, как минимум, иметь список товаров, который у Вас в коде не наблюдается.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
str3ss
str3ss
Topic Starter сообщение 5.4.2011, 20:41; Ответить: str3ss
Сообщение #5


(freesoccer @ 5.4.2011, 21:53) *
Судя по приведенному коду, именно это и должно выводиться в Вашем content.txt.
Если там должны быть товары - где их выборка?
Суть экспорта в текстовый файл Вы изложили верно, но чтобы данный экспорт произвести необходимо, как минимум, иметь список товаров, который у Вас в коде не наблюдается.

написал же: "Немного утрирую скрипт"
выборку сюда какой смысл писать?

проблема в том, что в файл нужно вывести ТОЛЬКО $out, а не $out и "Выгрузка завершена!"
еще раз поясню: в приведенном коде "Выгрузка завершена!" выведется не в браузер, а в файл

Сообщение отредактировал str3ss - 5.4.2011, 20:42
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
danisimo
danisimo
сообщение 5.4.2011, 21:07; Ответить: danisimo
Сообщение #6


Так а в браузер ничего и не выгрузится в любом случае, вы же вывод делаете в файл.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
str3ss
str3ss
Topic Starter сообщение 5.4.2011, 21:10; Ответить: str3ss
Сообщение #7


(danisimo @ 5.4.2011, 23:07) *
Так а в браузер ничего и не выгрузится в любом случае, вы же вывод делаете в файл.

а что написано в первом посте?
ХОЧУ: возвращаем файл пользователю, и на страницу выводим сообщение о успешной выгрузке.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
freesoccer
freesoccer
сообщение 6.4.2011, 0:28; Ответить: freesoccer
Сообщение #8


ТС, если 2 человека Вас не понимают с первого раза, это о чем-то да говорит.
По теме. После
    header("Content-type: text/plain");
    header("Content-Disposition: attachment; filename=content.txt");

всё выводится в аттач, поэтому все что выводится после этого заголовка ложится в текстовый файл. Ваш вариант ничего другого сделать не может.
По идее Вам нужно сделать следующее:
1. Выдать пользователю фразу "Выгрузка завершена!".
2. Перенаправить редиректом пользователя на скрипт, который сгенерит аттач. По идее новое окно в браузере открываться не будет и Вы добьетесь нужного Вам эффекта.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
webnet
webnet
сообщение 6.4.2011, 12:05; Ответить: webnet
Сообщение #9


<?php
ob_start();
?>
<html>
<head>
<title>Выгрузка товаров</title>
</head>
<body>
<h1>Выгрузка товаров</h1>
<?php
if(!isset($_GET['dump']))
{
?>
<a href="?dump">Выгрузить</a>
<?php
}
else
{
header('Refresh: 0; url=?do=nodelay');
echo $out;
echo "Выгрузка завершена!";
}
if(isset($_GET['do'])){
    header("Content-type: text/plain");
    header("Content-Disposition: attachment; filename=tovari.txt");
}
    ?>
</body>
</html>


Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Помогите вспомнить рекламного бота Телеграм для обмена рекламой
0 Mixatraider 723 21.2.2024, 23:42
автор: Mixatraider
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3384 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1237 24.11.2023, 14:46
автор: alexey
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44888 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) Есть спецы по php/laravel?
3 Mixatraider 1885 26.5.2023, 20:48
автор: Mixatraider


 



RSS Текстовая версия Сейчас: 16.4.2024, 12:58
Дизайн