|
|
|
| У меня на локальной машине ваша гостевая работает отлично, файлы записываются всё нормально в каталог /records.
Но когда закачал на сервер выдаёт информацию о ошибках. Похоже почему-то не могут записаться файлы.
Если не сложно не могли бы вы посмотреть. В чём может быть проблема?
http://www.kvnkgu.fatal.ru/forum/forum.php | |
|
|
|
|
|
|
|
для: Axxil
(26.07.2004 в 10:32)
| | Судя по всему права доступа на папку records выставлены таким образом, что скрипт не имеет права записывать в неё что-либо. | |
|
|
|
|
|
|
|
для: cheops
(26.07.2004 в 10:59)
| | И чего теперь делать? | |
|
|
|
|
|
|
|
для: Axxil
(26.07.2004 в 11:08)
| | Измени chmod папки records на 777
Можешь это сделать через FTP клиент. | |
|
|
|
|
|
|
|
для: Artem S.
(26.07.2004 в 11:39)
| | А нельзя ли подробнее что такое , права доступа, chmod, и как их настроить через FTP клиент. (я использую FileZilla) | |
|
|
|
|
|
|
|
для: Axxil
(26.07.2004 в 12:01)
| | chmod это и есть права.
Чтоб изменить chmod надо:
- происоединится к серверу через FTP клиент
- Стукнуть правой кнопкой мыши по папку recods
- Выбрать CHMOD и поставить все 9 галочек или ввести 777 | |
|
|
|
|
|
|
|
для: Artem S.
(26.07.2004 в 12:17)
| | Агромадное, человеческое спасибо! Всё работает. | |
|
|
|
|
|
|
|
для: Artem S.
(26.07.2004 в 12:17)
| | Дякую вам! І мені допомогло))))))))) | |
|
|
|
|
|
|
|
для: Axxil
(26.07.2004 в 10:32)
| | И ещё вопрос туда же. Как лучше добавить к коду гостевой штучку которая удаляла бы самые старые файлы сообщений. Т.е. чтобы кол-во сообщений в гостевой было максиму например 50. | |
|
|
|
|
|
|
|
для: Axxil
(26.07.2004 в 13:36)
| | Хм... а действительно штука полезная. Этого можно добиться вставив следующий код в файле addrec.php после строчки 107 (закрытие файла - fclose($file);)
<?php
// Открываем директорию records
$dir = opendir("records");
while(($file = readdir($dir)))
{
// Помещаем названия файлов в массив $array_file[]
if(is_file("records/$file")) $array_file[] = $file;
}
// Проверяем количество файлов в директории
if(count($array_file)>50)
{
// Производим обратную сортировку массива
@rsort($array_file);
// Удаляем лишние файлы
for($i=50; $i<count($array_file); $i++) unlink("records/".$array_file[$i]);
}
// Закрываем директорию
closedir($dir);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(26.07.2004 в 14:17)
| | Раз тут принимаются заявки на расширение функций гостевой : ) можно и от меня заявку. Как заставить посылать письмо о каждом новом сообщении? Конечно если это не будит слишком сложно для вас. | |
|
|
|
|
|
|
|
для: Artem S.
(26.07.2004 в 14:48)
| | Хм... ну у файловой гостевой нет админа, а так, каждое Web-приложение, сопровождается фразой:
Если у вас не работает это Web-приложение, вы всегда можете найти помощь по его установке и настройке на нашем форуме http://www.softtime.ru/forum/ Возможно вам также потребуется дополнительная функциональность, в этом случае Вы также можете посетить наш форум и выссказать свои предложения. Если Ваше предложение действительно актуально и интересно, мы доработаем приложение с учетом Ваших пожеланий.
Так что, заявки приветствуются :)))
На самом деле, это уже реализовано в гостевой книге на MySQL, пожалуй, действительно следует добавить предложенную Axxil фичу и отправку на e-mail, как в варианте на MySQL.
Если вы не хотите ждать новой версии, вы можете самостоятельно портировать эту особенность из гостевой книги на MySQL, для этого в конфигурационном файле config.php следует добавить строчки:
<?php
// Отпрвлять письмо на e-mail при добавлении нового сообщения
// в гостевую книгу? Для включения данного сервиса исправте на true
$sendmail = true;
// em-mail на который следует отправлять сообщение
$valmail = "mymail@mail.ru";
?>
|
А после 107 строчки addrec.php, перед редиректом на главную страницу:
<?php
// Если в конфигурационном файле $sendmail = true отправляем уведомление
if($sendmail)
{
$thm = "guestbook - a new post";
$msg = "post: $msg\nname: $name";
mail($valmail, $thm, $msg);
}
?>
|
| |
|
|
|
|
|
|
|
для: Axxil
(26.07.2004 в 10:32)
| | Ещё одно предложение можно?
ИМХО было бы не плохо сделать вместо ссылок предыдущая следующая номера страниц гостевой книги. Чтобы пользовательмог сразу попасть на нужную страницу...
Я у себя сделал ;))) | |
|
|
|
|
|
|
|
для: Axxil
(27.07.2004 в 16:18)
| | Поделимся ;)))?
| |
|
|
|
|
|
|
|
для: cheops
(27.07.2004 в 22:07)
| | Конечно!
Не гарантирую что лучшее решение, но главное рабочее.
Всё начинается после сортировки файлов гостевой книги.
<?php
@rsort($names);
$count = $i;
$numpages=floor($count/MESSONPAGE);// определяем кол-во страниц.
// MESSONPAGE заранее определёная константа,
//определяющая кол-во сообщений на странице.
if (empty($start))
{
$start = 0;
}
if ($start < 0)
{
$start = 0;
}
print "<div align='right'> Страницы" ;
// выводим в цикле номера страниц с сылками на эти страницы.
for ($i=1;$i<=$numpages;$i++)
{
print "[<A href=forum.php?start=".MESSONPAGE*($i-1).">".$i."</A>]";
}
print "</div>";
print "<div align='center'> Страница ".(floor($start/MESSONPAGE)+1). "</div>";
for ($i = $start; $i < $start+MESSONPAGE; $i++)
?>
|
И далее по коду... | |
|
|
|
|
|
|
|
для: Axxil
(28.07.2004 в 10:05)
| | Хм... может стоит даже два варианта ввести старый и новый и добавить возможность переключения между ними в конфигурационном файле... | |
|
|
|
|
|
|
|
для: Axxil
(27.07.2004 в 16:18)
| | И сразу вопросик.
У меня в гостевой книге в поле ввода сообщения изначально стоит 2 строки пробелов.
Не подскажете как от них можно избавиться, а то нигде ответ найти не могу.
| |
|
|
|
|
|
|
|
для: Axxil
(28.07.2004 в 10:09)
| | В коде страницы тэг <textarea> у вас выглядит следующим образом:
<tr>
<td colspan=2>Сообщение:<br>
<textarea cols=50 rows=8 name=msg>
</textarea>
</td>
</tr>
|
Если сгенерировать этот кусок HTML-страницы следующим образом - строки пропадут:
<tr>
<td colspan=2>Сообщение:<br>
<textarea cols=50 rows=8 name=msg></textarea>
</td>
</tr>
|
| |
|
|
|
|
|
|
|
для: cheops
(28.07.2004 в 10:25)
| | Ха, точно точно. А ларчик просто открывался...
Спасибо. | |
|
|
|
|
|
|
|
для: Axxil
(26.07.2004 в 10:32)
| | А как бы сделать так чтобы администратор мог комфортно удалять записи из гостевой книги без применения FTP клиентов, а чисто на сайте...
Такое возможно? | |
|
|
|
|
|
|
|
для: Axxil
(28.07.2004 в 10:40)
| | Страницу администрирования... ну в принципе можно сделать, чем эта гостевая хуже других :). Отпишу свои идеи по этому поводу чуть по-позже... | |
|
|
|
|
|
|
|
для: cheops
(28.07.2004 в 10:44)
| | Будем ждать...
А нельзя ли пока в общих словах, что обычно входит в страницу администрирования...
Может сам что-нибудь подумаю... | |
|
|
|
|
|
|
|
для: Axxil
(28.07.2004 в 12:11)
| | В странице администрирования обычно присутсуют следующие возможности:
- редактирования сообщений
- скрытия сообщений (с последующей возможностью отображения)
- удаление сообщений
- ответ администратора на сообщение
Вот в принципе и все, наверное. Это то, что находится у нас на странице администрирования в гостевой на mysql.
Можно еще добавить выставление количества сообщений, выводимых на страницу... Если в гостевой планируется реализация отправки уведомлений на почту, соответсвенно в странице администрирования должна быть предусмотрена возможность выставления адресов, на которые это уведомление отправляется.
----------------
У нас на странице администрирования все просто: выводятся все сообщения и около каждого стоят ссылки: Редактировать, Скрыть, Удалить. По ссылке "Редактировать" открывается страница редактирования, на которой можно как отредактировать сообщение посетителя, так и ответить на него. При нажатии ссылки "Скрыть" сообщение не удаляется физически, а просто не показывается на сайте, а в системе администрирования около этого сообщения ссылка "Скрыть" заменяется на ссылку "Отобразить". Ну а по ссылке удалить происходит физическое удаление сообщения.
http://www.softtime.ru/info/gbmysql.php | |
|
|
|
|
|
|
|
для: Axxil
(28.07.2004 в 10:40)
| | Можно в отдельной папке (пусть admin) поместить файл гостевой index.php (конечно, перед каждым обращением к records следует добавть "../"). Папку следует запаролить средствами серевера apache.
При выводе каждого из сообщений следует добавить ссылку вида:
// В переменной $entry названия файлов "../records/rec.1091022230"
<a href=delete.php?file=$entry>Удалить</a>
|
А в файле delete.php удаляем этот файл и перегружаем страницу...
<?php
// Файл delete.php
// Удаляем файл
unlink($_GET['file']);
// Осуществляеме редирект на главную страницу
echo "<HTML><HEAD>\n";
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>";
echo "</HEAD></HTML>";
?>
|
Это самый быстрый вариант изготовления страницы администрирования, но самый опасный, так как если хорошенько не зачитить файл delete.php с его помощью можно удалить любой файл с виртуального хоста... | |
|
|
|
|
|
|
|
для: cheops
(28.07.2004 в 18:18)
| | Ну я сделал примерно также, только для того чтобы нельзя было удалить любой файл с хоста я поставил проверку того что удаляемый файл начинается на rec. Файлы другого вида удалить невозможно...
А как защитить папку средствами apache? | |
|
|
|
|
|
|
|
для: Axxil
(29.07.2004 в 09:34)
| | В директории Apache/bin есть утилита htpasswd.exe C помошью нее создаем и шифруем пароль.
Пишем так:
htpasswd.exe -cm pass admin
|
cm - это ключи
pass - имя файла с хэшем пароля
admin - логин для которого будет создан пароль
нажимаем ентер и он попросит ввести пароль 2 раза. Если все правильно, то будет создан файл pass c зашифрованным паролем.
Пароль создали - теперь как защитить директорию:
В защищаемой директории создаем файл .htaccess. В нем пишем:
AuthType Basic
AuthName admin
AuthUserFile путь к файл pass
require valid-user
|
Здесь написано, что директория запаролена. Хеши паролей для проверки лежат в файле pass.
И доступ разрешен всем пользователям, которые перечислены в этом файле и которые прошли проверку (правильно ввели пароль)
Вот теперь ньюансы:
Путь к файлу pass должен быть абсолютным. От корня сервера. И располагать его надо (если есть такая возможность) на один уровень(директорию) выше чем лежат ваши HTML файлы. Т.е. выше корневой директории сайта - в ту директорию куда нельзя получить доступ посредством браузера.
Ну уж если положить файл выше корневой директории сайта не получается (а это очень рекомендуется), то нужно поставить запрет на любой доступ к этому файлу опять же через .htaccess.
Чтобы посмотреть путь от корня сервера запустите функцию phpinfo() на сервере. Это будет значение переменной doc_root. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(29.07.2004 в 10:30)
| | >В директории Apache/bin есть утилита htpasswd.exe
Наверное есть :)))
Только как до него добраться на реальном сервере.
А то меня дальше корня сайта не пускают :((( | |
|
|
|
|
|
|
|
для: Axxil
(29.07.2004 в 11:09)
| | Так и не надо на реальном сервере. Я думал у Вас апач локально установлен. Ну если нет, то вот прикладываю в аттач. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(29.07.2004 в 10:30)
| | Здравствуйте.
Пожалуйста, если можно, раскажите подробнее о настройках доступа.
Сейчас сайт у меня на локальной машине, doc_root - не выставлен. Как его выставить?
Позднее, думаю поставить сайт на платный хостинг. Вопрос-а там как? Как создать свой файл pass (можно будет сделать локально или на хостинге?).
Каким будет doc_root там? Можно ли там запустить функцию phpinfo()?
Спасибо, жду ответа. | |
|
|
|
|
|
|
|
для: Andron
(01.08.2004 в 17:24)
| | >Сейчас сайт у меня на локальной машине, doc_root - не выставлен. Как его выставить?
А не надо выставлять. Пиши путь от корня диска, например c:\www\pass
pass - это имя файла
>Как создать свой файл pass (можно будет сделать локально или на хостинге?).
Файл с паролями создаешь локально, а потом переписываешь на сервер. Если есть права писать в директорию выше сайта - прекрасно - пишешь туда. Если нет - бросай куда хочешь. Главное путь правильно прописать.
>Каким будет doc_root там?
Ну прямо там и будет видно. Примерно такого вида:
/pub/home/mysite/
>Можно ли там запустить функцию phpinfo()?
Конечно, создаешь файл пусть так и называется phpinfo.php, пишешь в нем одну функцию:
<?
phpinfo();
?>
И вызываешь этот файл.
|
| |
|
|
|
|
|
|
|
для: Axxil
(26.07.2004 в 10:32)
| | И ещё.
Я у себя в гостевой книге сделал смайлики. То есть смайлы теперь у меня графические.
Кому интересно рассказываю. делается это черезвычайно просто.
В файле addrec.php находим фрагмент кода где идёт замена квадратных скобок на соответствующие HTML теги.
Вставляем:
<?php
$msg = str_replace(":)))","<img src='../images/laugh.gif' border='0'>",$msg);
$msg = str_replace(":)","<img src='../images/smile.gif' border='0'>",$msg);
$msg = str_replace(":(","<img src='../images/weep.gif' border='0'>",$msg);
$msg = str_replace(":[","<img src='../images/bad_evil.gif' border='0'>",$msg);
?>
|
Здесь вместо текстового смайлика вставляется графическое изображение. | |
|
|
|
|
|
|
|
для: Axxil
(29.07.2004 в 11:13)
| | Правда сасибо :) Не сталкивался с таким, но припомню :) | |
|
|
|
|
|
|
|
для: Axxil
(29.07.2004 в 11:13)
| | А можно посмотреть Вашу гостевую? Или еще рано? :) | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(29.07.2004 в 11:39)
| | Вроде нашел сам:)
Это бывшая наша гостевая?! Круто! Сам не узнал :)) | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(29.07.2004 в 11:44)
| | Спасибо, стараемся с Вашей помощью :) | |
|
|
|