|
Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » header() в php |
|
header() в php
|
Студент АВТ-шник Сообщения: 100 |
проблема такая: у мну имеется на сайте волкальной сетке хттп сервак, на котором на пхп я написал скрипт поиска музы. при выводе результатов русские имена файлов кодируются функцией rawurlencode() чтобы их мона было скачать. проблема в том, что при скачивании ни explorer ни opera не декодируют русские имена файлов обратно (а хотелось бы ).
подскажите кто знает, как сделать перекодировку имени файла при сохранении |
|
------- Отправлено: 22:35, 17-12-2003 |
Студент АВТ-шник Сообщения: 100
|
Профиль | Отправить PM | Цитировать проблему решил самостоятельно уже
|
------- Отправлено: 01:50, 18-12-2003 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Engrossed by the Void Сообщения: 2229
|
Профиль | Отправить PM | Цитировать А решение в студию?
![]() |
------- Отправлено: 02:26, 18-12-2003 | #3 |
Студент АВТ-шник Сообщения: 100
|
Профиль | Отправить PM | Цитировать просили - получите...
<? header("Content-type: audio/mpeg"); $data=fopen("../search/".$REMOTE_ADDR.".tmp","r");//файл с результатами поиска для указанного IP $nulstr=fgets($data);//читамем первую строку (#EXTM3U: ) $number=$argv[0];//это номер песни на которую кликнул юзер $k=0;//сбрасываем счётчик while ((!feof($data)) and ($k!=$number+1)) //пока не дошли до конца файла с результатами { $str1=fgets($data);//читаем название песни $str2=fgets($data);//и адрес её if ($k==$number) {//если дошли до нужной песни $str1=explode(":",$str1);//из названия (#extinf:0,<собственно название> $str1=rawurlencode($str1[1]);//выделяем именно название песни $str1=str_replace("%0A","",$str1);//удаляем знак завершения строки $str1=rawurldecode($str1);//и декодируем $i=0; //а эта байда для удаления времени звучания из названия $j=0; $strr1=""; while (($i<strlen($str1)) and ($strr1=="")) { if ($str1[$i]=="," & $j==0) {$j=1; $strr1=substr($str1,$i+1); } $i++; } $str2=rawurlencode($str2);//кодируем адрес песни $str2=str_replace("%0A","",$str2);//удаляем концы строк $str2=str_replace("%0D","",$str2); $str2=rawurldecode($str2);//декодируем $fileinfo=explode(".",$str2); $strr1=$strr1.".".$fileinfo[count($fileinfo)-1];//выделяем в $strr расширение файла (после последней точки) header("Content-Disposition: attachment; filename=".$strr1);//вставляем в заголовок назване песни и расширение readfile($str2);//читаем сам файл в stdout }//но всё это в том случае если мы дошли до нужной песни $k=$k+1;//иначе банально увеличиваем индекс и идём дальше } fclose($data);//закрываем файл с результатами поиска ?> [s]Исправлено: Andrewkras, 10:51 25-12-2003[/s] Добавлено: ЗЫ. файлы можно из браузера качать и слушать но скрипт не может получить к ним доступ. где это прописывается в апаче? |
------- Отправлено: 11:50, 25-12-2003 | #4 |
Engrossed by the Void Сообщения: 2229
|
Профиль | Отправить PM | Цитировать А посмотреть содержимое $str2 перед самым вызовом readfile, вдруг чушь? Может нет прав на чтение из директории, на файл.
|
|
------- Отправлено: 02:36, 26-12-2003 | #5 |
Студент АВТ-шник Сообщения: 100
|
Профиль | Отправить PM | Цитировать не. прикол в том, что когда пхп был как модул апачей, то всё работало, а теперь тупо получается такая ситуация, что клиент может получить доступ к файлу на серваке (даже indexing разрешил) а сам сценарий не может. тут мне кажется либо апач не даёт доступ сцениарию по непонятным причинам, либо надо как-то заставить пхп стартануть от учётной записи юзера залогиненого а не как системная служба
|
------- Отправлено: 03:23, 26-12-2003 | #6 |
Engrossed by the Void Сообщения: 2229
|
Профиль | Отправить PM | Цитировать Логично, согласен. Только нать просто дать права пользователю из-под которого выполняется php на чтение и еще что нужно.
|
------- Отправлено: 02:29, 27-12-2003 | #7 |
Студент АВТ-шник Сообщения: 100
|
Профиль | Отправить PM | Цитировать гы
![]() ![]() когда с удалённой системы берут файл то оно пишел 403 форбиден ![]() тут ещё другая особенность: пхп берёт по http 1.0 а браузеры по http 1.1 может из-за этого апач не выдаёт на 1.0 а на 1.1 выдаёт файлы ![]() Добавлено: если так, то где прописать чтобы пхп скрипт брал по протоколу http 1.1? Добавлено: а хотя нет... тут апач чё-то не даёт доступа... попробовал из браузера и оно тоже выдало форбиден ![]() |
------- Отправлено: 19:13, 27-12-2003 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - [решено] PHP. Fatal error: Function name must be a string in /var/www/index.php on line 15 | Artem-Samsung | Программирование и базы данных | 6 | 29-11-2008 18:37 | |
C/C++ - Add directive to 'stdafx.h' or rebuild precompiled header | Forsberg | Программирование и базы данных | 6 | 12-11-2008 06:00 | |
[решено] Apache 2.2.8 + Php 5.2.6 + MySQL 5.0.51b (win) - не работает php | v0f41k | Вебмастеру | 4 | 11-05-2008 22:08 | |
header и Footer :) | Underson | Вебмастеру | 11 | 07-03-2006 12:06 | |
вопрос по PHP функции header | mar | Вебмастеру | 10 | 13-06-2004 19:44 |
|