• PHP header('Content-Disposition: inline - почему не работает?

    @ifap Автор вопроса
    Что ж, джентльмены, из двух десятков ваших попыток блеснуть остроумием, я вынес-таки крупицу небесполезных знаний: не бывает inline с filename, за что весьма вами благодарен. Дальнейшее обсуждение моих добродетелей и чего мне, по вашему мнению, следует хотеть, вы, очевидно, можете с успехом продолжить и без моего участия.
    Написано
  • PHP header('Content-Disposition: inline - почему не работает?

    @ifap Автор вопроса
    Дмитрий, да вот же, это буквально мой код:
    Сейчас проблемный код выглядит так:

    header('Content-Type: text/html; charset=Windows-1251');
    header('Content-Disposition: inline; filename=output.htm');
    readfile('header.htm');
    echo $var;
    readfile('footer.htm');
    exit;
    Где $var - результат работы всей предыдущей части скрипта.

    Конкретно $var содержит то или иное диагностическое сообщение с html разметкой, хотя вряд ли это важно. Вместо echo $var; можно использовать readfile('mesaageN.htm'); где mesaageN.htm - один из заранее подготовленных файлов с тем же самым сообщением, если это что-то даст. И да, борьба в чистом виде за феншуй, чтобы в адресной строке не маячил адрес скрипта. Мне в голову не приходило, что эта задача может оказаться настолько нетривиальной.
    Написано
  • PHP header('Content-Disposition: inline - почему не работает?

    @ifap Автор вопроса
    Дмитрий, да что ж меня так буквально-то все понимают. "Каждому юзеру свой контент" это не буквально "Привет, юзер N", это сегодня одно, завтра другое, и юзеры заранее не известны. Это скрипт для регистрации, в зависимости от того, где регистрирующийся налажал, ему выдается одно из диагностических сообщений: забыли указать фамилию, в номере телефона допустимы только цифры и т.п.
    Написано
  • PHP header('Content-Disposition: inline - почему не работает?

    @ifap Автор вопроса
    Дмитрий,
    die(header('Location: /file.htm'));

    Нет проблемы включить в выдачу файл со статичным содержимым и показать в адресной строке его URL, проблема в том, что содержимое у file.htm для каждого юзера будет уникальным.

    Сейчас проблемный код выглядит так:
    header('Content-Type: text/html; charset=Windows-1251');
    header('Content-Disposition: inline; filename=output.htm');
    readfile('header.htm');
    echo $var;
    readfile('footer.htm');
    exit;

    Где $var - результат работы всей предыдущей части скрипта. И все работает, все устраивает, кроме того, что в адресной строке остается script.php, а хочется после завершения его работы получить output.htm
    Написано
  • PHP header('Content-Disposition: inline - почему не работает?

    @ifap Автор вопроса
    Ипатьев, не буквально, если Вы об этом. В скаченном файле должны быть стандартные шапка и подвал, а между ними - диагностическое сообщение о результатах работы скрипта, коих может быть несколько, в зависимости от этих самых результатов.

    Так вот, как показать юзеру статику (шапку и подвал, да даже с единственным вариантом сообщения) с "правильным" URL я знаю. Как показать все то же самое с вариантами через запись в файл и демонстрацию уже его - тоже, но при этом представляю объем танцев с формированием/удалением уникальных файлов, т.к. результатов обработки скрипта может быть больше 1 в единицу времени и для разных юзеров они запросто могут быть разными.
    Написано
  • PHP header('Content-Disposition: inline - почему не работает?

    @ifap Автор вопроса
    Можно или сообщить клиенту, чтобы он запросил другой адрес (что делает совсем другой заголовок - Location)

    По другому адресу должна лежать статика, а не нечто, формируемое в результате работа скрипта. Либо скрипт пишет результаты своей работы в файл, а клиенту уже он отдается, но интуиция подсказывает, что это сродни удалению гланд нетрадиционным инновационным способом.
    или клиент должен был сразу запрашивать file.htm

    Клиент передает скрипту данные в форме и в душе не любит, что ему скрипт вернет - зависит от переданных данных и результатов их обработки.
    Забавно, что человек уже два месяца(!) бьётся головой об стену, вместо того, чтобы войти в дверь.

    Куда забавнее, что Вы два месяца ждали момента для своего искрометного коммента, но так и не указали на эту дверь.
    Написано
  • Можно ли передать данные из PHP в «отдельностоящий» HTML?

    @ifap Автор вопроса
    AUser0, в итоге сделал так:

    readfile('header.htm');
    echo $bytes;
    readfile('footer.htm');


    Мне не нравится, что URL у конечного файла остается от PHP-обработчика, но это уже чистый феншэй, на который можно и забить, особенно если сравнить с предложенным Вами решением.
    Написано
  • Можно ли передать данные из PHP в «отдельностоящий» HTML?

    @ifap Автор вопроса
    Можно ещё прописать PHP код внутрь этого result.html, хранить данные на самом сервере, ну и собирать страницу динамически, хотя для обращающихся она будет выглядеть статичной.

    Но как, Холмс? Вопрос в том и заключается: как result.html получить значение $bytes из process.php Что ссылку другим передать не получится - не проблема. Переменная содержит текстовое описание проблемы с формой или ее обработкой (если она возникает), конкретно для этого пользователя. Статичное "что-то пошло не так - попробуйте угадать, что именно" - знаю как, но это не решение.
    Написано
  • Как спарсить текст, идущий после определенного HTML-кода?

    @ifap Автор вопроса
    Roman Fov, методом ненаучного тыка наугад нашел решение:
    //td[descendant-or-self::*/text()='TEXT'][1]/following-sibling::*[1]

    Результат позволяет свалить все содержимое контейнера в одну текстовую строку, даже если содержимое размечено тегами.
  • USB Flash: почему в NTFS на порядок медленнее, чем в FAT32?

    @ifap Автор вопроса
    Saboteur, шут ее знает, я переразбивал неспроста - искаропки на флешке был небольшой (размер не помню) неразмеченный кусок, который глаз резал.
  • USB Flash: почему в NTFS на порядок медленнее, чем в FAT32?

    @ifap Автор вопроса
    Saboteur, флешке нет и месяца, проверку секторов проходит без ошибок, резидентного антивируса и прочих резидентов нет. Индексирование отключено. Политики? А почему они тогда на другую флешку в NTFS не распространяются?
    Сдается мне, что зря я партицию на ней пересоздавал. Написал в поддержку производителя, посмотрим, какие у них мысли будут.
  • USB Flash: почему в NTFS на порядок медленнее, чем в FAT32?

    @ifap Автор вопроса
    SagePtr, нет, это не кэш, во всех случаях стоит дефолтное "оптимизировать для быстрого извлечения". И это флешки под кино, недозаписанный файл очень легко заметить ;)
  • USB Flash: почему в NTFS на порядок медленнее, чем в FAT32?

    @ifap Автор вопроса
    Saboteur, Win10. И на другую флешку в NTFS/4k, и на ту же флешку в FAT32 копируется заметно быстрее.
  • USB Flash: почему в NTFS на порядок медленнее, чем в FAT32?

    @ifap Автор вопроса
    Другой бенчмарк - это виндовый Проводник, который показывает те же цифры, и собственные глаза, которые видят, как 20 гигов копируются около 20 минут, тогда как на другую флешку - около 5 минут. Т.е. падение скорости легко заметить невооруженным бенчами глазом.
  • USB Flash: почему в NTFS на порядок медленнее, чем в FAT32?

    @ifap Автор вопроса
    Было 32Кб для FAT32 и 4Кб для NTFS, увеличил до 32Кб для NTFS - скорость "взлетела" аж до 14МБ/с, при увеличении до 64Кб - упала до 13Мб/с. Уже лучше, но все еще не 42Мб/с, которые на FAT32, и тем более не 86Мб/с, которые показывает старая флешка в том же NTFS и с теми же 4Кб кластерами. Правда, она не 64Гб, а 32Гб, но вряд ли дело в этом.
    Про допустимые типы FS производитель молчит...
  • Как спарсить текст, идущий после определенного HTML-кода?

    @ifap Автор вопроса
    Я пытался прикрутить к Вашему коду string-join, но не смог в синтаксис, видимо. Я вот также не понимаю, почему не работает:
    //td[descendant-or-self::*/starts-with(text(),'TEXT')][1]/following-sibling::*[1]/descendant-or-self::*/text()

    Разрешите я взгляну на Вас глазами кота из "Шрека" и попрошу правильно прикрутить string-join и starts-with? :) Я честно пытался сам, но смог только в OR, а дальше синтаксис меня победил :(
  • Как спарсить текст, идущий после определенного HTML-кода?

    @ifap Автор вопроса
    Спасибо, уже первый вариант подошел. А подскажите еще, как свалить отпарсенный текст "в кучу"?

    Т.е. если мы имеем:
    <div>Title</div>
    <div>Text1<b>Text2</b></div>

    или в тексте знак переноса строки, то результат парсинга - 2 (или более) блока текста: "Text1" и "Text2", а как их слить в один "Text1Text2"?
  • Как спарсить текст, идущий после определенного HTML-кода?

    @ifap Автор вопроса
    Спасибо, работает! Но мне явно следовало уточнить, что внутри первого и второго контейнера может быть не только текст ;) Например, так:
    <div><b>Title</b></div>
    <div>Text <span>text</span></div>

    И в этом случае запрос не работает :(

    Можно его переформулировать так, чтобы мы отталкивались от DIV, в котором содержится «Text» (и что-то еще, но другие DIV в него точно не вложены), и парсили текстовое содержимое следующего за ним DIV?
  • Content-Security-Policy: host-source VS 'self': в чем разница?

    @ifap Автор вопроса
    granty,
    Делайте как вам удобнее, только на публичных доменах типа github.com открывать *.github.com не комильфо

    То есть, необходимости нет, есть "вкусовщина" и отдельные случаи, когда имя хоста заранее неизвестно целиком и приходится использовать 'self' (попутно убивая смысл применения CSP)?

    Нельзя, для инлайн-стилей в теге требуется 'unsafe-inline'

    Значит я слишком буквалистски прочел мозилловское:
    Allows the use of inline resources, such as inline <script> elements, javascript: URLs, inline event handlers, and inline <style> elements.

    ;) Тогда вопрос снимается и логика понятна.
    А 'unsafe-unline' как раз и нехорошо разрешать, тк скрипт из неразрешённого хост-источника получает контроль над HTML.

    Ваши бы слова - да разрабам, например, движка phpBB в уши...
  • Content-Security-Policy: host-source VS 'self': в чем разница?

    @ifap Автор вопроса
    У сайта может быть множество поддоменов, в том числе и динамических.

    Можно задать something-src *.domain.com, что покроет все подмножество поддоменов известного нам домена. А запрет неизвестных - в этом же и суть CSP...

    Потому, что такой встроенный скрипт может появиться на странице без ведома вебмастера.

    Вы несколько выдрали из контекста, мой вопрос был скорее про почему, например, <img style="something"> - можно, согласно одному лишь default-src domain.com, а <style>something</style> в том же самом HTML-файле - нет, надо дописывать unsafe-inline? Уж если злоумышленник может модифицировать наш HTML-файл, то ему фиолетово, как именно XSSить.

    Я понимаю, как это работает, я не понимаю почему и где логика, не нарушающая саму идею CSP?