Создание папки с именем ID пользователя
Уважаемые форумчане нужна помощь. Как создать папку с именем ID авторизированного пользователя.
ID пользователя показывается так: <?php echo "{$GLOBALS['user_login']->data['Id']}"; ?>. Папку создаю так: <?php if ($_POST['']); $folder = '/папка/'; @mkdir($folder, 0777); ?> Как вставить глобальную переменную в php код, чтобы создалась папка с именем ID пользователя? |
Цитата:
mkdir создавая директорию по умолчанию дает ей максимальные права, то есть: if(выражение) @mkdir($folder . $GLOBALS['user_login']); Определите выражение и..., только $_POST[''] даже представить не возможно, чего тут пытаются проверить, нет ключей "пусто". ) |
Директория создается при переходе на страницу. Имя папки должно быть числом (ID-ом пользователя, которое дается ему при регистрации, т.е. оно ему уже присвоено). Пользователь авторизирован и заходит на страницу по условию. Сам заход пользователя на страницу автоматически создает папку. Весь вопрос в присвоение папки имени (числа), которое является ID пользователя. $GLOBALS['user_login'] - может быть, как логином, так и E-mail пользователя (что указал).
Вот так можно написать? @mkdir($folder . $GLOBALS['user_login']->data['Id']); |
Можно и так
@mkdir($folder . $GLOBALS['user_login']['Id']); обрезанное, это всего лишь результат неудачного копирования. :) Вот только создание папки при заходе на страницу, это как? Зашел раз, создана директория, опять зашел еще, и т.д.? |
Создается, если ее нет. Но при окончании манипуляций пользователя на странице, она из временной директории переносится в "рабочую", где через сутки удаляется. При следующем заходе все повторяется.
|
Цитата:
$usrdir = '/name/' . $GLOBALS['user_login']->data['Id']; if(!file_exists($usrdir)) mkdir($usrdir); Хотя, в общем то некие временные данные в течении сессии можно хранить и в $_SESSION. |
Нет, так-то её там не может быть до перехода, но если пользователь обновит страницу, то ... До тех пор, пока пользователь не активировал функцию, она (папка) не нужна. Активировал - начался процесс, создания папки, -> добавления в нее файлов, все устроило -> её перенос.
|
Я правильно поняла, что можно, как окончательный вариант, использовать так:
<?php $usrdir = '/name/' . $GLOBALS['user_login']->data['Id']; if(!file_exists($usrdir)) mkdir($usrdir); ?> чтобы на "выходе" получить папку, например, 7375 (ID пользователя)? |
Ну если страница доступна для всех, а не только для регистрированного пользователя, значит надо проверять вход (если это и есть вход):
if($usr = $GLOBALS['user_login']->data['Id']) { $usrdir = '/name/' . $usr; if(!file_exists($usrdir)) mkdir($usrdir); //и т.д. чего то делаем } Что значит активировал функцию... в общем пишите согласно условиям. |
Нет, страница доступна только для зарегистрированных пользователей.
|
Ну значит по какой-то "активации функции" выполняйте проверку наличия директории и создавайте ее если она не создана.
|
А "name" - это директория в которой будет создаваться папка? И могу ли в дальнейшем использовать для создания текстового файла такой код:
<?php if (isset($_POST['URL'])) { $fls=fopen("name/($usrdir)/link.txt","w+"); fwrite($fls, "{$_POST['link']}"); fclose($fls); } ?> |
У меня все работает с указанием явного имени директорий, но вот для того, чтобы эти директории были для каждого пользователя индивидуальные (по ID), никак не получается сообразить.
|
Цитата:
$fls=fopen("name/($usrdir)/link.txt","w+"); конечно нельзя, ибо вряд ли в имени вашего каталога есть скобки. И вообще, не заставляйте парсер потеть зря, выискивая в строке переменные тогда, когда в этом нет необходимости. //вот так лучше $fls=fopen($usrdir.'/link.txt',"w+"); //коли $usrdir ранее уже определено //а тут тем более так надо fwrite($fls, $_POST['link']); Учтите, что РНР по разному подходит к строковым значениям обрамленных в одинарные и двойные кавычки. Что записывается в link.txt, почему именно директории и запись в файл? |
Там несколько текстовых файлов, в этот записывается ссылка (для баннера), которая потом считывается кодом на странице вывода, и делает переход (в соответствии с ссылкой) при клике по баннеру.
|
Если в файл пишется ссылка для баннера, то для этого нужно использовать базу данных, а не файлы, которые потом еще перетаскивать в какую-то постоянную директорию.
|
Она условно "постоянная", через сутки она удаляется. Мне так легче, коснись-доведись, и редактировать текстовые файлы пользователей, да и в некоторых других файлах, считывание происходит с номеров строк.
|
Для вас может быть и проще в тетрадь заглядывать, но серверу при этом нет.
Есть базы данных, которые можно администрировать как инструментами существующими, так и пользовательским скриптом только то, что требуется. Работа с файлами предполагает блокировку, которой управлять должны вы, база данных берет на себя такую задачу. Пользователи сайта определяются в базе данных, а значит связать пользователя и его данные в базе, что значит и работать с ними, гораздо проще, чем создавать/удалять по условиям каталоги и файлы. Хост всегда предлагает планировщик задач, который может запускать скрипт с определенным интервалом времени, который может выполнять любые операции, включая и удаление/обновление данных в базе. |
Абсолютно с Вами согласна, но мне пока бы так разобраться, а потом уже с БД.
Не создается папка в директории "name" так: $usrdir = '/name/' . $usr; А вот если так: $usrdir = 'name' . $usr; то создается в корне с именем name7575 7575-это ID |
Все разобралась. Большое спасибо.
|
Часовой пояс GMT +3, время: 17:13. |