На сайте есть возможность загружать картинки с компьютера, при этом есть необходимость сохранять информацию о загруженной картинке в сессии. Это происходит так - пользователь выбирает картинку, затем AJAX посылает запрос к файлу load.php где картинка обрабатывается и сохраняется на сервере (+ заносятся данные в сессию - ссылка на картинку), а затем ссылка передается на страницу. Хотелось бы, чтоб при переходе на другую страницу сайта данные занесенные в сессию (ссылка на картинку) были видны, но этого не происходит - пока не обновить любую из посещаемых страниц ссылка занесенная в сессию не видна. Подскажите, как можно обновлять данные сессии или как реализовать видимость занесенных в сессию данных?
(Добавление)
Спасибо всем за помощь - разобрался
Кэшировал страницы на сутки. Видимо придется убрать кэширование вообще
Добрый день. Хочу установить imagick (ImageMagick установлен и работает)... Скачал php_imagick.dll с официального сайта для php 5.3 (пробовал много разных версий и даже менял php на 5.4 - качал другие dll для этой версии). Устанавливал так - скидывал dll в папку ext и прописывал в php.ini extension=php_imagick.dll. Даже в Apache (2.2.22) httpd.conf прописывал SetEnv MAGICK_HOME "C:/Program Files (x86)/ImageMagick" (хотя не понял зачем)... Работает так - в php 5.4 Apache перезапускается нормально, но в phpinfo() ничего не появляется. В php 5.3 сервер просто не запускается - пишет: "Requiest operation has faild.", убираю extension=php_imagick.dll и все запускается...
2. Как быть? Почему не получается подключить imagick? Если устанавливать Visual Studio 2008 и самому создавать dll это что-то изменит?
- Добрый день. Хочу установить к себе на компьютер (Windows 7 x64) IMagick. Скачал с сайта ImageMagick-6.8.0-7-Q16-windows- dll.exe (версия не самая свежая, но на хостинге стоит именно эта). Поставил -> cmd -> c:\> convert выдает кучу параметров...
1. Подскажите, как получить доступ к convert через <?php exec(); ?>? Пробовал несколько вариантов, ничего не работает...
- Хочу установить imagick... Скачал php_imagick.dll с официального сайта для php 5.3 (пробовал много разных версий и даже менял php на 5.4 - качал другие dll для этой версии). Устанавливал так - скидывал dll в папку ext и прописывал в php.ini extension=php_imagick.dll. Даже в Apache (2.2.22) httpd.conf прописывал SetEnv MAGICK_HOME "C:/Program Files (x86)/ImageMagick" (хотя не понял зачем)... Работает так - в php 5.4 Apache перезапускается нормально, но в phpinfo() ничего не появляется. В php 5.3 сервер просто не запускается - пишет: "Requiest operation has faild.", убираю extension=php_imagick.dll и все запускается...
2. Как быть? Почему не получается подключить imagick? Если устанавливать Visual Studio 2008 и самому создавать dll это что-то изменит?
Надеюсь на помощь! (Добавление)
C 1 вопросом разобрался... Сам намудрил - просто convert без указания пути и все работает... Но с этим я не очень разбирался, а вот 2 вопрос второй день ковыряю и ничего не получается...
Скидываю архив со всем, что просили...
Как я заметил проблема возникает только с теми файлами у которых изначально есть перечисленные мной последовательности. То есть, если в открытом на Windows файле есть \0 или '', то для Windows это не проблема. А при открытии на Linux появляются такие же последовательности вместо \x0 и '. И он их не различает...
Если я вас правельно понял, то пых это php? Обновить его нет возможности, так как проблемы с тем php, который у моего хостера. Если у вас на Linux все будет работать нормально, то прийдется общатся с хостером
Так вот в Windows $contents[2] == "\x0" и $contents[3] == "B"
А на Linux получается $contents[2] == "\" и $contents[3] == "0"
То есть мало того, что он неправельно отдает символы, так он из 1 символа делает 2.
Я пробовал делать replace, но неправельный "\0" и совершенно правельные 2 символа идущие подряд "\" и "0" он не различает и спокойно меняет. Если в файле нет естественных "\" и "0" идущих подряд, то после замены получается корректный файл. А если есть, то замена не помогает.
Файл - любой рисунок. После $img=fopen ->fread => fopen ->fwrite( ,$img) на Linux рисунок не востанавливается.
Другие кодировки не пробовал. Пока не думал над этим, но так с ходу не совсем понятно как я потом смогу к байтам перейти? А это важно - ведь моя функция ищет конкретные комбинации байтов и преобразовывает их.
А с чего вы взяли, что визуальное представление двух бинарников будет идентичным?
Ну как бы файл то один и тот же и символы те же самые. Просто в случае windows, file_get_contents записывает этот конкретный символ как \х0, а Linux выдает как \0. Самое интересное в том, что если перезаписать файл –
Создавал и тестировал функцию на Windows. Но когда закинул ее на Linux хостинг, оказалось, что при чтении файла через fopen ->fread бинарные данные на Linux получаются другие. В частности, вместо \х0 выдает \0, а вместо ' выдает ''. После того как поменял одно на другое все заработало. Но я тестировал лишь один файл, а их может быть много разных и возможно обнаружатся еще несоответствия. Информацию о таких различиях я нигде не нашел. Подскажите, кто знает, где можно найти такую информацию? Или возможно есть php функции или способы избежать подобной проблемы?
Спасибо.
Такая вот ситуация - у меня на сайте есть отправка писем с помощью функции mail();. Тестировал ее и обнаружил, что некоторые письма приходят не полностью, а обрезаются. Скорее всего это из-за того, что они большие (хотя я бы так не сказал - максимум 1000-2000 слов вместе с html разметкой). Пробовал сокращать html - письмо приходит больше, но все равно обрезается. Тестировал конкретно на mail.ru. Внутри последнего тега mail.ru автоматом ставит id="mailru-webagent-gen-50". В заголовках отправляю только:
$headers = "Content-type: text/html; charset=utf-8 \r\n";
Подскажитечто вообще происходит - почему письмо обрезается? И как сделать чтоб письмо не обрезалось?
рисунок я вывести могу - он создается корректно и сохраняется в необходимом месте
ALEN пишет:
Есть второй вариант.
насчет - header("Content-Disposition: attachment; filename=file.zip;"); - не могу разобраться.
вот к примеру в той же папке где и страница есть рисунок 1.jpg, я ставлю код
<?php header("Content-Disposition: attachment; filename=1.jpg;"); ?> в скрипт срабатывающий после нажатия кнопки, но ничего не происходит, окно с предложениес сохранить данный рисунок не появляется. Пробовал использовать echo file_get_contents(); - но он выдает мне текст файла.
Что я не так делаю? (Добавление)
ALEN пишет:
не еще, а вместо)))
Всмысле? В файле который создает рисунок вместо -
header("Content-Type image/jpg");
необходимо ставить -
header("Content-Disposition: attachment; filename=1.jpg;"); ?????
Подскажите - есть кнопка при нажатии на которую происходит отправление параметров в create-image.php, где создается рисунок.
Как сделать, чтоб при нажатии на эту кнопку происходило скачивание этого, динамически созданного рисунка - то, есть после нажатия открывалось окно "Сохранить".