Ru-Board.club
← Вернуться в раздел «Ikonboard v.2»

» Хак Personal avatar (пользователь может закачивать аватар)

Автор: lynx
Дата сообщения: 28.12.2003 03:37
trew

Основные ошибки при установке этого хака:
- не создана папка personal в директории с аватарами.
- не убрана строка
$CGI::DISABLE_UPLOADS = 1; # Disable uploads
или ее можно поменять на
$CGI::DISABLE_UPLOADS = 0; # Disable uploads

Автор: trew
Дата сообщения: 28.12.2003 03:52
lynx Да вот и я на нее смотрю ...в глаза бьет, а рука не поднимается...


Добавлено
lynx Да, спасибо, это оно и есть , но есть еще одна ложка дегтя, я думаю... не знаю что и думать : когда аватары загружаются на сервер, они загружаются скриптом в текстовом режиме и выводятся соответственно...Но строку, которая это делает я так и не нашел?!(пермишены правильные и картинки лежат по адресу).
Спасибо.
Автор: lynx
Дата сообщения: 28.12.2003 06:27
trew



Цитата:
когда аватары загружаются на сервер, они загружаются скриптом в текстовом режиме и выводятся соответственно...Но строку, которая это делает я так и не нашел?!



Код:
# Check if the file is in GIF format and have the right extention

unless (($personal =~ /\.gif$/) && ($query->uploadInfo($personal)->{'Content-Type'} eq "image/gif")) {
print header(); &error("Registering&The personal avatar you specified for upload must be in GIF format.");

Автор: trew
Дата сообщения: 28.12.2003 14:22
Проверка на соответствие формату работает, тут все правильно. Но есть другая строка , которая мне не нравится:

## Set output file location

$filetomake = $imagesdir . "avatars/personal/" . $memberfiletitle . ".gif";
Вот так она написана в инструкции и так я ее записал, но почему путь через точки( или я ошибаюсь)?


Добавлено
Беру картинку и загружаю ее сам в папку в бинарном режиме-все работает, то же делает скрипт, картинка присутствует но не выводится, т.е. скрипт ее в бинарном режиме не грузит.
Если провайдер не поменял Unix на NT , то другие варианты я перебрал...

Цитата:
# Check if the file is in GIF format and have the right extention
тут и ниже правильно, сверялся не однократно и даже методом "научного тыка"...
Может есть , что я упустил?
Автор: branditc
Дата сообщения: 06.02.2004 20:36
У меня такая же проблема, поставил хак, аватары при регистрации и изменении можно задавать из инета или сети, а с жесткого диска выдает ошибку.
Строка в 2-х файлах register и prifile стера
$CGI::DISABLE_UPLOADS = 1;

Что подскажите?
Автор: trew
Дата сообщения: 07.02.2004 01:58
branditc Я решил проблему таким образом, создал файл .htaccess ( с точкой)и внем прописал такие строчки:

Код: CharsetSourceEnc windows-1251
CharsetRecodeMultipartForms Off
Автор: branditc
Дата сообщения: 07.02.2004 10:43
Создал файл .htaccess скопировал в директорию /cgi/ikonboard/.htaccess
осле этого форум вообще не ахотел грузиться.
выдается окошко.

<i>Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, webmaster@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.</i>

в логах сказано:

[Sat Feb 07 09:22:13 2004] [alert] [client 192.168.100.64] /home/192.168.100.64/
cgi/ikonboard/.htaccess: Invalid command 'CharsetSourceEnc', perhaps mis-spelled
or defined by a module not included in the server configuration

у меня все хостится на Апаче (денвер-2) +activeperl под виндой, я гоняю пока на локах лосте. и гонять ещё месяца 2 буду, пока сервак не приедет, так что надо что-то решать с форумом.

подскажите ещё что-нить.

Автор: trew
Дата сообщения: 07.02.2004 17:29
branditc А форум стоит локале ?

Цитата:
/home/192.168.100.64/
cgi/ikonboard/.htaccess
это разве локальный путь? По моему надо проверить пути...



Добавлено
Вот топик. как установить на локале: http://forum.ru-board.com/topic.cgi?forum=21&topic=0487#1
Автор: lynx
Дата сообщения: 07.02.2004 21:22
branditc

Цитата:
в логах сказано:

[Sat Feb 07 09:22:13 2004] [alert] [client 192.168.100.64] /home/192.168.100.64/
cgi/ikonboard/.htaccess: Invalid command 'CharsetSourceEnc', perhaps mis-spelled
or defined by a module not included in the server configuration


Неправильная директива CharsetSourceEnc или необходимый для нее модуль не включен в серверную конфигурацию. Короче ошибка в .htaccess.

Добавлено
branditc

Только почему ты спрашиваешь это в теме про персональный аватар? Потому что она самая верхняя была? Если хочешь, чтобы тебе на форуме помогали, уважай правила форума и не лепи мессаги, где попало.
Автор: branditc
Дата сообщения: 12.02.2004 02:02
спрашиваю потому, что у меня не закачиваются аватары с жеского диска.(см. выше)


$CGI::DISABLE_UPLOADS = 0; # Disable uploads
не страбатывает


вот сказали что надо что-то править в .htaccess

так что делать???



Автор: lynx
Дата сообщения: 12.02.2004 09:46
branditc


Цитата:
вот сказали что надо что-то править в .htaccess


Начнем с того, что покажи его содержимое, а потом уже "править".


Цитата:
у меня не закачиваются аватары с жеского диска.(см. выше)


"См. выше" конечно хорошо, но все-таки ты бы пояснил, что значит не закачиваются, что при этом происходит и что в логах. Если все то же самое, то почему ты не поправил, как я сказала? Если что-то изменилось, то что именно.


Цитата:
вот сказали что надо что-то править в .htaccess

так что делать???


Я сказала править .htaccess, наверное это означает, что надо править .htaccess, при чем я понятно сказала, как именно:


Цитата:
Неправильная директива CharsetSourceEnc или необходимый для нее модуль не включен в серверную конфигурацию.


Для начала, убери эту директиву.
Ну, и разумеется, покажи содержимое файла.

Автор: branditc
Дата сообщения: 12.02.2004 23:08
уменя апач под винды на локалхосте.
этого файла вообще нет


Автор: lynx
Дата сообщения: 13.02.2004 00:14
branditc


Цитата:
уменя апач под винды на локалхосте.
этого файла вообще нет


Файла нет, а в чем тогда проблемы? Объясни все с начала, плиз.
Автор: branditc
Дата сообщения: 13.02.2004 15:10
Поясняю заново

У меня стоит Апач (денвер-2) под 2000виндой, хочу погонять форум сначала в сети, оттестить глюки, баги, потом поставить на нормальный сервак.

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

вот что у меня есть:
Строка в 2-х файлах register и prifile стер:
$CGI::DISABLE_UPLOADS = 1;

.htaccess нету вообще
если его создать в директории со скриптами, то форум вообще не грузится.
выдается окошко.

<i>Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, webmaster@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.</i>

в логах сказано:

[Sat Feb 07 09:22:13 2004] [alert] [client 192.168.100.64] /home/192.168.100.64/
cgi/ikonboard/.htaccess: Invalid command 'CharsetSourceEnc', perhaps mis-spelled
or defined by a module not included in the server configuration


Вот что пишет сервер при попытке регистрации с аватарос с жесткого:

Software error:
Can't use an undefined value as a HASH reference at \home\192168~1.64\cgi\IKONBO~1\\register.cgi line 262.

For help, please send mail to the webmaster (webmaster@localhost), giving this error message and the time and date of the error.


262 line register.cgi

unless (($personal =~ /\.gif$/) && ($query->uploadInfo($personal)->{'Content-Type'} eq "image/gif")) {


и что делать?
как поправить чтобы аватар запускался?
Автор: trew
Дата сообщения: 13.02.2004 20:37
branditc А при изменении в профайле на новый аватар, что пишет?

Эта строка правильная и она должна выдавать ошибку. если такая есть. что загружается не gif формат, а другой...
Вот такой должен быть этот блок:

Код: # Check if the file is in GIF format and have the right extention

unless (($personal =~ /\.gif$/) && ($query->uploadInfo($personal)->{'Content-Type'} eq "image/gif")) {
print header(); &error("Registering&The personal avatar you specified for upload must be in GIF format.");
}
Автор: branditc
Дата сообщения: 13.02.2004 23:42
Закачиваю гиф файл,
а при изменение аватара в профиле говорит



Цитата:
Content-type: text/html
Software error:
Can't use an undefined value as a HASH reference at \home\192168~1.64\cgi\IKONBO~1\profile.cgi line 623.

For help, please send mail to the webmaster (webmaster@localhost), giving this error message and the time and date of the error.



Добавлено
при изменение профала пишет то жоже самое

unless (($newpersonal =~ /\.gif$/) && ($query->uploadInfo($newpersonal)->{'Content-Type'} eq "image/gif")) {
&error("Modifying Profile&The personal avatar you specified for upload must be in GIF format.");
}

а закачиваю я Гиф!
Автор: trew
Дата сообщения: 14.02.2004 01:03
branditc

Цитата:
profile.cgi line 623
Она точно такая же....Хорошо, а Апачи( установки его) грузит картинки в принципе?...Нет запрета на загрузку? Я так понимаю, что проверено, катринка меньше 30кб и папка с аватарами создана правильно и форум до того работал правильно с аватарами и все находил ?....
Автор: branditc
Дата сообщения: 15.02.2004 01:30
Наверное проблема была в том, что я до этой установки ставил ещё несколько хаков, вот что-то где-то и не сросталось...
Переустановил все заново, поставил на чистый иконбоард 2.1.9 хак персонал аватар и все заработало


СПАСИБО всем за оказанное внимание!
Автор: Lexa_AV
Дата сообщения: 22.02.2004 17:16

Цитата:
Can't use an undefined value as a HASH reference at \home\192168~1.64\cgi\IKONBO~1\profile.cgi line 623.


Господа! Знаете в чем дело было? В хаке для profile.cgi пропущена одна важная деталь:

$personal = $query -> param('personal');

То есть в "массиве" $query просто не было элемента "$personal". Вот вам и ругань отсюда.

Эту строчку надо добавить перед

Код:
$action = $query -> param('action');
$inmember = $query -> param('member');
$inmembername = $query -> param("membername");
$inpassword = $query -> param("password");
Автор: lynx
Дата сообщения: 22.02.2004 18:37
Lexa_AV

Спасибо за замечание, но в той версии, что лежит у нас в архиве, этот баг устранен.
http://forall.ru-board.com/ibarchive/personalavatar.zip

Автор: Sebastyan
Дата сообщения: 23.03.2004 17:40
После установке хака та же проблема, что и у Novator'а:

Цитата:
Can't use an undefined value as a HASH reference at profile.cgi line 655.

Убрал charset( 'windows-1251' );, ничего не изменилось.
Т.к. хаков установил много, возвращатся на старт не хочется.
Попробовал из кода:

Цитата:
unless (($newpersonal =~ /\.gif$/) && ($query->uploadInfo($newpersonal)->{'Content-Type'} eq "image/gif")) {
&error("$personal Modifying Profile&The personal avatar you specified for upload must be in GIF format.");
}

убрать условие
Цитата:
&& ($query->uploadInfo($newpersonal)->{'Content-Type'} eq "image/gif")

(как я понимаю это проверка на соответствие типа файла: gif/не gif,
если юзер по каким-то причинам даст расширение .gif файлу, который gif'ом не является)

После этого вроде всё пашет.

Господа специалисты, скажите, насколько опасно отсутствие в коде этой проверки?
И опасно ли вообще?
Автор: lynx
Дата сообщения: 23.03.2004 18:57
Sebastyan

Цитата:
profile.cgi line 655.


Дай эту строку + 10 строк выше и ниже.


Цитата:
Господа специалисты, скажите, насколько опасно отсутствие в коде этой проверки?
И опасно ли вообще?


Да опасно. Можно зафлудить сервак.
Автор: Lexa_AV
Дата сообщения: 24.03.2004 06:45
Sebastyan, ты пробовал читать мое предыдущее сообщение в этом треде? Там все написано!

А именно, в начале profile.cgi - после

Код:
$action = $query -> param('action');
$inmember = $query -> param('member');
$inmembername = $query -> param("membername");
$inpassword = $query -> param("password");
Автор: Sebastyan
Дата сообщения: 24.03.2004 11:51
lynx

Код из profile.cgi:

Код:
if ($newpersonal) {
## Set maximum file length
$max_length = 1024 * 30;

## Verify the the information
if ($inuseravatar ne "personal_avatar") {
&error("Modifying Profile&Since you have entered a personal avatar to upload, you must select the \'personal\' item from the avatars selection box. If you did not wish to upload one, please leave the upload avatar field blank.");
}

# Verify the file size now (avoid writting files for nothing)
$bytestowrite = -s $newpersonal;

if ($bytestowrite > $max_length) {
&error("Modifying Profile&The size of the personal avatar you specified for upload is of " . sprintf("%.0f", $bytestowrite / 1024) . "kb! It must not be greater than " . sprintf("%.0f", $max_length / 1024) . "kb.");
}

# Stop 0 bytes files
unless ($bytestowrite) {
&error("Modifying Profile&The personal avatar you specified for upload does not contain any data, please verify the path and try again.");
}

# Check if the file is in GIF format and have the right extention
# Строка 655:
unless (($newpersonal =~ /\.gif$/) && ($query->uploadInfo($newpersonal)->{'Content-Type'} eq "image/gif")) {
&error("Modifying Profile&The personal avatar you specified for upload must be in GIF format.");
}

## Set output file location
$filetomake = $imagesdir . "avatars/personal/" . $memberfiletitle . ".gif";

# Check if file already exists and delete
if (-e $filetomake) {
unlink $filetomake;
}

open (FILE,">$filetomake") or die "Could not open $filetomake for writing.";
binmode FILE; # Use binary mode, needed on some OS (e.g. Windows NT)

while ($bytesread = read($newpersonal, $buffer, 2048)) {
$byteswritten += $bytesread; # Get length of processed bytes

print FILE $buffer;
}
close $newpersonal;
close (FILE);
Автор: trew
Дата сообщения: 24.03.2004 12:35
Sebastyan

Цитата:
Use binary mode, needed on some OS (e.g. Windows NT)
Вот на это он ругается, что или файл не того формата или загружается не в бинарном режиме. Пока не пропишешь серверу загрузку в .htacces для картинок, он будет ругаться и дальше. Посмотри , что требует хостер к загрузке картинок....
А если на локале. настройки своего сервера...
А было бы хорошо . если б изменить вот это в строке
Цитата:
'Content-Type'
на уже формат для картинок MultipartForms раз и на всегда. как говорится. все равно кроме катринок в аватары ничего не загружают,... обычно.
Автор: Lexa_AV
Дата сообщения: 24.03.2004 15:38
trew

Цитата:
Вот на это он ругается, что или файл не того формата или загружается не в бинарном режиме

Следует напомнить, что выдается ошибка вида

Цитата:
Can't use an undefined value as a HASH reference at profile.cgi line 655.

то есть производится обращение к несуществующему элементу 'Content-Type' хэш-таблицы uploadInfo($newpersonal). Однако этот элемент должен быть по-любому, вне зависимости от того, в каком режиме файл закачивался.

Sebastyan, скажи-ка, есть ли у тебя в profile.cgi сей фрагмент:

Код:
$newpersonal = $query -> param('personal');
$newexternal = $query -> param('external');
$newexternal = &cleanarea("$newexternal");
Автор: Sebastyan
Дата сообщения: 25.03.2004 08:59
Lexa_AV

Цитата:
скажи-ка, есть ли у тебя в profile.cgi сей фрагмент

Изначально был, однако .
Автор: z83
Дата сообщения: 21.04.2004 17:49
А можно как-нибудь сделать так чтобы персональный аватар был доступен с определённого статуса?
Автор: kisin
Дата сообщения: 01.11.2004 09:20
а что касается не только GIF, а скажем чтобы в роле аватара был JPEG???
Автор: mjorion
Дата сообщения: 21.12.2004 15:27
Была такая проблема - во время загрузки гифа сервер что-то такое хитрое с ним делал, что вместо изображения был белый квадратик
Поставил .htaccess вот вот такого вида:

Код: CharsetSourceEnc windows-1251
CharsetRecodeMultipartForms Off

Страницы: 123

Предыдущая тема: Оптимизация кода IB (увеличение скорости работы)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.