|
|
|
| Хочу сделать админ. раздел а сайте. Как это.
Чтобы можно было, например, редактировать код файла через админ. панель. Чтобы можно было создавать новые директории, закачивать файлы и т.п. | |
|
|
|
|
|
|
|
для: Classic
(27.05.2006 в 12:31)
| | Ого! :-)
Вам нужна CMS, можете взять готовую, их полно всяких.
Если хотите сделать самостоятельно CMS или попроще панель управления, то это выходит за пределы одной темы. Сначала предельно четко определитесь, что вы хотите делать с помощью админки, вплоть до мелочей, и только потом поэтапно нужно кодить. Иначе потом трудно вносить изменения в код, если захочется что-то добавить.
Как создавать админки довольно хорошо описано в книге "PHP5 Практика создания сайтов". Но эта книга не для начинающих.
В любом случае, обращайтесь, если что - поможем :-) | |
|
|
|
|
|
|
|
для: WebTech
(27.05.2006 в 16:32)
| | Мне всего нужно:
1) Добавление ссылок (их сортировка).
2) Добавление файла
3) 1 и 2 т.е. хочу добавить ноты, ввожу директорию имя файла и имя ссылки.
4) И редактировать любые файлы на моем сайте.
Пока мне больше не нужно.
P.S. CMS можно, но моя цель не сделать сайт, а научится делать сайты. Есть ли готовые примеры? | |
|
|
|
|
|
|
|
для: Classic
(27.05.2006 в 16:45)
| | Ну, так и начинайте кодить потихоньку. Определитесь, где будет храниться все добро (ссылки, URL, файлы и т.д.), т.е. это будет база данных или еще что...
Трудно давать конкретные советы, как и что делать. Неизвестна структура и дизайн вашего сайта и т.д.
Примеров полно. Загрузка файлов на сайт периодически обсуждается на этом форуме. Идите в поиск по форуму и найдете. Если есть файл, то добавить к нему ссылку совсем не трудно.
Редактировать ЛЮБЫЕ файлы вы конечно не сможете, но текстовые - вполне.
Напишите что-нибудь, а мы потом поможем, если что не будет получаться.
Вы пишите, что хотите научиться делать сайты, так начинайте делать. А за вас никто не будет работать :-( | |
|
|
|
|
|
|
|
для: WebTech
(27.05.2006 в 17:41)
| | Вы пишите, что хотите научиться делать сайты, так начинайте делать. А за вас никто не будет работать :-(
>Согласен, просто не знаю с чего начать.
Проблема.
1) Я решил хранить информацию в текстовых документах
<?php
$arr = file("data.txt");
sort($arr);
for($i=0; $i < count($arr); $i++)
{
echo ("$arr[$i] <br />");
}
?>
|
Файл data.txt
<a href="index.php">Главная</a>
<a href="lobos.php">Лобос</a>
<a href="bach.php">Бах</a>
<a href="albeniz.php">Альбенис</a>
<a href="tarrega.php">Таррега</a>
|
Сортирует, но мне нужна сортировка по названию (Главная, Бах... ясно), а сортирует в обших параметрах. | |
|
|
|
|
|
|
|
для: Classic
(27.05.2006 в 19:19)
| | Надо организовать файл data.txt по-другому
data.txt
Главная|index.php
Лобос|lobos.php
Бах|bach.php
Альбенис|albeniz.php
Таррега|tarrega.php
|
Т.е. надо разделить название файла (index.php) и название ссылки на файл (Главная). Так потом будет легче редактировать при необходимости и название файла и название ссылки
А ссылку вида <a href="index.php">Главная</a> можно потом легко сделать
<?php
$arr = file("data.txt");
sort($arr);
for($i=0; $i < count($arr); $i++)
{
list($file_name, $link_name) = explode("|", $arr[$i]);
echo "<a href=\"".$file_name."\">".$link_name."</a><br>";
}
?>
|
| |
|
|
|
|
|
|
|
для: WebTech
(27.05.2006 в 19:55)
| | Большое спасибо! :-)
Только Вы в строчке
list($file_name, $link_name) = explode("|", $arr[$i]);
|
$file_name, $link_name и местами перепутали :-) | |
|
|
|
|
|
|
|
для: Classic
(27.05.2006 в 20:10)
| | Да, точно :-( Прошу прощения. | |
|
|
|
|
|
|
|
для: Classic
(27.05.2006 в 12:31)
| |
<?
$file = fopen ("file.txt","r+");
$f = fopen("D:/ААР/Сайт/новый/file.txt","r");
$buff = fread ($f, 100);
print $buff;
$str = "$buff<br>Главная|index.php";
if ( !$file )
{
echo("Ошибка открытия файла");
}
else
{
fwrite ($file, $str);
}
fclose ($file);
?>
|
Вот я так сделал чтобы записывать в файл. Нельзя ли сделать так, чтобы не читать его а потом снова все перезаписывать, а так, чтобы записывалось сразу в конец?
И еще $buff = fread ($f, 100); как сделать здесь неограниченно? Не 100 символов. | |
|
|
|
|
|
|
|
для: Classic
(27.05.2006 в 20:37)
| | >Вот я так сделал чтобы записывать в файл. Нельзя ли сделать так, чтобы не читать его а потом >снова все перезаписывать, а так, чтобы записывалось сразу в конец?
Надо открывать файл с параметром "a" или "a+"
>И еще $buff = fread ($f, 100); как сделать здесь неограниченно? Не 100 символов.
Можно указать значение заведомо большее, чем размер файла, например
$buff = fread ($f,1000000);
|
в этом случае чтение будет продолжаться, пока не встретится символ конца файла (EOF)
Или прямо указать длину файла
$buff = fread ($f, filesize("D:/ААР/Сайт/новый/file.txt"));
| > | |
|
|
|
|
|
|
|
для: WebTech
(27.05.2006 в 20:49)
| | И еще...
Не надо записывать в файл тег <br>. Надо записывать символ перехода на новую строку. Это
\n - для Unix
\r\n - для Windows
\r - для MacOS
Т.е., если производится именно дозапись в конец, то
$str = "Главная|index.php\n";
|
Кавычки должны быть двойные. В одинарных кавычках символ \n не распознается как перевод строки. | |
|
|
|
|
|
|
|
для: WebTech
(27.05.2006 в 21:00)
| | Мое местное время 3.12 :-(
До завтра :-) | |
|
|
|
|
|
|
|
для: WebTech
(27.05.2006 в 21:00)
| | Огромное СПАСИБО! )
Пока нет вопросов! | |
|
|
|
|
|
|
|
для: Classic
(27.05.2006 в 12:31)
| | Как лучше? Хранить все ссылки в одном файле или сделать для каждой директории свой? | |
|
|
|
|
|
|
|
для: Classic
(28.05.2006 в 05:46)
| | Замучался. Я У вас взял пример upload, столкнулся с проблемой у меня при указании
"../notes".$_FILES["filename"]["name"]))
|
Закачивает в непонятную директорию. Что-то вроде
var/temp/phpMusvj | |
|
|
|
|
|
|
|
для: Classic
(28.05.2006 в 06:10)
| | После загрузки на сервер файл помещается во временную директорию, которая указана в директиве upload_tmp_dir в php.ini, и сохраняется там под именен
$_FILES["filename"]["tmp_name"]
После загрузки файл надо скопировать из временной директории в нужную, например так
copy($_FILES["filename"]["tmp_name"], "../notes/".$_FILES["filename"]["name"]);
|
| |
|
|
|
|
|
|
|
для: WebTech
(28.05.2006 в 08:11)
| | Как лучше? Хранить все ссылки в одном файле или сделать для каждой директории свой? | |
|
|
|
|
|
|
|
для: Classic
(28.05.2006 в 05:46)
| | >Как лучше? Хранить все ссылки в одном файле или сделать для каждой директории свой?
Хм... Надо подумать... | |
|
|
|
|
|
|
|
для: WebTech
(28.05.2006 в 08:20)
| | Спасибо.
А сколько файл хранится во временной директории?
И как сделать чтобы имя присваивалось автоматически после закачки (префикс+id)? | |
|
|
|
|
|
|
|
для: WebTech
(28.05.2006 в 08:20)
| | А изменьть документ нужно жепомощи функции fopen()?
Ну т.е. я если фочу что-то добавить, например таблицу в html документ. | |
|
|
|
|
|
|
|
для: Classic
(28.05.2006 в 11:29)
| | >А сколько файл хранится во временной директории?
Файл удаляется после окончания работы скрипта.
>И как сделать чтобы имя присваивалось автоматически после закачки (префикс+id)?
Это делается во время копирования файла из временного каталога
Просто припишите что нужно к переменной $_FILES["filename"]["name"], например
copy($_FILES["filename"]["tmp_name"], "../notes/id_".$_FILES["filename"]["name"]);
|
>А изменьть документ нужно жепомощи функции fopen()?
>Ну т.е. я если фочу что-то добавить, например таблицу в html документ.
Здесь непонятно, что вы хотите. Если вы пользуетесь PHP то все HTML-документы создаются динамически, например, с помощью echo. | |
|
|
|
|
|
|
|
для: WebTech
(28.05.2006 в 17:59)
| | Ага... ясно.
Вопрос: нужно просканировать папку таким образом.
id_1.php - есть
id_2.php - есть
id_3.php - есть
id_4.php - нет
Значит записываю. Какая функция проверяет занятость места.
Все не пиши только скажи есть ли такач функция. | |
|
|
|
|
|
|
|
для: Classic
(28.05.2006 в 19:13)
| | Я так понял, что ты хочешь проверить существует файл или нет.
Для этого есть функция file_exists()
Вот здесь почитай http://ru.php.net/manual/ru/function.file-exists.php
P.S. Начни новую тему, а то эта уже выросла сильно и ее, наверное, скоро прикроют :-( Или пиши мне на мыло vkostya@inbox.ru, все равно эта тема больше никому неинтересна. | |
|
|
|
|
|
|
|
для: WebTech
(28.05.2006 в 19:27)
| | Ага... хорошо. Только уж на последок.
<?php
$i="1";
$filename = "$i.php";
while (file_exists ("$i.php") == true) {
$i++;
};
$i = "$i.php";
echo "$i";
$fp = fopen($i, "a+");
fclose($fp);
?>
|
<html>
<head>
<title>Результат загрузки файла</title>
</head>
<body>
<?php
if($_FILES["filename"]["size"] > 1024*3*1024)
{
echo ("Размер файла превышает три мегабайта");
exit;
}
if(copy($_FILES["filename"]["tmp_name"],
"../notes".$_FILES["filename"]["name"]))
{
echo("Файл успешно загружен <br>");
echo("Характеристики файла: <br>");
echo("Имя файла: ");
echo($_FILES["filename"]["name"]);
echo("<br>Размер файла: ");
echo($_FILES["filename"]["size"]);
echo("<br>Каталог для загрузки: ");
echo($_FILES["filename"]["tmp_name"]);
echo("<br>Тип файла: ");
echo($_FILES["filename"]["type"]);
} else {
echo("Ошибка загрузки файла");
}
copy($_FILES["filename"]["tmp_name"], "../notes/".$_FILES["filename"]["name"]);
?>
</body>
</html>
|
Надо их совместить. Чтобы при загрузке на сервер он ставил имя как у в 1 скрипе. | |
|
|
|
|
|
|
|
для: Classic
(28.05.2006 в 20:04)
| | Ну, чтобы имя автоматически определялось. | |
|
|
|
|
|
|
|
для: Classic
(28.05.2006 в 20:07)
| | Ага.
$i="1";
$filename = "$i.php";
while (file_exists ("$i.php") == true) {
$i++;
};
|
Как мне сделать чтобы в строке $filename = "$i.php"; и file_exists ("$i.php") после точки брался любой формат (pdf, zip и т.д.) | |
|
|
|
|
|
|
|
для: Classic
(29.05.2006 в 10:49)
| | Все запутано :-(
По какому принципу назначаются имена вновь загруженным файлам? Это просто номер, типа 1.php, 2.php, 3.zip, 4.pdf, 5.php ... и т.д.? Или нумерация для каждого типа файла идет отдельно? Типа
1.php 2.php 3.php ...
1.zip ...
1.pdf 2.pdf ...
Вообще, все сведения о файле (имя, ссылка, дата загрузки, размер и т.д.) лучше хранить в специальном файле или в базе данных, чтобы было как можно меньше обращений к файловой системе. Т.к. операции с файлами довольно ресурсоемкие. Например, ты, когда делаешь проверку на существующий файл, то просто перебираешь все файлы в директории и смотришь их имя. Каждое обращение к функции file_exitst() требует обращения к файловой системе, и если файлов в директории много, то это ощутимо отразится на скорости работы.
И еще, возвращаясь к вопросу
>Как лучше? Хранить все ссылки в одном файле или сделать для каждой директории свой?
Лучше сделать отдельный файл данных для каждой директории, а список директорий хранить в еще одном дополнительном файле.
А еще лучше использовать базу данных :-) ОЧЕНЬ удобно! :-) | |
|
|
|
|
|
|
|
для: Classic
(27.05.2006 в 12:31)
| | Есть у меня менюшка
<?php
$arr = file("menu.txt");
sort($arr);
for($i=0; $i < count($arr); $i++)
{
list($link_name, $file_name) = explode("|", $arr[$i]);
echo "<a href=\"".$file_name."\">".$link_name."</a> <br />";
}
?>
|
Я её инклудю во все файлы. Но при инклуде из директории например "abc" надо чтобы обращалось к файлу лежащему не в директории "abc", а там где лежит menu.txt.
Пробовал и так
$arr = file("www.my_site.ru/new/menu.txt");
|
| |
|
|
|
|
|
|
|
для: Classic
(30.05.2006 в 08:30)
| | $arr = file("../new/menu.txt");
Вот так попробуй- это путь от корневой директории | |
|
|
|
|
|
|
|
для: kadet_73
(30.05.2006 в 09:55)
| | от корневой директории чего? сервера? не говорите ерунды. а корневая директория сайта является корневой только для клиента. | |
|
|
|
|
|
|
|
для: kadet_73
(30.05.2006 в 09:55)
| | Это не от корневой. Это просто он выходит из директории и заходит в неё.
В new будет всё хорошо, а в abc он будет изскать в директории new директорию new. | |
|
|
|
|
|
|
|
для: Classic
(30.05.2006 в 10:06)
| | Что то не совсем понятно? | |
|
|
|
|
|
|
|
для: Classic
(30.05.2006 в 08:30)
| |
$arr = file("../new/menu.txt");
|
| |
|
|
|
|
|
|
|
для: Loki
(30.05.2006 в 10:00)
| | Вообщето я это имею ввиду, что от корневой директории сайта, а не сервера, я думаю что люди которые размещают сайта на хостингах должны это понимать!!! | |
|
|
|
|
|
|
|
для: Loki
(30.05.2006 в 10:00)
| | Да не выхлдит так. | |
|
|
|
|
|
|
|
для: Classic
(30.05.2006 в 08:30)
| | Давайте под разные вопросы заводить разные темы. | |
|
|
|