Форум: "Прочее";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];
ВнизPHP из Perl Найти похожие ветки
← →
kernel © (2008-01-30 19:38) [0]Такая ситуация:
Есть скрипт форума "из перловки" (он же YaBB). Для подтверждения регистрации пользователей требуется активация по почте. Но дело в том, что sendmail и другие "мыльницы" из Перла у моего хостера не работают, но есть отлично работающая функция mail() из PHP. Собстно вопрос: Как я могу запустить PHP скрипт из Perl, а также передать ему нужные переменные?
← →
palva © (2008-01-30 20:36) [1]Правило такое: Cтрока в обратных апострофах передается на вход shell. То что возвратит shell вернется в программу perl. Например на Windows можно написать:
print `ping www.mail.ru`;
будет напечатан результат пинга. Дальше нужно спросить админов сервера, какая у них ОС, разрешат ли они так запускать и т. д.
← →
kernel © (2008-01-30 20:39) [2]shell не поддерживается :(
← →
palva © (2008-01-30 20:44) [3]А кто будет разбирать и передавать в скрипт параметры?
← →
БарЛог © (2008-01-30 21:32) [4]А вызвать его, как страничку нельзя? и параметры заодно передать.
← →
palva © (2008-01-30 22:37) [5]> А кто будет разбирать и передавать в скрипт параметры?
А-а, понятно. Браузер клиента. Сделайте, как предлагает БарЛог.
← →
kernel © (2008-01-31 08:06) [6]
> БарЛог © (30.01.08 21:32) [4]
>
> А вызвать его, как страничку нельзя? и параметры заодно
> передать.
А как это будет "звучать" на Перле?
← →
ketmar © (2008-01-31 08:56) [7]>[6] kernel ©(31.01.08 08:06)
как переход на страницу с нужным урлом, наверное? подточи форму отправки данных о регистрации, дабы она отправляла, например, сначала php-странице, а та, отработав, вызывала дальше ябб. как один из вариантов.
← →
kernel © (2008-01-31 09:13) [8]
> ketmar © (31.01.08 08:56) [7]
Действительно, что-то я сразу об этом не подумал. Сейчас попробую...
← →
ketmar © (2008-01-31 09:28) [9]>[8] kernel ©(31.01.08 09:13)
представляю, как народ пальцем у виска крутить будет. я бы сам первый ржал. кто ж сразу сообразит, что у виска провайдеру крутить надо…
← →
kernel © (2008-01-31 09:43) [10]Нет, так не получится. Почта используется не только для активации акк-ов: кто-то захочет восстановить пароль, кто-то написать кому-нибудь на почту, кто-то отправить архив ветки форума... и т.д. -- слишком много форм получится :)
← →
ketmar © (2008-01-31 09:47) [11]>[10] kernel ©(31.01.08 09:43)
вариант верный: сменить провайдера на адекватного.
вариант неверный: сделать отправку почты ручками при помощи прямого общения по SMTP.
как-нибудь так.
← →
kernel © (2008-01-31 09:53) [12]
> вариант верный: сменить провайдера на адекватного.
Невозможно. Это единственный минус хостера из-за которого менять его не хочется.
> вариант неверный: сделать отправку почты ручками при помощи
> прямого общения по SMTP.
Невозможно. Уже пробовал :(
← →
ketmar © (2008-01-31 09:59) [13]>Невозможно. Уже пробовал :(
быть того не может. если php умеет, то одно из двух: или оно юзает что-то a-la sendmail, или само работает с SMTP.
в любом случае — хостер болен на весь череп, если у него такая альтернативная система. менять, менять, пока не поздно. пока другие косяки не полезли.
← →
kernel © (2008-01-31 10:44) [14]Действительно mail() в PHP нормально работает, спрашивал у хостера почему sendmail не работает.. в общем, может я что не так понял (хостер -- англичанен, а у меня с английскип плохо), вот наш разговор:
Я =================================
Hello,
When I use Sendmail I get a error "sendmail: sendmail cannot be called directly from a shell with the current user id Mail sent." can anyone help here please?
Thank you.
ХОСТЕР ============================
Hello,
I have just checked your webmail and didn"t get any errors. Maybe you should check your mailclient and see if the error is there.
Thank you.
Я =================================
#!/usr/bin/perl --
print "Content-type: text/html\n\n";
unless(open (MAIL, "|/usr/sbin/sendmail -t")) {
print "error.\n";
warn "Error starting sendmail: $!";
}
else{
print MAIL "From: мыло\@от_хостера.ru\n";
print MAIL "To: чужое мыло\@хостер.ru\n";
print MAIL "Subject: test subject\n\n";
print MAIL "test mail message";
close(MAIL) || warn "Error closing mail: $!";
print "Mail sent.\n";
}
When I use this source code I get a error "sendmail: sendmail cannot be called directly from a shell with the current user id Mail sent."
Thank you.
ХОСТЕР ============================
Hello,
Shell is not supported on our free hosting. You are trying to use it - taht is why you get this error.
Thank you.
Я =================================
How I can send mail using Perl? Please example.
Thank you.
ХОСТЕР ============================
Shell, CGI and Pearl are not supported on our servers.
Thank you.
Я =================================
Thanks
← →
kernel © (2008-01-31 10:45) [15]Забыл все это в теги взять :) Очень не хватает редактирования форуму...
← →
palva © (2008-01-31 12:10) [16]
> kernel © (31.01.08 09:43) [10]
> Нет, так не получится. ... слишком много форм получится :)
Не пойму, какие здесь проблемы. Откуда получается новые формы?
У вас же уже, надеюсь, стоит что-то в ACTION формы. Пусть там стоит "thanks.pl", который принимает параметры отсылает письмо и потом выводит что нибудь клиенту типа "Благодарим за регистрацию". Ну и разделите это на две части. Первую часть с отправкой письма напишите на php, и поставьте в ACTION "thanks.php" А из "thanks.pl" выкиньте все связанное с отправкой. В конце "thanks.php" выдайте клиенту единственную строку - заголовок с переадресацией на "thanks.pl" и никаких новых форм не выдавайте.
← →
Style © (2008-01-31 12:23) [17]ну и желательно в thanks.php проверить
что бы
$_SERVER["HTTP_REFERER"] == "thanks.pl" ;)
← →
palva © (2008-01-31 12:34) [18]Ну реферер проверить конечно не мешает, а то ваш "thanks.php" заюзает какой-нибудь спаммер. Но боюсь, что одна такая проврка может не сработать.
← →
ketmar © (2008-01-31 12:38) [19]>[14] kernel ©(31.01.08 10:44)
>Shell, CGI and Pearl are not supported on our servers.
чо ниясно? %-)
тебе кривым английским сказали, что твои проблемы с CGI их волнуют так же, как демография среди динозавров. тут я тебе не просто посоветую, а настоятельно посоветую сменить хостера. на вменяемого не-free.
← →
kernel © (2008-01-31 13:22) [20]
> ketmar © (31.01.08 12:38) [19]
Это не выход из ситуации.
Теперь про формы: У форума есть полно функций работы с почтой, например: активация, восстановление пароля, посылка сообщения по почте участнику, посылка ветки форума в архиве и мн. др.... При использовании этих функций вызывается специальный скрипт, который читает настройки форума и отсылает что-либо кому-нибудь по почте. Мне нужно как-то подставить в "отсылочный" кусок скрипта вызов PHP скрипта с ф-ей mail(). Пока что смотрю в сторону system() для запуска PHP из Perl.
← →
palva © (2008-01-31 13:30) [21]Попробуй сначала сам system. system это то же самое, что и обратные кавычки. Если обратные кавычки не работали, то system тоже не должен.
Нужно искать перловский модуль отправки почты и ставить самому в собственный cgi-bin. Но тоже не факт, что будет работать. Хостер наверняка отключил сетевые возможности у perl.
← →
ketmar © (2008-01-31 13:34) [22]>Это не выход из ситуации.
вот то, что ты описываешь — это как раз и не выход, а ректальный доступ. выход — сменить хостера на вменяемого. стоит копейки.
← →
umbra © (2008-01-31 14:16) [23]если операционка - *никс, то можно штатным консольным клиентом отослать письмо из перла. Но оно будет в текстовом формате
`echo -ne "текст рисьма\n\x4" | mail -s "Activation" newuser@his.mail`
← →
ketmar © (2008-01-31 14:20) [24]нельзя. сказали же выше, что шела не дают.
← →
umbra © (2008-01-31 14:36) [25]неужели и модулей перловых доставить невозможно? место ж какое-то выделено.
← →
wicked © (2008-01-31 14:49) [26]судя по разговору с суппортом, хостинг бесплатный
поэтому нужно либо купить у них нормальный платный хостинг, либо поискать другой платный
← →
Style © (2008-01-31 14:53) [27]
> > вариант неверный: сделать отправку почты ручками при помощи
> > прямого общения по SMTP.
>
> Невозможно. Уже пробовал :(
А что не получилось с SMTP? Авторизоваться не удалось или чего? Или вообще в перле не получилось сокет создать?
Через чей почтарь пытался посылать? В принципе можно посылать и с другого сервера письмо. А MAIL FROM ставить нужный адрес.
← →
БарЛог © (2008-01-31 15:32) [28]> Shell, CGI and Pearl are not supported on our servers.
А как же ты тогда запускаешь скрипты??
← →
Style © (2008-01-31 15:58) [29]
> А как же ты тогда запускаешь скрипты??
скрипты как я понял запускаются. только shell не доступен
← →
kernel © (2008-01-31 16:37) [30]
> Style © (31.01.08 14:53) [27]
Пробовал SMTP с авторизацией (использовал модуль Net::SMTP) - вообще не работал. Кстати, MIME::Lite отправлял почту, но почему-то только на мыло, которое создано у этого же хостера.
> БарЛог © (31.01.08 15:32) [28]
Сам удивился, когда мне так сказали :)
← →
БарЛог © (2008-01-31 16:39) [31]> Сам удивился, когда мне так сказали :)
А хостинг, случайно, не Народ? :)
← →
kernel © (2008-01-31 16:43) [32]Хостинг случайно вполне нормальный, только это его единственная беда :)
← →
_xxx_ (2008-01-31 17:17) [33]kernel, еще вариант - скидывать из перла в отдельную папку/файл -> делать редирект на скрипт пхп (без каких либо параметров) -> этот скрипт читает папку и ищет файлы -> читает из файла текст и адрес -> отправляет письмо -> после отправки удаляет файл.
← →
БарЛог © (2008-01-31 18:24) [34]> делать редирект на скрипт пхп (без каких либо параметров)
> читает из файла текст и адрес -> отправляет письмо -> после отправки удаляет файл
А если его одновременно вызовет 100 человек?
← →
palva © (2008-01-31 18:32) [35]> А если его одновременно вызовет 100 человек?
Завести 100 файлов. Уж если автор собирается делать регистрацию и отслеживать авторизованный вход, то у него наверно реализованы сеансы. Пусть имя файла будет содержать идентификатор сеанса. У него же готовый перловский текст. Пусть посмотрит, как там это сделано.
← →
БарЛог © (2008-01-31 18:48) [36]> Завести 100 файлов
Коряво как-то, имхо
← →
kernel © (2008-01-31 20:07) [37]
> palva © (31.01.08 18:32) [35]
Мне же нужно будет передать из Perl в PHP скрипт как-то имя этого файла (если файл будет каждый раз разный)?!
← →
kernel © (2008-01-31 20:10) [38]Смотрите что я нашел: http://search.cpan.org/~rsod/IPC-Run-0.80/lib/IPC/Run.pm
:)
Может быть это поможет?
← →
kernel © (2008-01-31 21:27) [39]Сейчас смотрю в сторону http://perltraining.com.au/tips/2006-02-07.html
← →
Style © (2008-02-01 10:15) [40]
>
> Пробовал SMTP с авторизацией (использовал модуль Net::SMTP)
> - вообще не работал. Кстати, MIME::Lite отправлял почту,
> но почему-то только на мыло, которое создано у этого же
> хостера.
Я имел ввиду попробовать поработать с SMTP самому через
use IO::Socket::INET;
my $sock = IO::Socket::INET->new(PeerAddr => localhost:smtp(25));
причем не обязательно отправлять письмо через почтарь хостера .
можно завести ящичек где нить на mail.ru и отправлять письмо через него.
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.042 c