За последние 24 часа нас посетили 61713 программистов и 1757 роботов. Сейчас ищут 1204 программиста ...

Вывод текстового файла по ID сессии

Тема в разделе "PHP для новичков", создана пользователем 6stPROD, 27 июл 2014.

  1. 6stPROD

    6stPROD Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    124
    Симпатии:
    0
    Адрес:
    Тутаев, Ярославская область. Российская Федерация
    Столкнулся с такой проблемой:

    В личном кабинете пользователь может загрузить файл, который попадает в базу с ID сессии, именем и тд.

    Вопрос в том как я могу вывести ссылку, по которой пройдет пользователь и у него откроется содержимое его залитого файла? (При этом учитывая такие типы файлов как doc txt и тд)

    $i= session [id]
    readfile("$i");

    Из такого бреда ничего не могу придумать. Прошу помочь
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Почему у файла имя ID сессии? Делается просто - создаётся дополнительная таблица в базе, куда записывается, какой файл какой пользователь записал
     
  3. 6stPROD

    6stPROD Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    124
    Симпатии:
    0
    Адрес:
    Тутаев, Ярославская область. Российская Федерация
    а как в скрипте указать тот файл, который залил пользователь? ведь он будет не один, их несколько, каким должен быть код, определяющий по ид сессии имя файла и открывающий именно его, тому кто его залил?
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Причём здесь вообще ID сессии? Вы имеете в виду автоматический Session ID, который создаёт сам PHP? Вы в курсе, что он разный от сессии к сессии? Создаёте таблицу, в которой написано, что пользователь с ID 25 залил файл с именем burda.doc
     
  5. 6stPROD

    6stPROD Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    124
    Симпатии:
    0
    Адрес:
    Тутаев, Ярославская область. Российская Федерация
    Таблица есть с ид пользователя, есть название файла с именем burda.doc, так вот как прописать в коде такое - открыть для этого пользователя тот файл, который он залил и такого то расширения???
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Если у вас есть таблица, о которой я говорю - берёте из неё имя файла с расширением. Вот такая примерно таблица должна быть, если упрощённо:
    Код (Text):
    1.  
    2. user_id | filename
    3. 12        | burda.doc
    4. 13        | hren.docx
    Теперь поняли идею?
     
  7. 6stPROD

    6stPROD Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    124
    Симпатии:
    0
    Адрес:
    Тутаев, Ярославская область. Российская Федерация
    это я итак знаю :) как бы обьяснить....

    Я юзер под ID 1, залил файл 111.txt, появилась ссыль, на которую я нажимаю и открывается файл, так вот меня интересует сам код, ибо пользователей куча, а открыться при этой ссылке(которая будет у всех) должен только тот файл, который был залит именно мной
     
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Т.е. в адресе ссылки нету? Ну ок. В чём сложность-то?

    1. При авторизации пишется в сессию ID чувака
    2. Ссылка идёт на скрипт отдачи файла
    3. Этот скрипт вытаскивает из сессии ID чувака, и по этому ID находит в таблице с файлами имя его файла
    4. Читает этот файл и выдаёт его в браузер
    5. Чтоб файл у чувака не открылся, а начал скачиваться, а также был под правильным именем, отдаётся перед содержимым соответствующий заголовок. Здесь в одной из закреплённых тем можно посмотреть, какой.
     
  9. 6stPROD

    6stPROD Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    124
    Симпатии:
    0
    Адрес:
    Тутаев, Ярославская область. Российская Федерация
    эх :( да я это итак сам понимаю, не могу еще реализовать, не хватает головы ( у меня есть набросок аткого плана

    $i= ID сессии
    readfile("$i . txt");

    трабла в том что я не могу его грамотно написать (
     
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Ну глупость же пишите. Я же написал - находит в таблице с файлами. Вы же к базе как-то умеете обращаться, раз есть таблица с пользователями? Неужели обязательно код писать?

    Код (PHP):
    1. $user_id = $_SESSION["user_id"]; // ID пользователя, не сессии! Не путайтесь в понятиях
    2. $res = mysqli_query($db, "select * from files where user_id='$user_id'");
    3. $file = mysqli_fetch_assoc($res);
    4. // Теперь в $file["filename"] ваше имя файла, можете делать ваш readfile:
    5. readfile($file["filename"]);
    6.  
    Недостающие части сами попробуйте дописать. Ну и таблицы переименуйте, как там оно у вас называется, я не знаю.
     
  11. 6stPROD

    6stPROD Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    124
    Симпатии:
    0
    Адрес:
    Тутаев, Ярославская область. Российская Федерация
    хорошо, спасибо большое за помощь!
     
  12. 6stPROD

    6stPROD Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    124
    Симпатии:
    0
    Адрес:
    Тутаев, Ярославская область. Российская Федерация
    В общем я так и не понял ничего (((

    Вот ошибки
    и сам код
    Код (Text):
    1. <?php
    2.  
    3. $user_id = $_SESSION["user_id"];
    4. $res = mysqli_query($db, "select * from upload where user_id='$user_id'");
    5. $file = mysqli_fetch_assoc($res);
    6. readfile($file["filename"]);
    7.  
    8. ?>
    Добавлено спустя 3 минуты 6 секунд:
    и как я понимаю тут
    Код (Text):
    1. readfile($file["filename"]);
    нужно вставить имя файла, но тогда этот файл будет показываться всем а не только залившему его ((
     
  13. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Ээээээ... Я же написал, код не полный. Рано вам ещё такую систему делать. Почитайте, как с базой обращаться - как к ней подключиться, как делать запросы. Только сразу на расширении mysqli, а не mysql... Вот, к примеру: http://www.php.su/articles/?cat=phpdb&page=010. Вообще, я не понимаю, неужели так трудно неделю потратить на чтение какой-нибудь книжки по языку, прежде чем писать на нём какие-то системы грандиозные?