|
|
|
| Уважаемые форумчане, подскажите. Есть код:
<?php
function MakeDirectoryName()
{
$Name = $_POST['name'];
$Result="$Name".rand(100000, 999999);
return $Result;
}
function WriteToFile()
{
GLOBAL $Directory;
$TheFile="dannie.txt";
$Open=fopen($TheFile, "at");
$Pass= $_POST['password'];
$Directory="./users/".MakeDirectoryName();
fwrite($Open, " Логин $_POST[name]\n Пароль $Pass\n Каталог $Directory\n ------------- \n");
fclose($Open);
}
function CreatCatalog()
{
if (mkdir ("$Directory")) echo "Каталог успешно содан";
else echo "Ошибка создания каталога";
}
?>
<html>
<head>
<title>Рабочий каталог</title>
</head>
<body>
<?php
echo "Данные сохранены в каталог: ";
MakeDirectoryName();
WriteToFile();
CreatCatalog();
?>
</body>
</html>
|
После обращения формы к данному скрипту, пишет:
Данные сохранены в каталог:
Notice: Undefined variable: Directory in C:\localhost\www\Katalogi\Sozdanie kataloga usera\Work_katalog.php on line 22
Warning: mkdir() [function.mkdir]: No error in C:\localhost\www\Katalogi\Sozdanie kataloga usera\Work_katalog.php on line 22
Ошибка создания каталога./users/User522836
При этом данные сохраняет, а папку не создает. | |
|
|
|
|
|
|
|
для: DMNakaKaban
(27.03.2009 в 14:42)
| | на момент вызова функции mkdir переменной $Directory несуществует.... проанализируйте код...
П.С. ужасно неразумное использование функций... и переменные с названиями с большой буквы увеличивают вероятность ошибки.... а уж про это mkdir ("$Directory") я молчу | |
|
|
|
|
|
|
|
для: nikita2206
(27.03.2009 в 14:50)
| | По-моему она в GLOBAL ... (?)
П.С. Вообще я не профессионал и это не готовая работа. Я просто учусь создавать папки и каталоги на опр. уровне. Так мне понятней что к чему. Вы конечно же сразу все умели и писали код без ошибок - это я сразу осознал. | |
|
|
|
|
|
|
|
для: DMNakaKaban
(27.03.2009 в 14:57)
| | сори за резкость)
суть ошибки вот в чем:
в одной функции вы создаете глобальную переменную
а в следующей функции вы пытаетесь вызвать переменную $Directory, да вот только ее фактически не существует... Почему? потому что вы ее вызываете не как глобальную, а как локальную, а в этой функции нет такой переменной... в последней функции напишите вместо: mkdir ("$Directory")
напишите: mkdir($GLOBALS['Directory']) | |
|
|
|
|
|
|
|
для: nikita2206
(27.03.2009 в 15:08)
| | Спасибо, но не получается.
А почему как локальную? Если, например, написать в основной части echo ($Directory) - она выводит значение переменной нормально. | |
|
|
|
|
|
|
|
для: DMNakaKaban
(27.03.2009 в 15:17)
| | а что говорит? какая ошибка?
если в основной части написать echo ($Directory) - она выведет, ну а если в функции CreatCatalog() напишите, то получите ошибку уровня NOTICE.... | |
|
|
|
|
|
|
|
для: nikita2206
(27.03.2009 в 15:28)
| | А пишет вот что:
Данные сохранены в каталог: ./users/User916146
Warning: mkdir() [function.mkdir]: No such file or directory in C:\localhost\www\Katalogi\Sozdanie kataloga usera\Work_katalog.php on line 23
Ошибка создания каталога | |
|
|
|
|
|
|
|
для: DMNakaKaban
(27.03.2009 в 15:34)
| | проблема в этой строчке:
$Directory="./users/".MakeDirectoryName();
|
попробуйте так:
$Directory="../users/".MakeDirectoryName();
|
или так:
$Directory = $_SERVER['DOCUMENT_ROOT']."/users/".MakeDirectoryName();
|
| |
|
|
|
|
|
|
|
для: nikita2206
(27.03.2009 в 15:39)
| | Попробовал оба варианта - результат тот же ( | |
|
|
|
|
|
|
|
для: DMNakaKaban
(27.03.2009 в 15:48)
| | Покажите код | |
|
|
|
|
|
|
|
для: nikita2206
(27.03.2009 в 16:20)
| |
<?php
function MakeDirectoryName()
{
$Name = $_POST['name'];
$Result="$Name".rand(100000, 999999);
return $Result;
}
function WriteToFile()
{
GLOBAL $Directory;
$TheFile="dannie.txt";
$Open=fopen($TheFile, "at");
$Pass= $_POST['password'];
$Directory = $_SERVER['DOCUMENT_ROOT']."/users/".MakeDirectoryName();
fwrite($Open, " Логин $_POST[name]\n Пароль $Pass\n Каталог $Directory\n ------------- \n");
fclose($Open);
echo ($Directory);
}
function CreatCatalog()
{
if (mkdir($GLOBALS['Directory'])) echo "Каталог успешно создан";
else echo "Ошибка создания каталога";
}
?>
<html>
<head>
<title>Рабочий каталог</title>
</head>
<body>
<?php
echo "Данные сохранены в каталог: ";
MakeDirectoryName();
WriteToFile();
CreatCatalog();
?>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: DMNakaKaban
(27.03.2009 в 16:37)
| | у меня работает, может папки users несуществует в корне документа?
а вы на хостинге это делаете или на локали? | |
|
|
|
|
|
|
|
для: nikita2206
(27.03.2009 в 16:53)
| | На локалке | |
|
|
|
|
|
|
|
для: DMNakaKaban
(27.03.2009 в 16:55)
| | а это работает?
<?
function MakeDirectoryName(){
$Name = 'name';
$Result="$Name".rand(100000, 999999);
return $Result;
}
function WriteToFile(){
GLOBAL $Directory;
$Directory= $_SERVER['DOCUMENT_ROOT'].'/'.MakeDirectoryName();
}
function CreatCatalog(){
if(mkdir($GLOBALS['Directory'])) echo "OK";
else echo "ERR";
}
MakeDirectoryName();
WriteToFile();
CreatCatalog();
|
| |
|
|
|
|
|
|
|
для: nikita2206
(27.03.2009 в 17:03)
| | Не пойму почему, но работает только вот так:
function WriteToFile()
{
GLOBAL $Directory;
$TheFile="dannie.txt";
$Open=fopen($TheFile, "at");
$Pass= $_POST['password'];
$Directory="C:/localhost/www/Katalogi/Sozdanie kataloga usera/users/".MakeDirectoryName();
fwrite($Open, " Логин $_POST[name]\n Пароль $Pass\n Каталог $Directory\n ------------- \n");
fclose($Open);
echo ($Directory);
}
|
| |
|
|
|
|
|
|
|
для: DMNakaKaban
(27.03.2009 в 17:08)
| | ммм.. возможно это изза пробелов в имени папки... | |
|
|
|
|
|
|
|
для: nikita2206
(27.03.2009 в 17:11)
| | Точно! после проставления нижних прочеков все заработало ))) Спасибо | |
|
|
|
|
|
|
|
для: DMNakaKaban
(27.03.2009 в 14:57)
| | Забыл сказать, точнее дать совет: пользуйтесь аргументами в функциях, тогда и код красивее будет выглядеть и быстродействие повыше будет чем создание глобальных переменных | |
|
|
|