Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Администраторский раздел
 
 автор: Classic   (27.05.2006 в 12:31)   письмо автору
 
 

Хочу сделать админ. раздел а сайте. Как это.
Чтобы можно было, например, редактировать код файла через админ. панель. Чтобы можно было создавать новые директории, закачивать файлы и т.п.

   
 
 автор: WebTech   (27.05.2006 в 16:32)   письмо автору
 
   для: Classic   (27.05.2006 в 12:31)
 

Ого! :-)
Вам нужна CMS, можете взять готовую, их полно всяких.
Если хотите сделать самостоятельно CMS или попроще панель управления, то это выходит за пределы одной темы. Сначала предельно четко определитесь, что вы хотите делать с помощью админки, вплоть до мелочей, и только потом поэтапно нужно кодить. Иначе потом трудно вносить изменения в код, если захочется что-то добавить.
Как создавать админки довольно хорошо описано в книге "PHP5 Практика создания сайтов". Но эта книга не для начинающих.
В любом случае, обращайтесь, если что - поможем :-)

   
 
 автор: Classic   (27.05.2006 в 16:45)   письмо автору
 
   для: WebTech   (27.05.2006 в 16:32)
 

Мне всего нужно:
1) Добавление ссылок (их сортировка).
2) Добавление файла
3) 1 и 2 т.е. хочу добавить ноты, ввожу директорию имя файла и имя ссылки.
4) И редактировать любые файлы на моем сайте.
Пока мне больше не нужно.
P.S. CMS можно, но моя цель не сделать сайт, а научится делать сайты. Есть ли готовые примеры?

   
 
 автор: WebTech   (27.05.2006 в 17:41)   письмо автору
 
   для: Classic   (27.05.2006 в 16:45)
 

Ну, так и начинайте кодить потихоньку. Определитесь, где будет храниться все добро (ссылки, URL, файлы и т.д.), т.е. это будет база данных или еще что...
Трудно давать конкретные советы, как и что делать. Неизвестна структура и дизайн вашего сайта и т.д.
Примеров полно. Загрузка файлов на сайт периодически обсуждается на этом форуме. Идите в поиск по форуму и найдете. Если есть файл, то добавить к нему ссылку совсем не трудно.
Редактировать ЛЮБЫЕ файлы вы конечно не сможете, но текстовые - вполне.
Напишите что-нибудь, а мы потом поможем, если что не будет получаться.
Вы пишите, что хотите научиться делать сайты, так начинайте делать. А за вас никто не будет работать :-(

   
 
 автор: Classic   (27.05.2006 в 19:19)   письмо автору
 
   для: 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>

Сортирует, но мне нужна сортировка по названию (Главная, Бах... ясно), а сортирует в обших параметрах.

   
 
 автор: WebTech   (27.05.2006 в 19:55)   письмо автору
 
   для: 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>";
}
?>

   
 
 автор: Classic   (27.05.2006 в 20:10)   письмо автору
 
   для: WebTech   (27.05.2006 в 19:55)
 

Большое спасибо! :-)
Только Вы в строчке

list($file_name, $link_name) = explode("|", $arr[$i]); 

$file_name, $link_name и местами перепутали :-)

   
 
 автор: WebTech   (27.05.2006 в 20:29)   письмо автору
 
   для: Classic   (27.05.2006 в 20:10)
 

Да, точно :-( Прошу прощения.

   
 
 автор: Classic   (27.05.2006 в 20:37)   письмо автору
 
   для: Classic   (27.05.2006 в 12:31)
 

<?
  $file 
fopen ("file.txt","r+");
  
$f fopen("D:/ААР/Сайт/новый/file.txt","r");
  
$buff fread ($f100);
  print 
$buff;
  
$str "$buff<br>Главная|index.php";
  if ( !
$file )
  {
    echo(
"Ошибка открытия файла");
  }
  else
  {
    
fwrite ($file$str);
  }
  
fclose ($file);
?>

Вот я так сделал чтобы записывать в файл. Нельзя ли сделать так, чтобы не читать его а потом снова все перезаписывать, а так, чтобы записывалось сразу в конец?
И еще $buff = fread ($f, 100); как сделать здесь неограниченно? Не 100 символов.

   
 
 автор: WebTech   (27.05.2006 в 20:49)   письмо автору
 
   для: 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 в 21:00)   письмо автору
 
   для: WebTech   (27.05.2006 в 20:49)
 

И еще...
Не надо записывать в файл тег <br>. Надо записывать символ перехода на новую строку. Это
\n - для Unix
\r\n - для Windows
\r - для MacOS
Т.е., если производится именно дозапись в конец, то

$str = "Главная|index.php\n";

Кавычки должны быть двойные. В одинарных кавычках символ \n не распознается как перевод строки.

   
 
 автор: WebTech   (27.05.2006 в 21:13)   письмо автору
 
   для: WebTech   (27.05.2006 в 21:00)
 

Мое местное время 3.12 :-(

До завтра :-)

   
 
 автор: Classic   (27.05.2006 в 21:21)   письмо автору
 
   для: WebTech   (27.05.2006 в 21:00)
 

Огромное СПАСИБО! )
Пока нет вопросов!

   
 
 автор: Classic   (28.05.2006 в 05:46)   письмо автору
 
   для: Classic   (27.05.2006 в 12:31)
 

Как лучше? Хранить все ссылки в одном файле или сделать для каждой директории свой?

   
 
 автор: Classic   (28.05.2006 в 06:10)   письмо автору
 
   для: Classic   (28.05.2006 в 05:46)
 

Замучался. Я У вас взял пример upload, столкнулся с проблемой у меня при указании

     "../notes".$_FILES["filename"]["name"])) 

Закачивает в непонятную директорию. Что-то вроде
var/temp/phpMusvj

   
 
 автор: WebTech   (28.05.2006 в 08:11)   письмо автору
 
   для: Classic   (28.05.2006 в 06:10)
 

После загрузки на сервер файл помещается во временную директорию, которая указана в директиве upload_tmp_dir в php.ini, и сохраняется там под именен
$_FILES["filename"]["tmp_name"]

После загрузки файл надо скопировать из временной директории в нужную, например так

copy($_FILES["filename"]["tmp_name"], "../notes/".$_FILES["filename"]["name"]);

   
 
 автор: Classic   (28.05.2006 в 08:42)   письмо автору
 
   для: WebTech   (28.05.2006 в 08:11)
 

Как лучше? Хранить все ссылки в одном файле или сделать для каждой директории свой?

   
 
 автор: WebTech   (28.05.2006 в 08:20)   письмо автору
 
   для: Classic   (28.05.2006 в 05:46)
 

>Как лучше? Хранить все ссылки в одном файле или сделать для каждой директории свой?

Хм... Надо подумать...

   
 
 автор: Classic   (28.05.2006 в 08:46)   письмо автору
 
   для: WebTech   (28.05.2006 в 08:20)
 

Спасибо.
А сколько файл хранится во временной директории?
И как сделать чтобы имя присваивалось автоматически после закачки (префикс+id)?

   
 
 автор: Classic   (28.05.2006 в 11:29)   письмо автору
 
   для: WebTech   (28.05.2006 в 08:20)
 

А изменьть документ нужно жепомощи функции fopen()?
Ну т.е. я если фочу что-то добавить, например таблицу в html документ.

   
 
 автор: WebTech   (28.05.2006 в 17:59)   письмо автору
 
   для: 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.

   
 
 автор: Classic   (28.05.2006 в 19:13)   письмо автору
 
   для: WebTech   (28.05.2006 в 17:59)
 

Ага... ясно.
Вопрос: нужно просканировать папку таким образом.
id_1.php - есть
id_2.php - есть
id_3.php - есть
id_4.php - нет
Значит записываю. Какая функция проверяет занятость места.
Все не пиши только скажи есть ли такач функция.

   
 
 автор: WebTech   (28.05.2006 в 19:27)   письмо автору
 
   для: Classic   (28.05.2006 в 19:13)
 

Я так понял, что ты хочешь проверить существует файл или нет.
Для этого есть функция file_exists()

Вот здесь почитай http://ru.php.net/manual/ru/function.file-exists.php

P.S. Начни новую тему, а то эта уже выросла сильно и ее, наверное, скоро прикроют :-( Или пиши мне на мыло vkostya@inbox.ru, все равно эта тема больше никому неинтересна.

   
 
 автор: Classic   (28.05.2006 в 20:04)   письмо автору
 
   для: 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:07)   письмо автору
 
   для: Classic   (28.05.2006 в 20:04)
 

Ну, чтобы имя автоматически определялось.

   
 
 автор: Classic   (29.05.2006 в 10:49)   письмо автору
 
   для: 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 и т.д.)

   
 
 автор: WebTech   (29.05.2006 в 11:48)   письмо автору
 
   для: 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   (30.05.2006 в 08:30)   письмо автору
 
   для: 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");

   
 
 автор: kadet_73   (30.05.2006 в 09:55)   письмо автору
 
   для: Classic   (30.05.2006 в 08:30)
 

$arr = file("../new/menu.txt");
Вот так попробуй- это путь от корневой директории

   
 
 автор: Loki   (30.05.2006 в 10:02)   письмо автору
 
   для: kadet_73   (30.05.2006 в 09:55)
 

от корневой директории чего? сервера? не говорите ерунды. а корневая директория сайта является корневой только для клиента.

   
 
 автор: Classic   (30.05.2006 в 10:06)   письмо автору
 
   для: kadet_73   (30.05.2006 в 09:55)
 

Это не от корневой. Это просто он выходит из директории и заходит в неё.
В new будет всё хорошо, а в abc он будет изскать в директории new директорию new.

   
 
 автор: kadet_73   (30.05.2006 в 10:08)   письмо автору
 
   для: Classic   (30.05.2006 в 10:06)
 

Что то не совсем понятно?

   
 
 автор: Loki   (30.05.2006 в 10:00)   письмо автору
 
   для: Classic   (30.05.2006 в 08:30)
 


$arr = file("../new/menu.txt"); 

   
 
 автор: kadet_73   (30.05.2006 в 10:06)   письмо автору
 
   для: Loki   (30.05.2006 в 10:00)
 

Вообщето я это имею ввиду, что от корневой директории сайта, а не сервера, я думаю что люди которые размещают сайта на хостингах должны это понимать!!!

   
 
 автор: Classic   (30.05.2006 в 10:08)   письмо автору
 
   для: Loki   (30.05.2006 в 10:00)
 

Да не выхлдит так.

   
 
 автор: cheops   (30.05.2006 в 12:50)   письмо автору
 
   для: Classic   (30.05.2006 в 08:30)
 

Давайте под разные вопросы заводить разные темы.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования