Вопрос № 100941: Здравствуйте ув. эксперты.
У меня такой вопрос.
Вот например есть файлы 1.rar, 2.rar, 3.rar и т.д. Они находятся в одной папке.
И если указывать ссылку на скажем 1.rar - то по аналогии можно будет загрузить и 2.rar и т.д. (ведь URL одинак...Вопрос № 100973: Здравствуйте эксперты!!! Возник вопрос, вернее сказать задача по реализации массивов данных:
Нужно сделать следующее организовать БД и скрипт следующим образом--->
список городов:
|_Краснодар
| |_ул.Селезнёва--->Данные
...Вопрос № 100997: Помогите найти скрипт редактора (java) и обработчика к нему (php).
Нужен на подобии форумного (IPB). Понимающий теги [b], [i], [font ...], [url], [jpg]. Хорошо бы если набор тегов и количество параметров можно было бы задавать.
..
Вопрос № 100.941
Здравствуйте ув. эксперты.
У меня такой вопрос.
Вот например есть файлы 1.rar, 2.rar, 3.rar и т.д. Они находятся в одной папке.
И если указывать ссылку на скажем 1.rar - то по аналогии можно будет загрузить и 2.rar и т.д. (ведь URL одинаковый по сути) Но нужно чтобы доступ был ограничен.
Я пытаюсь сделать так: вот человек нажал "скачать" и его перебрасывает на страницу загрузки файла. Там проверяется его логин, пароль, ID файла и т.д. после чего создатся временная папка логином этого пользователя. В эту папку из основной копируется нужный файл и потом уже идёт его закачка. Но как средствами php узнать закончилась закачка или нет? И удалить потом эту папку вместе с файлом? (я имею ввиду удалить сразу после того как закончилась передача данных пользователю)
Коненчо можно просто, скажем, проверять логин и пароль, и никуда не перемещать файл из основной папки, просто указывать сначал ссылку на некую страницу с редиектом на файл, но ведь в менеджерах закачек виден URL откуда качается файл! И нужно чтобы этот URL был динамическим. Как такое средствами php сделать, подскажите пожалуйста! Как я уже сказал с созданием динамической папки и копированием туда файла проблем нет, а вот как определить, закончилась закачка этого файла или нет, - я не знаю.
Отвечает: Бородин Александр Олегович
Здравствуйте, Стас Тельнов/[анти]КИЛЛЕР!
Не слишком ли сложно Вы задумали? На мой взгляд, лучше, если ссылки на скачивание будут показываться только зарегистрированным пользователям. Хотите защитить УРЛ от повторных скачиваний? Добавляйте в УРЛ условие - чтобы он содержал имя пользователя, зашифрованное с сегодняшней датой, если не совпадает, - не давать файлу скачаться.
Я ничего не имею против, если хотите своим путем, - идите, но Ваш путь ресурсоемок очень. Он будет потреблять много памяти, больше, чем при простом скачивании. Вам ведь надо-то чего? Чтобы файлы не качались кем ни попадя! Зачем же файл копировать во временную папку - по сути, делать одну и ту же операцию два раза вместо одного?!
--------- Ничто не сближает людей так, как совместное преступление.
Ответ отправил: Бородин Александр Олегович (статус: 9-ый класс)
Ответ отправлен: 05.09.2007, 15:54 Оценка за ответ: 5 Комментарий оценки: Да сложно у меня задумано. Носуть как раз в том, что часть зарегстрированых пользователей может скачать только файл 1.rar(но не все остальные) Часть может скачать 1.rar и 2.rar... И вот тут пользователь может догадаться и вбить в браузер строку содержащую скажем 3.rar(хотя не может скачивать этот файл, но может другие.) Но всё равно ставлю вам 5, за то,
что предупредили меня насчёт ресурсоёмкости и памяти.
Отвечает: Flynn
Здравствуйте, Стас Тельнов/[анти]КИЛЛЕР!
Вам надо выдавать файл с помощью РНР скрипта.
Т.е. ссылка указывает на file.php передавая туда параметры (логин, пароль, айди файла) каким-то методом. Сам скрипт же уже проверяет есть ли доступ у этого логина к этому файлу, есть ли сам файл и если есть - отправляет заголовки в браузер (функция header() ), говорящие браузеру какой тип файла надо принимать, и выдавать сам файл как текст (fopen(),fpassthru(),fclose()).
Таким макаром у вас любой файл будет скачиваться с одной ссылки, а сам файл может находиться в папке даже не доступной извне (при условии что она доступна для чтения в РНР).
Ответ отправил: Flynn (статус: 5-ый класс)
Ответ отправлен: 05.09.2007, 15:55 Оценка за ответ: 5 Комментарий оценки: Большое вам спасибо за действенную идею))) Хотя я не очень хорошо умею пользоваться функцией header() ине знаю что делает fpassthru() - но выяснить такие частности - дело техники!!! Так что спасибо за идею!
выбор будет зависеть также и от характеристик самого файла, его важности для пользователей, количества этих самых пользователей.
предложенное вами решение очень плохое в качестве безопасности - ведь подобрав имя пользователя можно будет скачать его файлы! если же файлы удалять после завершения их скачки, то при разрыве этой скачки пользователь уже не сможет их докачать. ну и, естественно, ресурсы сервера.
подобное решение часто используется на вап-сайтах. там объёмы файлов небольшие и нагрузка получается минимальной. но копируются файлы не в папки, а в общую временную директорию, а к имени файла добавляется уникальная составляющая, благодаря которой пользователи не смогут догадаться о именах других файлов (к примеру timestamp, зашифрованный md5). файлы доступны на протяжении нескольких дней после запроса.
предложенное решение от Flynn также небудет позволять докачивать файлы после разрыва связи, и ещё будет нести дополнительную нагрузку на сервер - каждого пользователя должен будет обслуживать отдельный скрипт на всё время закачки.
наиболее уместным мне кажется такое решение (если файлы большие по объёму и копирование их вызывает затруднения) просто создайте сложные неповторяющиеся имена файлов, таким образом пользователи не смогут скачать всё (не забудьте при этом защитить от просмотра саму директорию с файлами) единственный недостаток при этом - пользователь сможет скачать тот же файл через большой промежуток времени по старому урл, либо дать урл знакомым. но на мой взгляд этот недостаток довольно несущественен!
--------- Есть то, чего вы не знаете, а есть то, о чём даже представить не можете! А оно всё равно есть....
Ответ отправил: Rok-set (статус: 8-ой класс)
Ответ отправлен: 05.09.2007, 16:45 Оценка за ответ: 5 Комментарий оценки: Файлы у меня не большие ( максимум 1 мегабайт)Да и важность не большая. Это просто бонгусы пользователям. И суть в том, чтобы пользовательне смог получив небольшой и малоценнй бонус, скачать по аналоги более ценный! так что спасибо,буду иметь ввиду и сделаю всё проще, чемзадумал сначала))
Отвечает: Basse
Здравствуйте, Стас Тельнов/[анти]КИЛЛЕР!
Не совсем понял зачем такие сложности...
Вы не показывайте пользавателю, где лежат файлы и их реальные названия. Передавайте скрипту id файла.
А скрипт после всех проверок пусть отдаёт файл(header(Location:...)).
А в htaccess'e запретите просмотр директорий с файлами
Ответ отправил: Basse (статус: 1-ый класс)
Ответ отправлен: 05.09.2007, 16:48 Оценка за ответ: 4 Комментарий оценки: Один из предыдущих экспертов уже подсказал мне про header(). Я сам просто не додумался до этого, т.к. этой функцией не разу не пользовался и не знаю её синтаксис. (ну сейчас то уже нашел его)
Вопрос № 100.973
Здравствуйте эксперты!!! Возник вопрос, вернее сказать задача по реализации массивов данных:
Нужно сделать следующее организовать БД и скрипт следующим образом--->
список городов:
|_Краснодар
| |_ул.Селезнёва--->Данные
| |_ул.Северная---> Данные
| |_ул.Чапаева--->Данные
| |_ул.Шорса--->Данные
|_Новоросийск
|_ул.Дона--->Данные
и т.д.
Помогите люди добрые!!!!
Хотябы киньте ссылочку на литературу дальше я своим ходом....
Или если есть где примерный скрипт поделитесь расскажите каким образом это всё организовать так чтобы добавлялись и города и улицы в список бд через админку....
Какими операторами пхп лучше пользоваться при реализации этой задачи... вобще нужно понять сам алгоритм и процесс создания такого скрипта подскажите пожалуйста....
Отвечает: Бородин Александр Олегович
Здравствуйте, Владимир Геннадьевичь wenom!
Нечто подобное делать уже не раз мне приходилось, поэтому советы дам следующие:
1) Создайте таблицу имеющихся городов. В ней всего две колонки - ID города(INT, первичный ключ), название города(VARCHAR(255)).
2) Создайте таблицу улиц. В ней колонки следующие - ID улицы(INT, первичный), ID города(INT), которому принадлежит эта улица, сведения(TEXT).
Можно варьировать типы столбцов по своему усмотрению, я написал такие типы, исходя из собственного опыта.
Как теперь добывать нужные записи? Выберите любой город, по номеру города в таблице выдайте скриптом имеющиеся в нем улицы, а по выбору улицы уже сведения о ней.
Такую задачку хорошо выполнять с помощью Ajax(чтобы избежать перезагрузки страницы при каждом выборе). В свое время я как раз и делал такое с помощью библиотеки xAJAX(http://xajaxproject.org). Осваивается библиотека достаточно легко(к ней прилагаются примеры), если Вы знакомы с объектно-ориентированным программированием. Если нет - то писать такое приложение вообще будет очень сложно, на мой взгляд.
Извините, что не прилагаю скрипта. Он довольно велик, к тому же там не один файл, а несколько. Но если хотите посмотреть его в работе, то я в личку могу кинуть адрес.
--------- Ничто не сближает людей так, как совместное преступление.
Ответ отправил: Бородин Александр Олегович (статус: 9-ый класс)
Ответ отправлен: 06.09.2007, 09:02 Оценка за ответ: 5 Комментарий оценки: Спасибо вы достаточно ёмко изложили весь процесс решения данной задачи... Хотелось бы посмотреть на скрипт.... хотябы краем глаза... Всё таки я пока - что абстрактно представляю сам алгоритм изъятия и записи данных из БД
Вопрос № 100.997
Помогите найти скрипт редактора (java) и обработчика к нему (php).
Нужен на подобии форумного (IPB). Понимающий теги [b], [i], [font ...], [url], [jpg]. Хорошо бы если набор тегов и количество параметров можно было бы задавать.
Отправлен: 05.09.2007, 23:24
Вопрос задал: NiGHT (статус: Практикант)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Azrr
Здравствуйте, NiGHT!
Вот библиотека которой я сам пользуюсь, незнаю, зачем вам клиентская часть на java, наверно вы имели ввиду JavaScript, если так пользуйтесь - http://xbb.uz/
Ответ отправил: Azrr (статус: 3-ий класс)
Ответ отправлен: 05.09.2007, 23:38 Оценка за ответ: 5