Столкнулся с такой проблемой: В личном кабинете пользователь может загрузить файл, который попадает в базу с ID сессии, именем и тд. Вопрос в том как я могу вывести ссылку, по которой пройдет пользователь и у него откроется содержимое его залитого файла? (При этом учитывая такие типы файлов как doc txt и тд) $i= session [id] readfile("$i"); Из такого бреда ничего не могу придумать. Прошу помочь
Почему у файла имя ID сессии? Делается просто - создаётся дополнительная таблица в базе, куда записывается, какой файл какой пользователь записал
а как в скрипте указать тот файл, который залил пользователь? ведь он будет не один, их несколько, каким должен быть код, определяющий по ид сессии имя файла и открывающий именно его, тому кто его залил?
Причём здесь вообще ID сессии? Вы имеете в виду автоматический Session ID, который создаёт сам PHP? Вы в курсе, что он разный от сессии к сессии? Создаёте таблицу, в которой написано, что пользователь с ID 25 залил файл с именем burda.doc
Таблица есть с ид пользователя, есть название файла с именем burda.doc, так вот как прописать в коде такое - открыть для этого пользователя тот файл, который он залил и такого то расширения???
Если у вас есть таблица, о которой я говорю - берёте из неё имя файла с расширением. Вот такая примерно таблица должна быть, если упрощённо: Код (Text): user_id | filename 12 | burda.doc 13 | hren.docx Теперь поняли идею?
это я итак знаю как бы обьяснить.... Я юзер под ID 1, залил файл 111.txt, появилась ссыль, на которую я нажимаю и открывается файл, так вот меня интересует сам код, ибо пользователей куча, а открыться при этой ссылке(которая будет у всех) должен только тот файл, который был залит именно мной
Т.е. в адресе ссылки нету? Ну ок. В чём сложность-то? 1. При авторизации пишется в сессию ID чувака 2. Ссылка идёт на скрипт отдачи файла 3. Этот скрипт вытаскивает из сессии ID чувака, и по этому ID находит в таблице с файлами имя его файла 4. Читает этот файл и выдаёт его в браузер 5. Чтоб файл у чувака не открылся, а начал скачиваться, а также был под правильным именем, отдаётся перед содержимым соответствующий заголовок. Здесь в одной из закреплённых тем можно посмотреть, какой.
эх да я это итак сам понимаю, не могу еще реализовать, не хватает головы ( у меня есть набросок аткого плана $i= ID сессии readfile("$i . txt"); трабла в том что я не могу его грамотно написать (
Ну глупость же пишите. Я же написал - находит в таблице с файлами. Вы же к базе как-то умеете обращаться, раз есть таблица с пользователями? Неужели обязательно код писать? Код (PHP): $user_id = $_SESSION["user_id"]; // ID пользователя, не сессии! Не путайтесь в понятиях $res = mysqli_query($db, "select * from files where user_id='$user_id'"); $file = mysqli_fetch_assoc($res); // Теперь в $file["filename"] ваше имя файла, можете делать ваш readfile: readfile($file["filename"]); Недостающие части сами попробуйте дописать. Ну и таблицы переименуйте, как там оно у вас называется, я не знаю.
В общем я так и не понял ничего ((( Вот ошибки и сам код Код (Text): <?php $user_id = $_SESSION["user_id"]; $res = mysqli_query($db, "select * from upload where user_id='$user_id'"); $file = mysqli_fetch_assoc($res); readfile($file["filename"]); ?> Добавлено спустя 3 минуты 6 секунд: и как я понимаю тут Код (Text): readfile($file["filename"]); нужно вставить имя файла, но тогда этот файл будет показываться всем а не только залившему его ((
Ээээээ... Я же написал, код не полный. Рано вам ещё такую систему делать. Почитайте, как с базой обращаться - как к ней подключиться, как делать запросы. Только сразу на расширении mysqli, а не mysql... Вот, к примеру: http://www.php.su/articles/?cat=phpdb&page=010. Вообще, я не понимаю, неужели так трудно неделю потратить на чтение какой-нибудь книжки по языку, прежде чем писать на нём какие-то системы грандиозные?