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

Форум PHP

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

 

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

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

тема: Про LiteForum 3.0.1
 
 автор: Saddam   (10.12.2005 в 03:13)   письмо автору
 
 

to Cheops!
На самом деле все именно так!
Касательно версии 2.1.5:
В версии 2.1.5 функция settime($author,$enter) имела всего 2 параметра. Параметр $id_forum ей не передавался. Поэтому никаких ошибок не выозникало естественно. Ведь переменная $id_forum не участвовала. Файл registerform.php имеет форму, в ней передается скрытый параметр $id_forum - <input type=hidden name=id_forum value=<?php echo $id_forum; ?>> на обработчик формы register.php. Но скрипт register.php никак не извлекает переменную $id_forum из отправленных методом POST данных! Отсюда и картинка которую мы видим в адресной строке, когда регистрируем нового пользователя на форуме версии 2.1.5 - http://wdc/lf21/forum/index.php?id_forum= . Заметьте, что GET-параметр id_forum имеет пустое значение!
Касательно версии 3.0.1
В версии 3.0.1 функция settime() претерпела изменения. Теперь она использует еще один параметр $id_forum. Функция вызывается в скрипте register.php. НО! Так как файл register.php практически не претерпел изменений, то есть переменная $id_forum в нем не объявлялась (как и в старой версии), и соотвественно не передавалась в функцию settime().

Функция не может выполнить sql-запрос

"SELECT UNIX_TIMESTAMP(last_time.now$id_forum) AS now_time FROM authors, last_time
WHERE authors.name='$author' AND authors.id_author = last_time.id_author", поскольку получающее в результате запроса название поля last_time.now (вместо last_time.now1) просто не сущуствует!

Отсюда и источник всех бед! Насколько я понимаю вы просто-напросто забыли вместе со всеми данными из формы извлечь еще и $id_forum.

Решение: добавить в файле register.php строку $id_forum = $_POST['id_forum'];

Проверьте, все именно так и есть!!!
P.S. Надеюсь я понятно изложил :)

   
 
 автор: cheops   (10.12.2005 в 13:58)   письмо автору
 
   для: Saddam   (10.12.2005 в 03:13)
 

Действительно, спасибо огромно... причём как обнаружил, ->F@$#!$T<- - http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=10013 этот косяк ещё и в readall.php находится. Новую версию LiteForum 3.0.3, где исправлены эти ошибки выложена в раздел downloads.

http://www.softtime.ru/info/liteforum.php

   
 
 автор: ->F@$#!$T<-   (10.12.2005 в 14:14)   письмо автору
 
   для: cheops   (10.12.2005 в 13:58)
 

Похоже, просто инъекция этой строки в сам readall.php или utils.php и config.php, которые он включает, не помогает. Попробую поискать по ходу вызовов функций.

   
 
 автор: ->F@$#!$T<-   (10.12.2005 в 14:23)   письмо автору
 
   для: cheops   (10.12.2005 в 13:58)
 

Однако при замене
if(isset($_COOKIE['current_author'])) settime($_COOKIE['current_author'],true,$id_forum);
на
if(isset($_COOKIE['current_author'])) settime($_COOKIE['current_author'],$id_forum = $_POST['id_forum'],);
получаем белый экран, без ошибки, не знаю, есть ли в этом смысл...
если написать
if(isset($_COOKIE['current_author'])) settime($_COOKIE['current_author'],$_POST['id_forum'],);
-эффект тот же
Хм... Убрать запятую перед последней скобкой d_forum']); -и опять ошибка!

   
 
 автор: cheops   (11.12.2005 в 01:50)   письмо автору
 
   для: ->F@$#!$T<-   (10.12.2005 в 14:23)
 

Что не очень понятен смысл манипуляций? Да это должно вызывать ошибку...

   
 
 автор: ->F@$#!$T<-   (11.12.2005 в 14:41)   письмо автору
 
   для: cheops   (11.12.2005 в 01:50)
 

Похоже, я так ничё и не понял :)
Ну, зато 3.0.3 теперь работает :)

   
 
 автор: ZC   (11.12.2005 в 17:57)   письмо автору
 
   для: ->F@$#!$T<-   (11.12.2005 в 14:41)
 

Почти работает
В новой версии вашего форума есть еще одна ошибка в файле addperform.php.
Для ее исправления нужно

1. Заменить 20-ую строку на
$id_addresser = $_GET['id_author'];

2. Заменить 24-ую строку на
if(!preg_match("|^[\d]+$|",$id_addresser) && !empty($id_addresser)) exit();

3. Заменить 30-ую строку на
$query = "SELECT * FROM authors WHERE id_author = $id_addresser";

   
 
 автор: ZC   (11.12.2005 в 17:59)   письмо автору
 
   для: ZC   (11.12.2005 в 17:57)
 

Не хотите добавить смайлы и в названия тем, которые отображаются на главной странице форума

   
 
 автор: cheops   (11.12.2005 в 18:21)   письмо автору
 
   для: ZC   (11.12.2005 в 17:59)
 

Хм... пожалуй можно.

   
 
 автор: cheops   (11.12.2005 в 18:20)   письмо автору
 
   для: ZC   (11.12.2005 в 17:57)
 

Ага, есть такое дело - исправил, выложил версию 3.0.4 в раздел downloads.

   
 
 автор: Saddam   (12.12.2005 в 00:16)   письмо автору
 
   для: cheops   (11.12.2005 в 18:20)
 

Я нашел еще один касяк. В файле enterform.php есть ссылка на форму registerform.php...
Вообщем, короче, етот кусок кода

        <p class=texthelp>Для авторизации Вам необходимо ввести Ваше имя и пароль.
        Пройдите <a href="registerform.php">регистрацию</a>, если вы еще не еще не зарегистрированы на форуме.
        </p>

надо заменить на

        <p class=texthelp>Для авторизации Вам необходимо ввести Ваше имя и пароль.
        Пройдите <a href="registerform.php?id_forum=<? echo $id_forum?>">регистрацию</a>, если вы еще не еще не зарегистрированы на форуме.
        </p>


Проверьте и сами поймете. :)

P.S. Кстати этим косяком страдает и ваш форум! Который тут висит!

   
 
 автор: Saddam   (12.12.2005 в 10:54)   письмо автору
 
   для: Saddam   (12.12.2005 в 00:16)
 

И еще одна, насколько я понимаю, ошибочная ситуация:
в файле index.php (главная страница форума) со строки 125 идет такой код:

      if($themes['hide'] == 'lock')
      {
        if($posts_in_topic>1) $closetheme = "(тема закрыта)";
        else $closetheme = "(тема перенесена)";
        $closetitle = "Тема закрыта для обсуждения";
      }

Так вот следовало бы написать не if($posts_in_topic>1), а if($posts_in_topic>=1), поскольку, если в теме одно сообщение и я ее закрываю, то пишет, что "тема перенесена", вместо "тема закрыта". Конечно несерьезно, но всё же.

   
 
 автор: cheops   (12.12.2005 в 15:21)   письмо автору
 
   для: Saddam   (12.12.2005 в 10:54)
 

Это не от хорошей жизни сделано... дело в том, что при переносе темы остаётся тема указатель на старом месте. Если так сделать, то всегда будет писаться (тема закрыта), что угнетающе действует на автора темы. Учитывая, что такие ошибки совершают в основном вновьприбывшие - они могут покинуть форум не разбираясь в фичах движка - очень бы этого не хотелось. Закрыть тему с одним сообщением требуется реже, чем перенести тему, поэтому мы пошли на такой шаг.

   
 
 автор: cheops   (12.12.2005 в 15:26)   письмо автору
 
   для: Saddam   (12.12.2005 в 00:16)
 

>Я нашел еще один касяк.
Есть такое дело, выложу сегодня поправленную версию, без изменения версии последней строки, а то уж мы чего-то резво взялись :))) обычно до этой версии полгода идём...

   
 
 автор: Saddam   (12.12.2005 в 15:30)   письмо автору
 
   для: cheops   (12.12.2005 в 15:26)
 

Ага, а то так глядишь мелкими шажочками и до 4 версии к Новому году доберемся :))

   
 
 автор: ZC   (12.12.2005 в 20:21)   письмо автору
 
   для: Saddam   (12.12.2005 в 15:30)
 

:)

   
 
 автор: ->F@$#!$T<-   (16.12.2005 в 00:03)   письмо автору
 
   для: cheops   (10.12.2005 в 13:58)
 

А как можно правильнее спрятать папку Admin?
Вот у вас её как будто-бы нет...
Может, где-нибудь в настройках Апаче можно, или лучше скриптом?

Или, может, самый надёжный способ - переименовать admin/index.htm и убрать отображение indexes/каталогов в httpd.conf :))))))))))?

P.S. Самому ковыряться и искать, честно признаться, банально нету времени, т.к. приходится кроме учёбы тянуть втроём с однокурсниками первую в Украине масштабную Wi-Fi сеть (R=10км) с последующим образованием в провайдера и плюс лепить под него на скорую руку портал по типу matrix.farlep.net...

   
 
 автор: Saddam   (16.12.2005 в 00:06)   письмо автору
 
   для: ->F@$#!$T<-   (16.12.2005 в 00:03)
 

Да просто переименуй папку admin как хочешь, как-нибудь вроде nimda (admin наоборот), чтоб никто не догадался и защитить папку средствами Apache. (с помощью .htaccess & .htpasswd)

Больше ниче и не надо думать

   
 
 автор: cheops   (16.12.2005 в 13:56)   письмо автору
 
   для: ->F@$#!$T<-   (16.12.2005 в 00:03)
 

1) Во-первых её следует в обязательном порядке переименовать.
2) Во-вторых, как правильно пишет Saddam, директорию следует запоролить либо при помощи конфигрурационных файлов .htaccess и .htpasswd, о которых можно почитать в статье http://www.softtime.ru/info/articlephp.php?id_article=27, либо при помощи специально созданного для таких вещей Web-приложения "Система авторизации HTTP-Basic", которую можно свободно загрузить из раздела downloads http://www.softtime.ru/info/authorization.php.

   
 
 автор: Loki   (16.12.2005 в 16:20)   письмо автору
 
   для: cheops   (16.12.2005 в 13:56)
 

>1) Во-первых её следует в обязательном порядке переименовать.
вот этот пункт я всегда недопонимал: если защищать директорию с помощью апача, то чем это может грозить в плане безопасности? Только подбор пароля?

   
 
 автор: cheops   (17.12.2005 в 00:40)   письмо автору
 
   для: Loki   (16.12.2005 в 16:20)
 

Да просто спокойнее :)))

   
 
 автор: AKiRA   (03.01.2006 в 22:06)   письмо автору
 
   для: cheops   (17.12.2005 в 00:40)
 


Ошибка при выборке тем форума...

Error: Unknown column 'last_time.last_time1' in 'field list'

3.0.4 :D

   
 
 автор: Akira   (03.01.2006 в 22:07)   письмо автору
 
   для: AKiRA   (03.01.2006 в 22:06)
 

А также загляните в xml.php :))))))) И смените ссылки.

   
 
 автор: cheops   (04.01.2006 в 00:22)   письмо автору
 
   для: Akira   (03.01.2006 в 22:07)
 

Хм... а чего-то ничего подозрительного не вижу...

   
 
 автор: Akira   (04.01.2006 в 00:24)   письмо автору
 
   для: cheops   (04.01.2006 в 00:22)
 


<title>Форум PHP портала SoftTime</title>
        <link>http://www.softtime.ru/forum/</link>
        <description>Форум PHP портала SoftTime поддерживается авторами нескольких книг по PHP</description>';

   
 
 автор: cheops   (04.01.2006 в 00:30)   письмо автору
 
   для: Akira   (04.01.2006 в 00:24)
 

Хм... да, действительно как-то не хорошо получилось - нужно будет поправить.

   
 
 автор: cheops   (04.01.2006 в 00:20)   письмо автору
 
   для: AKiRA   (03.01.2006 в 22:06)
 

>3.0.4 :D
Как ставили из инсталлятора?

   
 
 автор: Akira   (04.01.2006 в 00:24)   письмо автору
 
   для: cheops   (04.01.2006 в 00:20)
 

Ага, все из него :) Скачал чисто с сайта.

   
 
 автор: cheops   (04.01.2006 в 00:33)   письмо автору
 
   для: Akira   (04.01.2006 в 00:24)
 

Хм... странно, а никаких ограничений на MySQL-пользователя нет? Какие версии серверов используются?

   
 
 автор: Akira   (04.01.2006 в 00:54)   письмо автору
 
   для: cheops   (04.01.2006 в 00:33)
 

Да я к тому, что нету там last_time1. И нужно ли не знаю. Поэтому хотел бы попросить слить дамп рабочий :)
Да кстати, хочу перекинуть в другой вид форум. И вообще меня немного напрягает, тот факт, что структуру сложно поменять.

   
 
 автор: cheops   (04.01.2006 в 13:41)   письмо автору
 
   для: Akira   (04.01.2006 в 00:54)
 

А, да в дампе нет в корне, таблица должна быть такой
CREATE TABLE last_time (
  id_author int(11) NOT NULL auto_increment,
  now1 datetime NOT NULL default '0000-00-00 00:00:00',
  last_time1 datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (id_author)
) TYPE=MyISAM;

Обновлю архив в течении дня. Хотя при автоматической установке из админа - всё должно быть протекать нормально...

   
Rambler's Top100
вверх

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