Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
perl кодеры помощь нужна. |

26.02.2007, 07:56
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
perl кодеры помощь нужна.
Код:
#!/usr/bin/perl
### Virtual Webwerx Form-Based Upload CGI
### v1.0 (17 Feb 96) by James K. Boutcher (geewhiz@novia.net)
### Feel free to use, modify, distribute.. But remember to give some credit
### where credit is due.
###
### If you are having problems with this, or have a bug to report, just send
### me some mail
# Let's define our variables first off..
$| = 1;
$upath = "/stor/mp3/webuploads/";
$uindex = "/stor/mp3/webuploads/upload.index";
$tempfile = $upath . $ENV{'REMOTE_ADDR'};
$nofileerror = "/upload.html";
# The following reads in the CGI buffer, and writes it to a temporary file
# which will used later.
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
open (x,">$tempfile");
print x $buffer;
close (x);
# Now, time to open the temporary file and process it!
open (temp,$tempfile);
# Gotta pull the MIME/multipart separator line out.. We'll keep the 15
# digit number for later...
$_ = <temp>;
($vernum) = /(\d+)/;
# Next line of the file contains the filename in the format:
# filename="C:\windows\win.ini"
# We'll just keep the part inside the quotes...
$_ = <temp>;
$filetemp = $1 if (/filename=\"(.*)\"/);
# The filename currently has the full pathname to the file in it.. We
# don't want that! .. First we grab the last word after the backslash (for
# PC systems), then we're gunna grab the last word after the forward slash
# (unix systems).. Don't worry, it works.
@pathz = (split(/\\/,$filetemp));
$filetempb = $pathz[$#pathz];
@pathza = (split('/',$filetempb));
$filename = $pathza[$#pathza];
# And, if the filename is nothing, we'll clean everything up and give them
# a pretty error message
if ($filename eq "") {
print "Location: $nofileerror\n\n";
close(temp);
`rm $tempfile`;
}
# Now that we know the name of the file, let's create it in our upload
# directory..
open (outfile, ">$upath$filename");
# Now we don't care about the Content-type of this, so we'll pass that up
$junk = <temp>;
$junk = <temp>;
# And we're gunna read/write all the lines of our file until we come to the
# MIME-multipart separator, which we'll ignore.
while (<temp>) {
if (!(/-{28,29}$vernum/)) {
print outfile $_;
}
}
# We're done with that.. Let's close things up and remove that temp file.
close (temp);
close (outfile);
`rm $tempfile`;
# And bust da HTML
print "Content-type: text/html\n\n";
print "<html><title>Form Upload</title><body>\n";
print "You may now go to the <A HREF=\"http://206.54.177.102:84\">WebAmp</A> page and search for your file in the webuploads directory.<br><br>\n";
print "</body></html>";
Просьюба корректно обьяснить куда загружаеться файл, если скрипт лежит в /cgi-bin/ ?
Какое имя назначаеться и так далее.
Учитывай то что пути прописанные в файле истины.
|
|
|

26.02.2007, 09:58
|
|
Тут может быть ваша реклама.
Регистрация: 30.07.2005
Сообщений: 1,243
Провел на форуме: 4520553
Репутация:
1316
|
|
сначала создается в папке /stor/mp3/webuploads/"твой ип", временный файл с длиной запроса.
Потом этот файл читается, и это число присваивается переменной $vernum.
Затем стоит проверка, если filename определен, и лежит в ковычках то присваивается переменой filetemp (в этом скрипте filname закомментирован)
@pathz присваиваем файл filetemp. деленный по \
$filetempb присваиваем последний эл. массива
@pathza делим $filetempb по /
$filename последний эл. @pathza
если filname пустой, посылаем накуй редиректом, удаляем тем файл.
открывается файл /stor/mp3/webuploads/$filname, производится проверка содержания у tempfile и записывается в $filename.
удаляем темпфайл.
вроде всё
|
|
|

27.02.2007, 20:19
|
|
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме: 8042357
Репутация:
3742
|
|
как то по наркомански скрипт написан )) не проще -
Код:
#!/usr/bin/perl -w
use CGI;
$upload_dir = "/home/mywebsite/htdocs/upload";
$query = new CGI;
$filename = $query->param("file");
$filename =~ s/.*[\/\\](.*)/$1/;
$upload_filehandle = $query->upload("file");
open UPLOADFILE, ">$upload_dir/$filename";
binmode UPLOADFILE;
while ( <$upload_filehandle> )
{
print UPLOADFILE;
}
close UPLOADFILE;
print $query->header ( );
print <<END_HTML;
<HTML>
<HEAD>
<TITLE>Thanks!</TITLE>
</HEAD>
<BODY>
<P>Uploaded нах=)</P>
</BODY>
</HTML>
END_HTML
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
Последний раз редактировалось blackybr; 27.02.2007 в 20:23..
|
|
|

27.02.2007, 20:53
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
ты это админам скажи ))) был бы рад если он такой был )))
|
|
|

28.02.2007, 01:43
|
|
Познающий
Регистрация: 22.08.2006
Сообщений: 39
Провел на форуме: 69953
Репутация:
11
|
|
Нужна помощь
Есть форма[для примера]:
PHP код:
<html><body>
<form action='txt.php' name='message' method="post">
<textarea name="str" cols="105" rows="11">
Какойто
текст
содержащие
переходы
на
другие строки
</textarea><input type="submit" value='go'></form></body></html>
Скрипт обработчик[txt.php]:
PHP код:
<?php
$a=eregi_replace("\\n","",$_POST["str"]); //По идее здесь удаляем все переходы на новые строки
echo "<pre>$a</pre>";
?>
Столкнулся с проблемой, по задумки мне нужно из формы textarea взять текст и вырезать из него все переходы на новые строки, короче забить весь текст в одну строковую переменную не в массиве, только у меня ничего не получается.
В дальнейшем я это хотел использовать этот вид для хранение в файле, - 1 строчка - 1 сообщение, а пока получаеться не то, что нужно, сообщение одно, а в файл записываеться с этими переходами и получаеться что у меня там больше, при считывание из него по строчкам суть сообщения теряеться.
ps: Извеняюсь что в тему о помощи с Perl ответил, просто решил не засерать форум увидел что в этой теме разбирают проблеммы, обрадовался что не придеться создавать еще одну. Глаза уже слепаються третей день сижу над этой проблеммы перечитал кучу страниц а ответов так и не нашол...
Последний раз редактировалось temp_late; 28.02.2007 в 01:54..
|
|
|

28.02.2007, 19:32
|
|
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме: 8042357
Репутация:
3742
|
|
А зачем тогда брать textarea.. ведь он спец под многострочные данные..
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
|
|
|

28.02.2007, 20:46
|
|
Постоянный
Регистрация: 22.04.2006
Сообщений: 566
Провел на форуме: 1325772
Репутация:
517
|
|
Сообщение от temp_late
Нужна помощь
Есть форма[для примера]:
PHP код:
<html><body>
<form action='txt.php' name='message' method="post">
<textarea name="str" cols="105" rows="11">
Какойто
текст
содержащие
переходы
на
другие строки
</textarea><input type="submit" value='go'></form></body></html>
Скрипт обработчик[txt.php]:
PHP код:
<?php
$a=eregi_replace("\\n","",$_POST["str"]); //По идее здесь удаляем все переходы на новые строки
echo "<pre>$a</pre>";
?>
Столкнулся с проблемой, по задумки мне нужно из формы textarea взять текст и вырезать из него все переходы на новые строки, короче забить весь текст в одну строковую переменную не в массиве, только у меня ничего не получается.
В дальнейшем я это хотел использовать этот вид для хранение в файле, - 1 строчка - 1 сообщение, а пока получаеться не то, что нужно, сообщение одно, а в файл записываеться с этими переходами и получаеться что у меня там больше, при считывание из него по строчкам суть сообщения теряеться.
ps: Извеняюсь что в тему о помощи с Perl ответил, просто решил не засерать форум увидел что в этой теме разбирают проблеммы, обрадовался что не придеться создавать еще одну. Глаза уже слепаються третей день сижу над этой проблеммы перечитал кучу страниц а ответов так и не нашол...
имхо перед записью в файл кодирую данные например base64_(en|de)code  и если в файле есть еще бред, типа логина и имени, то обезопасишь себя от части атак.
|
|
|

01.03.2007, 00:00
|
|
Отец порядка
Регистрация: 04.03.2005
Сообщений: 1,007
Провел на форуме: 1204641
Репутация:
412
|
|
Ну короче я понял, что тебе нужна всего одна функция - str_replace()
попробуй такой вариант решения:
PHP код:
<?
$a=str_replace("\n","",$_POST["str"]); //вот тут удаляем переходы
echo "<pre>$a</pre>";
?>
|
|
|

01.03.2007, 09:36
|
|
Members of Antichat
Регистрация: 03.09.2005
Сообщений: 594
Провел на форуме: 3606217
Репутация:
685
|
|
Код:
$str = implode(explode("\n",$_POST['str']));
|
|
|

09.03.2007, 13:41
|
|
Отец порядка
Регистрация: 04.03.2005
Сообщений: 1,007
Провел на форуме: 1204641
Репутация:
412
|
|
так вот кто придумал Windows Vista !!!))))
|
|
|
|
 |
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Books Perl
|
FRAGNATIC |
PHP, PERL, MySQL, JavaScript |
0 |
11.08.2005 16:58 |
|
Нужна помощь!
|
Black_Death |
Болталка |
7 |
11.12.2004 16:03 |
|
Нужна помощь...
|
|
Чаты |
2 |
24.02.2003 02:17 |
|
Нужна помощь
|
Амир |
Чаты |
0 |
04.09.2002 11:21 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|